From 47ed46b52ff82440b73c6b4cfed38519b6e7dbab Mon Sep 17 00:00:00 2001 From: Christopher Olah Date: Tue, 14 Mar 2017 15:08:56 -0700 Subject: [PATCH 01/42] fix meta to be more compliant with scholar --- components/meta.js | 41 +++++++++++++++++++++++++++++++++-------- 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/components/meta.js b/components/meta.js index 4ef245a..1faa2c1 100644 --- a/components/meta.js +++ b/components/meta.js @@ -1,12 +1,13 @@ import favicon from './distill-favicon.base64'; +import escape from 'escape-html'; export default function(dom, data) { let head = dom.querySelector("head"); let appendHead = html => appendHtml(head, html); - function meta(name, content) { - if (content) - appendHead(` \n`); + function meta(name, content, force) { + if (content || force) + appendHead(` \n`); } appendHead(` @@ -55,20 +56,23 @@ export default function(dom, data) { \n`); meta("citation_title", data.title); - meta("citation_fulltext_html_url", data.url); + //meta("citation_fulltext_html_url", data.url); meta("citation_volume", data.volume); meta("citation_issue", data.issue); meta("citation_firstpage", data.doiSuffix? `e${data.doiSuffix}` : undefined); meta("citation_doi", data.doi); let journal = data.journal || {}; - meta("citation_journal_title", journal.name); - meta("citation_journal_abbrev", journal.nameAbbrev); + meta("citation_journal_title", journal.full_title || journal.title); + meta("citation_journal_abbrev", journal.abbrev_title); meta("citation_issn", journal.issn); meta("citation_publisher", journal.publisher); + meta("citation_fulltext_world_readable", "", true); if (data.publishedDate){ let zeroPad = (n) => { return n < 10 ? "0" + n : n; }; + meta("citation_online_date", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`); + // Should we do something different here? meta("citation_publication_date", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`); } @@ -95,10 +99,31 @@ function appendHtml(el, html) { } function citation_meta_content(ref){ + // Special test for arxiv var content = `citation_title=${ref.title};`; - ref.author.split(" and ").forEach(author => { - content += `citation_author=${author.trim()};`; + + let name_strings = ref.author.split(" and ").forEach(name => { + name = name.trim(); + if (name.indexOf(",") != -1){ + var last = name.split(",")[0].trim(); + var firsts = name.split(",")[1].trim(); + } else { + var last = name.split(" ").slice(-1)[0].trim(); + var firsts = name.split(" ").slice(0,-1).join(" "); + } + content += `citation_author=${firsts} ${last};`; }); + + if ("year" in ref) { + content += `citation_publication_date=${ref.year};`; + } + + var arxiv_id_search = /https?:\/\/arxiv\.org\/pdf\/([0-9]*\.[0-9]*)\.pdf/.exec(ref.url); + arxiv_id_search = arxiv_id_search || /https?:\/\/arxiv\.org\/abs\/([0-9]*\.[0-9]*)/.exec(ref.url); + if (arxiv_id_search && arxiv_id_search[1]){ + content += `citation_arxiv_id=${arxiv_id_search[1]};`; + return content; + } if ("journal" in ref){ content += `citation_journal_title=${ref.journal};`; } From b5d5e2a2f1b3e115d8edb38421e4b0da56d97eb3 Mon Sep 17 00:00:00 2001 From: Christopher Olah Date: Tue, 14 Mar 2017 15:09:35 -0700 Subject: [PATCH 02/42] add new escape-html --- package.json | 1 + yarn.lock | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/package.json b/package.json index 6d9ac03..756e162 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,7 @@ "dependencies": { "commander": "^2.9.0", "d3-time-format": "^2.0.3", + "html-escape": "^2.0.0", "mustache": "^2.3.0" } } diff --git a/yarn.lock b/yarn.lock index a86e509..19c12fc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -632,6 +632,10 @@ html-encoding-sniffer@^1.0.1: dependencies: whatwg-encoding "^1.0.1" +html-escape@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/html-escape/-/html-escape-2.0.0.tgz#60c8ddd465edf0cae02af9e99fdf5f883b09be49" + http-signature@~1.1.0: version "1.1.1" resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf" From 7698d45885314faacc4a3ce7cc2bdc63249b874d Mon Sep 17 00:00:00 2001 From: Christopher Olah Date: Tue, 14 Mar 2017 15:09:49 -0700 Subject: [PATCH 03/42] new dist --- dist/template.js | 117 ++++++++++++++++++++++++++++++++++++++++--- dist/template.js.map | 2 +- 2 files changed, 110 insertions(+), 9 deletions(-) diff --git a/dist/template.js b/dist/template.js index 8a84ad7..d2df510 100644 --- a/dist/template.js +++ b/dist/template.js @@ -5138,13 +5138,90 @@ var expandData = function(dom, data) { var favicon = "iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA99JREFUeNrsG4t1ozDMzQSM4A2ODUonKBucN2hugtIJ6E1AboLcBiQTkJsANiAb9OCd/OpzMWBJBl5TvaeXPiiyJetry0J8wW3D3QpjRh3GjneXDq+fSQA9s2mH9x3KDhN4foJfCb8N/Jrv+2fnDn8vLRQOplWHVYdvHZYdZsBcZP1vBmh/n8DzEmhUQDPaOuP9pFuY+JwJHwHnCLQE2tnWBGEyXozY9xCUgHMhhjE2I4heVWtgIkZ83wL6Qgxj1obfWBxymPwe+b00BCCRNPbwfb60yleAkkBHGT5AEehIYz7eJrFDMF9CvH4wwhcGHiHMneFvLDQwlwvMLQq58trRcYBWfYn0A0OgHWQUSu25mE+BnoYKnnEJoeIWAifzOv7vLWd2ZKRfWAIme3tOiUaQ3UnLkb0xj1FxRIeEGKaGIHOs9nEgLaaA9i0JRYo1Ic67wJW86KSKE/ZAM8KuVMk8ITVhmxUxJ3Cl2xlm9Vtkeju1+mpCQNxaEGNCY8bs9X2YqwNoQeGjBWut/ma0QAWy/TqAsHx9wSya3I5IRxOfTC+leG+kA/4vSeEcGBtNUN6byhu3+keEZCQJUNh8MAO7HL6H8pQLnsW/Hd4T4lv93TPjfM7A46iEEqbB5EDOvwYNW6tGNZzT/o+CZ6sqZ6wUtR/wf7mi/VL8iNciT6rHih48Y55b4nKCHJCCzb4y0nwFmin3ZEMIoLfZF8F7nncFmvnWBaBj7CGAYA/WGJsUwHdYqVDwAmNsUgAx4CGgAA7GOOxADYOFWOaIKifuVYzmOpREqA21Mo7aPsgiY1PhOMAmxtR+AUbYH3Id2wc0SAFIQTsn9IUGWR8k9jx3vtXSiAacFxTAGakBk9UudkNECd6jLe+6HrshshvIuC6IlLMRy7er+JpcKma24SlE4cFZSZJDGVVrsNvitQhQrDhW0jfiOLfFd47C42eHT56D/BK0To+58Ahj+cAT8HT1UWlfLZCCd/uKawzU0Rh2EyIX/Icqth3niG8ybNroezwe6khdCNxRN+l4XGdOLVLlOOt2hTRJlr1ETIuMAltVTMz70mJrkdGAaZLSmnBEqmAE32JCMmuTlCnRgsBENtOUpHhvvsYIL0ibnBkaC6QvKcR7738GKp0AKnim7xgUSNv1bpS8QwhBt8r+EP47v/oyRK/S34yJ9nT+AN0Tkm4OdB9E4BsmXM3SnMlRFUrtp6IDpV2eKzdYvF3etm3KhQksbOLChGkSmcBdmcEwvqkrMy5BzL00NZeu3qPYJOOuCc+5NjcWKXQxFvTa3NoXJ4d8in7fiAUuTt781dkvuHX4K8AA2Usy7yNKLy0AAAAASUVORK5CYII=\n"; +/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */ + +/** + * Module variables. + * @private + */ + +var matchHtmlRegExp = /["'&<>]/; + +/** + * Module exports. + * @public + */ + +var index$1 = escapeHtml; + +/** + * Escape special characters in the given string of html. + * + * @param {string} string The string to escape for inserting into HTML + * @return {string} + * @public + */ + +function escapeHtml(string) { + var str = '' + string; + var match = matchHtmlRegExp.exec(str); + + if (!match) { + return str; + } + + var escape; + var html = ''; + var index = 0; + var lastIndex = 0; + + for (index = match.index; index < str.length; index++) { + switch (str.charCodeAt(index)) { + case 34: // " + escape = '"'; + break; + case 38: // & + escape = '&'; + break; + case 39: // ' + escape = '''; + break; + case 60: // < + escape = '<'; + break; + case 62: // > + escape = '>'; + break; + default: + continue; + } + + if (lastIndex !== index) { + html += str.substring(lastIndex, index); + } + + lastIndex = index + 1; + html += escape; + } + + return lastIndex !== index + ? html + str.substring(lastIndex, index) + : html; +} + var meta = function(dom, data) { var head = dom.querySelector("head"); var appendHead = function (html) { return appendHtml(head, html); }; - function meta(name, content) { - if (content) - { appendHead((" \n")); } + function meta(name, content, force) { + if (content || force) + { appendHead((" \n")); } } appendHead(("\n \n \n \n \n " + (data.title) + "\n ")); @@ -5163,20 +5240,23 @@ var meta = function(dom, data) { appendHead("\n \n"); meta("citation_title", data.title); - meta("citation_fulltext_html_url", data.url); + //meta("citation_fulltext_html_url", data.url); meta("citation_volume", data.volume); meta("citation_issue", data.issue); meta("citation_firstpage", data.doiSuffix? ("e" + (data.doiSuffix)) : undefined); meta("citation_doi", data.doi); var journal = data.journal || {}; - meta("citation_journal_title", journal.name); - meta("citation_journal_abbrev", journal.nameAbbrev); + meta("citation_journal_title", journal.full_title || journal.title); + meta("citation_journal_abbrev", journal.abbrev_title); meta("citation_issn", journal.issn); meta("citation_publisher", journal.publisher); + meta("citation_fulltext_world_readable", "", true); if (data.publishedDate){ var zeroPad = function (n) { return n < 10 ? "0" + n : n; }; + meta("citation_online_date", ((data.publishedYear) + "/" + (data.publishedMonthPadded) + "/" + (data.publishedDayPadded))); + // Should we do something different here? meta("citation_publication_date", ((data.publishedYear) + "/" + (data.publishedMonthPadded) + "/" + (data.publishedDayPadded))); } @@ -5203,10 +5283,31 @@ function appendHtml(el, html) { } function citation_meta_content(ref){ + // Special test for arxiv var content = "citation_title=" + (ref.title) + ";"; - ref.author.split(" and ").forEach(function (author) { - content += "citation_author=" + (author.trim()) + ";"; + + var name_strings = ref.author.split(" and ").forEach(function (name) { + name = name.trim(); + if (name.indexOf(",") != -1){ + var last = name.split(",")[0].trim(); + var firsts = name.split(",")[1].trim(); + } else { + var last = name.split(" ").slice(-1)[0].trim(); + var firsts = name.split(" ").slice(0,-1).join(" "); + } + content += "citation_author=" + firsts + " " + last + ";"; }); + + if ("year" in ref) { + content += "citation_publication_date=" + (ref.year) + ";"; + } + + var arxiv_id_search = /https?:\/\/arxiv\.org\/pdf\/([0-9]*\.[0-9]*)\.pdf/.exec(ref.url); + arxiv_id_search = arxiv_id_search || /https?:\/\/arxiv\.org\/abs\/([0-9]*\.[0-9]*)/.exec(ref.url); + if (arxiv_id_search && arxiv_id_search[1]){ + content += "citation_arxiv_id=" + (arxiv_id_search[1]) + ";"; + return content; + } if ("journal" in ref){ content += "citation_journal_title=" + (ref.journal) + ";"; } diff --git a/dist/template.js.map b/dist/template.js.map index 816b94d..ae49295 100644 --- a/dist/template.js.map +++ b/dist/template.js.map @@ -1 +1 @@ -{"version":3,"file":null,"sources":["../components/html.js","../components/styles.js","../node_modules/js-yaml/lib/js-yaml/common.js","../node_modules/js-yaml/lib/js-yaml/exception.js","../node_modules/js-yaml/lib/js-yaml/mark.js","../node_modules/js-yaml/lib/js-yaml/type.js","../node_modules/js-yaml/lib/js-yaml/schema.js","../node_modules/js-yaml/lib/js-yaml/type/str.js","../node_modules/js-yaml/lib/js-yaml/type/seq.js","../node_modules/js-yaml/lib/js-yaml/type/map.js","../node_modules/js-yaml/lib/js-yaml/schema/failsafe.js","../node_modules/js-yaml/lib/js-yaml/type/null.js","../node_modules/js-yaml/lib/js-yaml/type/bool.js","../node_modules/js-yaml/lib/js-yaml/type/int.js","../node_modules/js-yaml/lib/js-yaml/type/float.js","../node_modules/js-yaml/lib/js-yaml/schema/json.js","../node_modules/js-yaml/lib/js-yaml/schema/core.js","../node_modules/js-yaml/lib/js-yaml/type/timestamp.js","../node_modules/js-yaml/lib/js-yaml/type/merge.js","../node_modules/js-yaml/lib/js-yaml/type/binary.js","../node_modules/js-yaml/lib/js-yaml/type/omap.js","../node_modules/js-yaml/lib/js-yaml/type/pairs.js","../node_modules/js-yaml/lib/js-yaml/type/set.js","../node_modules/js-yaml/lib/js-yaml/schema/default_safe.js","../node_modules/js-yaml/lib/js-yaml/type/js/undefined.js","../node_modules/js-yaml/lib/js-yaml/type/js/regexp.js","../node_modules/js-yaml/lib/js-yaml/type/js/function.js","../node_modules/js-yaml/lib/js-yaml/schema/default_full.js","../node_modules/js-yaml/lib/js-yaml/loader.js","../node_modules/js-yaml/lib/js-yaml/dumper.js","../node_modules/js-yaml/lib/js-yaml.js","../node_modules/js-yaml/index.js","../components/front-matter.js","../node_modules/bibtex-parse-js/bibtexParse.js","../components/bibliography.js","../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/utcMinute.js","../node_modules/d3-time/src/utcHour.js","../node_modules/d3-time/src/utcDay.js","../node_modules/d3-time/src/utcWeek.js","../node_modules/d3-time/src/utcMonth.js","../node_modules/d3-time/src/utcYear.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-time-format/src/isoFormat.js","../node_modules/d3-time-format/src/isoParse.js","../components/expand-data.js","../components/meta.js","../components/banner.js","../components/header.js","../node_modules/mustache/mustache.js","../components/byline.js","../components/appendix.js","../components/footer.js","../components/citation.js","../components/footnote.js","../node_modules/marked/lib/marked.js","../components/markdown.js","../node_modules/prismjs/prism.js","../components/code.js","../components/typeset.js","../components/hover-box-include.js","../components/generate-crossref.js","../index.js"],"sourcesContent":["export default function(dom) {\n if (!dom.querySelector(\"html\").getAttribute(\"lang\")) {\n dom.querySelector(\"html\").setAttribute(\"lang\", \"en\")\n }\n\n let head = dom.querySelector(\"head\");\n\n if (!dom.querySelector(\"meta[charset]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"charset\", \"utf-8\");\n head.appendChild(meta);\n }\n if (!dom.querySelector(\"meta[name=viewport]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"name\", \"viewport\");\n meta.setAttribute(\"content\", \"width=device-width, initial-scale=1\");\n head.appendChild(meta);\n }\n}\n","import base from './styles-base.css';\nimport layout from './styles-layout.css';\nimport article from './styles-article.css';\nimport code from './styles-code.css';\nimport print from './styles-print.css';\n\nexport default function(dom) {\n let s = dom.createElement(\"style\");\n s.textContent = base + layout + article + code + print;\n dom.querySelector(\"head\").appendChild(s);\n}\n","'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n var result = this.name + ': ';\n\n result += this.reason || '(unknown reason)';\n\n if (!compact && this.mark) {\n result += ' ' + this.mark.toString();\n }\n\n return result;\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n\nvar common = require('./common');\n\n\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\n\n\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head, start, tail, end, snippet;\n\n if (!this.buffer) return null;\n\n indent = indent || 4;\n maxLength = maxLength || 75;\n\n head = '';\n start = this.position;\n\n while (start > 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n\n tail = '';\n end = this.position;\n\n while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n\n snippet = this.buffer.slice(start, end);\n\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' +\n common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\n\nMark.prototype.toString = function toString(compact) {\n var snippet, where = '';\n\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n if (!compact) {\n snippet = this.getSnippet();\n\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n\n return where;\n};\n\n\nmodule.exports = Mark;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name, result) {\n var exclude = [];\n\n schema.include.forEach(function (includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n\n schema[name].forEach(function (currentType) {\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n exclude.push(previousIndex);\n }\n });\n\n result.push(currentType);\n });\n\n return result.filter(function (type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {}\n }, index, length;\n\n function collectType(type) {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n\n this.implicit.forEach(function (type) {\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n });\n\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\n\nSchema.DEFAULT = null;\n\n\nSchema.create = function createSchema() {\n var schemas, types;\n\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n\n if (!schemas.every(function (schema) { return schema instanceof Schema; })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n\n if (!types.every(function (type) { return type instanceof Type; })) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n return new Schema({\n include: schemas,\n explicit: types\n });\n};\n\n\nmodule.exports = Schema;\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 8\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 10 (except 0) or base 60\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch === ':') break;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n if (!hasDigits) return false;\n\n // if !base60 - done;\n if (ch !== ':') return true;\n\n // base60 almost not used, no needs to optimize\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch, base, digits = [];\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value, 16);\n return sign * parseInt(value, 8);\n }\n\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseInt(v, 10));\n });\n\n value = 0;\n base = 1;\n\n digits.forEach(function (d) {\n value += (d * base);\n base *= 60;\n });\n\n return sign * value;\n\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (object) { return '0b' + object.toString(2); },\n octal: function (object) { return '0' + object.toString(8); },\n decimal: function (object) { return object.toString(10); },\n hexadecimal: function (object) { return '0x' + object.toString(16).toUpperCase(); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n '^(?:[-+]?(?:[0-9][0-9_]*)\\\\.[0-9_]*(?:[eE][-+][0-9]+)?' +\n '|\\\\.[0-9_]+(?:[eE][-+][0-9]+)?' +\n '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' +\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data)) return false;\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign, base, digits;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n\n } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n\n value = 0.0;\n base = 1;\n\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n\n return sign * value;\n\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./failsafe')\n ],\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./json')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\nvar NodeBuffer;\n\ntry {\n // A trick for browserified version, to not include `Buffer` shim\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n // Wrap into Buffer for NodeJS and leave Array for browser\n if (NodeBuffer) return new NodeBuffer(result);\n\n return result;\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./core')\n ],\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n return true;\n}\n\nfunction constructJavascriptUndefined() {\n /*eslint-disable no-undefined*/\n return undefined;\n}\n\nfunction representJavascriptUndefined() {\n return '';\n}\n\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n if (data === null) return false;\n if (data.length === 0) return false;\n\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // if regexp starts with '/' it can have modifiers and must be properly closed\n // `/foo/gim` - modifiers tail can be maximum 3 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n\n if (modifiers.length > 3) return false;\n // if expression starts with /, is should be properly terminated\n if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n }\n\n return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // `/foo/gim` - tail can be maximum 4 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n\n return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object /*, style*/) {\n var result = '/' + object.source + '/';\n\n if (object.global) result += 'g';\n if (object.multiline) result += 'm';\n if (object.ignoreCase) result += 'i';\n\n return result;\n}\n\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n","'use strict';\n\nvar esprima;\n\n// Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n// If not found - try to fallback to window.esprima. If not\n// found too - then fail to parse.\n//\ntry {\n // workaround to exclude package from browserify list.\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n /*global window */\n if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n if (data === null) return false;\n\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true });\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction constructJavascriptFunction(data) {\n /*jslint evil:true*/\n\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true }),\n params = [],\n body;\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n throw new Error('Failed to resolve function');\n }\n\n ast.body[0].expression.params.forEach(function (param) {\n params.push(param.name);\n });\n\n body = ast.body[0].expression.body.range;\n\n // Esprima's ranges include the first '{' and the last '}' characters on\n // function expressions. So cut them out.\n /*eslint-disable no-new-func*/\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n}\n\nfunction representJavascriptFunction(object /*, style*/) {\n return object.toString();\n}\n\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n","// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [\n require('./default_safe')\n ],\n explicit: [\n require('../type/js/undefined'),\n require('../type/js/regexp'),\n require('../type/js/function')\n ]\n});\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00);\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n return new YAMLException(\n message,\n new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length;\n _position < _length;\n _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode) {\n var index, quantity;\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n throwError(state, 'duplicated mapping key');\n }\n _result[keyNode] = valueNode;\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else {\n break; // Reading is done. Go to the epilogue.\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if (state.lineIndent > nodeIndent && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!state.anchorMap.hasOwnProperty(alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag !== null && state.tag !== '!') {\n if (state.tag === '?') {\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length;\n typeIndex < typeQuantity;\n typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only assigned to plain scalars. So, it isn't\n // needed to check for 'kind' conformity.\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = {};\n state.anchorMap = {};\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n var documents = loadDocuments(input, options), index, length;\n\n for (index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nfunction safeLoadAll(input, output, options) {\n loadAll(input, output, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nfunction safeLoad(input, options) {\n return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// Simplified test for values allowed after the first character in plain style.\nfunction isPlainSafe(c) {\n // Uses a subset of nb-char - c-flow-indicator - \":\" - \"#\"\n // where nb-char ::= c-printable - b-char - c-byte-order-mark.\n return isPrintable(c) && c !== 0xFEFF\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // - \":\" - \"#\"\n && c !== CHAR_COLON\n && c !== CHAR_SHARP;\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n return isPrintable(c) && c !== 0xFEFF\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {\n var i;\n var char;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(string.charCodeAt(0))\n && !isWhitespace(string.charCodeAt(string.length - 1));\n\n if (singleLineOnly) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n return plain && !testAmbiguousType(string)\n ? STYLE_PLAIN : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (string[0] === ' ' && indentPerLevel > 9) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey) {\n state.dump = (function () {\n if (string.length === 0) {\n return \"''\";\n }\n if (!state.noCompatMode &&\n DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n return \"'\" + string + \"'\";\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = (string[0] === ' ') ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char;\n var escapeSeq;\n\n for (var i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n result += !escapeSeq && isPrintable(char)\n ? string[i]\n : escapeSeq || encodeHex(char);\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level, object[index], false, false)) {\n if (index !== 0) _result += ', ';\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || index !== 0) {\n _result += generateNextLine(state, level);\n }\n _result += '- ' + state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (index !== 0) pairBuffer += ', ';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + ': ';\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || index !== 0) {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n state.tag = explicit ? type.tag : '?';\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n writeBlockSequence(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey);\n }\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n state.dump = '!<' + state.tag + '> ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n if (writeNode(state, 0, input, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nfunction safeDump(input, options) {\n return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n","'use strict';\n\n\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\n\n\nfunction deprecated(name) {\n return function () {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\n\n\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\n\n// Deprecated schema names from JS-YAML 2.0.x\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\n\n// Deprecated functions from JS-YAML 1.x.x\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","'use strict';\n\n\nvar yaml = require('./lib/js-yaml.js');\n\n\nmodule.exports = yaml;\n","import ymlParse from \"js-yaml\";\n\nexport default function(dom, data) {\n let localData = {};\n let el = dom.querySelector('script[type=\"text/front-matter\"]');\n if (el) {\n let text = el.textContent;\n localData = ymlParse.safeLoad(text);\n }\n\n data.title = localData.title ? localData.title : \"Untitled\";\n data.description = localData.description ? localData.description : \"No description.\";\n\n data.authors = localData.authors ? localData.authors : [];\n\n data.authors = data.authors.map((author, i) =>{\n let a = {};\n let name = Object.keys(author)[0];\n if ((typeof author) === \"string\") {\n name = author;\n } else {\n a.personalURL = author[name];\n }\n let names = name.split(\" \");\n a.name = name;\n a.firstName = names.slice(0, names.length - 1).join(\" \");\n a.lastName = names[names.length -1];\n if(localData.affiliations[i]) {\n let affiliation = Object.keys(localData.affiliations[i])[0];\n if ((typeof localData.affiliations[i]) === \"string\") {\n affiliation = localData.affiliations[i]\n } else {\n a.affiliationURL = localData.affiliations[i][affiliation];\n }\n a.affiliation = affiliation;\n }\n return a;\n });\n \n\n}\n","/* start bibtexParse 0.0.22 */\n\n//Original work by Henrik Muehe (c) 2010\n//\n//CommonJS port by Mikola Lysenko 2013\n//\n//Port to Browser lib by ORCID / RCPETERS\n//\n//Issues:\n//no comment handling within strings\n//no string concatenation\n//no variable values yet\n//Grammar implemented here:\n//bibtex -> (string | preamble | comment | entry)*;\n//string -> '@STRING' '{' key_equals_value '}';\n//preamble -> '@PREAMBLE' '{' value '}';\n//comment -> '@COMMENT' '{' value '}';\n//entry -> '@' key '{' key ',' key_value_list '}';\n//key_value_list -> key_equals_value (',' key_equals_value)*;\n//key_equals_value -> key '=' value;\n//value -> value_quotes | value_braces | key;\n//value_quotes -> '\"' .*? '\"'; // not quite\n//value_braces -> '{' .*? '\"'; // not quite\n(function(exports) {\n\n function BibtexParser() {\n \n this.months = [\"jan\", \"feb\", \"mar\", \"apr\", \"may\", \"jun\", \"jul\", \"aug\", \"sep\", \"oct\", \"nov\", \"dec\"];\n this.notKey = [',','{','}',' ','='];\n this.pos = 0;\n this.input = \"\";\n this.entries = new Array();\n\n this.currentEntry = \"\";\n\n this.setInput = function(t) {\n this.input = t;\n };\n\n this.getEntries = function() {\n return this.entries;\n };\n\n this.isWhitespace = function(s) {\n return (s == ' ' || s == '\\r' || s == '\\t' || s == '\\n');\n };\n\n this.match = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n this.pos += s.length;\n } else {\n throw \"Token mismatch, expected \" + s + \", found \"\n + this.input.substring(this.pos);\n };\n this.skipWhitespace(canCommentOut);\n };\n\n this.tryMatch = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n return true;\n } else {\n return false;\n };\n this.skipWhitespace(canCommentOut);\n };\n\n /* when search for a match all text can be ignored, not just white space */\n this.matchAt = function() {\n while (this.input.length > this.pos && this.input[this.pos] != '@') {\n this.pos++;\n };\n\n if (this.input[this.pos] == '@') {\n return true;\n };\n return false;\n };\n\n this.skipWhitespace = function(canCommentOut) {\n while (this.isWhitespace(this.input[this.pos])) {\n this.pos++;\n };\n if (this.input[this.pos] == \"%\" && canCommentOut == true) {\n while (this.input[this.pos] != \"\\n\") {\n this.pos++;\n };\n this.skipWhitespace(canCommentOut);\n };\n };\n\n this.value_braces = function() {\n var bracecount = 0;\n this.match(\"{\", false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '}') {\n if (bracecount > 0) {\n bracecount--;\n } else {\n var end = this.pos;\n this.match(\"}\", false);\n return this.input.substring(start, end);\n };\n } else if (this.input[this.pos] == '{') {\n bracecount++;\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value\";\n };\n };\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.value_comment = function() {\n var str = '';\n var brcktCnt = 0;\n while (!(this.tryMatch(\"}\", false) && brcktCnt == 0)) {\n str = str + this.input[this.pos];\n if (this.input[this.pos] == '{')\n brcktCnt++;\n if (this.input[this.pos] == '}')\n brcktCnt--;\n if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n this.pos++;\n };\n return str;\n };\n\n this.value_quotes = function() {\n this.match('\"', false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '\"') {\n var end = this.pos;\n this.match('\"', false);\n return this.input.substring(start, end);\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n }\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.single_value = function() {\n var start = this.pos;\n if (this.tryMatch(\"{\")) {\n return this.value_braces();\n } else if (this.tryMatch('\"')) {\n return this.value_quotes();\n } else {\n var k = this.key();\n if (k.match(\"^[0-9]+$\"))\n return k;\n else if (this.months.indexOf(k.toLowerCase()) >= 0)\n return k.toLowerCase();\n else\n throw \"Value expected:\" + this.input.substring(start) + ' for key: ' + k;\n \n };\n };\n\n this.value = function() {\n var values = [];\n values.push(this.single_value());\n while (this.tryMatch(\"#\")) {\n this.match(\"#\");\n values.push(this.single_value());\n };\n return values.join(\"\");\n };\n\n this.key = function() {\n var start = this.pos;\n while (true) {\n if (this.pos >= this.input.length) {\n throw \"Runaway key\";\n };\n // а-яА-Я is Cyrillic\n //console.log(this.input[this.pos]);\n if (this.notKey.indexOf(this.input[this.pos]) >= 0) {\n return this.input.substring(start, this.pos);\n } else {\n this.pos++;\n \n };\n };\n };\n\n this.key_equals_value = function() {\n var key = this.key();\n if (this.tryMatch(\"=\")) {\n this.match(\"=\");\n var val = this.value();\n return [ key, val ];\n } else {\n throw \"... = value expected, equals sign missing:\"\n + this.input.substring(this.pos);\n };\n };\n\n this.key_value_list = function() {\n var kv = this.key_equals_value();\n this.currentEntry['entryTags'] = {};\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n while (this.tryMatch(\",\")) {\n this.match(\",\");\n // fixes problems with commas at the end of a list\n if (this.tryMatch(\"}\")) {\n break;\n }\n ;\n kv = this.key_equals_value();\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n };\n };\n\n this.entry_body = function(d) {\n this.currentEntry = {};\n this.currentEntry['citationKey'] = this.key();\n this.currentEntry['entryType'] = d.substring(1);\n this.match(\",\");\n this.key_value_list();\n this.entries.push(this.currentEntry);\n };\n\n this.directive = function() {\n this.match(\"@\");\n return \"@\" + this.key();\n };\n\n this.preamble = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'PREAMBLE';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.comment = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'COMMENT';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.entry = function(d) {\n this.entry_body(d);\n };\n\n this.bibtex = function() {\n while (this.matchAt()) {\n var d = this.directive();\n this.match(\"{\");\n if (d == \"@STRING\") {\n this.string();\n } else if (d == \"@PREAMBLE\") {\n this.preamble();\n } else if (d == \"@COMMENT\") {\n this.comment();\n } else {\n this.entry(d);\n }\n this.match(\"}\");\n };\n };\n };\n \n exports.toJSON = function(bibtex) {\n var b = new BibtexParser();\n b.setInput(bibtex);\n b.bibtex();\n return b.entries;\n };\n\n /* added during hackathon don't hate on me */\n exports.toBibtex = function(json) {\n var out = '';\n for ( var i in json) {\n out += \"@\" + json[i].entryType;\n out += '{';\n if (json[i].citationKey)\n out += json[i].citationKey + ', ';\n if (json[i].entry)\n out += json[i].entry ;\n if (json[i].entryTags) {\n var tags = '';\n for (var jdx in json[i].entryTags) {\n if (tags.length != 0)\n tags += ', ';\n tags += jdx + '= {' + json[i].entryTags[jdx] + '}';\n }\n out += tags;\n }\n out += '}\\n\\n';\n }\n return out;\n \n };\n\n})(typeof exports === 'undefined' ? this['bibtexParse'] = {} : exports);\n\n/* end bibtexParse */\n","import bibtexParse from \"bibtex-parse-js\";\n\nexport default function(dom, data) {\n let el = dom.querySelector('script[type=\"text/bibliography\"]');\n let citations = [];\n let bibliography = {};\n //TODO If we don't have a local element, make a request for the document.\n if (el) {\n let rawBib = el.textContent;\n let parsed = bibtexParse.toJSON(rawBib);\n if(parsed) {\n parsed.forEach(e => {\n for (var k in e.entryTags){\n var val = e.entryTags[k];\n val = val.replace(/[\\t\\n ]+/g, \" \");\n val = val.replace(/{\\\\[\"^`\\.'acu~Hvs]( )?([a-zA-Z])}/g,\n (full, x, char) => char);\n val = val.replace(/{\\\\([a-zA-Z])}/g,\n (full, char) => char);\n e.entryTags[k] = val;\n }\n bibliography[e.citationKey] = e.entryTags;\n bibliography[e.citationKey].type = e.entryType;\n });\n }\n\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach(el => {\n let key = el.getAttribute(\"key\");\n if (key) {\n let citationKeys = key.split(\",\");\n citationKeys.forEach(key => {\n if (citations.indexOf(key) == -1){\n citations.push(key);\n if (!(key in bibliography)){\n console.warn(\"No bibliography entry found for: \" + key);\n }\n }\n });\n }\n });\n }\n data.bibliography = bibliography;\n data.citations = citations;\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(new Date(+start)); while (offseti(start, step), floori(start), start < stop)\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) while (--step >= 0) while (offseti(date, 1), !test(date)) {} // eslint-disable-line no-empty\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(Math.floor(date / durationSecond) * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(Math.floor(date / durationMinute) * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute} from \"./duration\";\n\nvar hour = interval(function(date) {\n var offset = date.getTimezoneOffset() * durationMinute % durationHour;\n if (offset < 0) offset += durationHour;\n date.setTime(Math.floor((+date - offset) / durationHour) * durationHour + offset);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval\";\nimport {durationWeek} from \"./duration\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {timeDay, timeSunday, timeMonday, timeYear, utcDay, utcSunday, utcMonday, utcYear} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"S\": formatSeconds,\n \"U\": formatWeekNumberSunday,\n \"w\": formatWeekdayNumber,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"S\": formatUTCSeconds,\n \"U\": formatUTCWeekNumberSunday,\n \"w\": formatUTCWeekdayNumber,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"S\": parseSeconds,\n \"U\": parseWeekNumberSunday,\n \"w\": parseWeekdayNumber,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0);\n if (i != string.length) return null;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n var day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?:\\:?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekdayNumber(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekdayNumber(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {timeFormat} from \"d3-time-format\";\n\nexport default function(dom, data) {\n\n data.authors = data.authors || [];\n\n // paths\n data.url = \"http://distill.pub/\" + data.distillPath;\n data.githubUrl = \"https://github.com/\" + data.githubPath;\n\n // Homepage\n //data.homepage = !post.noHomepage;\n data.journal = data.journal || {};\n\n // Dates\n if (data.publishedDate){//} && data.journal) {\n data.volume = data.publishedDate.getFullYear() - 2015;\n data.issue = data.publishedDate.getMonth() + 1;\n }\n\n data.publishedDate = data.publishedDate ? data.publishedDate : new Date(\"Invalid\");\n data.updatedDate = data.updatedDate ? data.updatedDate : new Date(\"Invalid\");\n\n data.publishedDateRFC\n let RFC = timeFormat(\"%a, %d %b %Y %H:%M:%S %Z\");\n let months = [\"Jan\", \"Feb\", \"March\", \"April\", \"May\", \"June\", \"July\", \"Aug\", \"Sept\", \"Oct\", \"Nov\", \"Dec\"];\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n data.publishedDateRFC = RFC(data.publishedDate);\n data.publishedYear = data.publishedDate.getFullYear();\n data.publishedMonth = months[data.publishedDate.getMonth()];\n data.publishedDay = data.publishedDate.getDate();\n data.publishedMonthPadded = zeroPad(data.publishedDate.getMonth() + 1);\n data.publishedDayPadded = zeroPad(data.publishedDate.getDate());\n data.updatedDateRFC = RFC(data.updatedDate);\n\n if (data.authors.length > 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \", et al.\";\n } else if (data.authors.length === 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \" & \" + data.authors[1].lastName;\n } else if (data.authors.length === 1) {\n data.concatenatedAuthors = data.authors[0].lastName\n }\n\n data.bibtexAuthors = data.authors.map(function(author){\n return author.lastName + \", \" + author.firstName;\n }).join(\" and \");\n\n data.slug = data.authors.length ? data.authors[0].lastName.toLowerCase() + data.publishedYear + data.title.split(\" \")[0].toLowerCase() : \"Untitled\";\n\n}\n","import favicon from './distill-favicon.base64';\n\nexport default function(dom, data) {\n let head = dom.querySelector(\"head\");\n let appendHead = html => appendHtml(head, html);\n\n function meta(name, content) {\n if (content)\n appendHead(` \\n`);\n }\n\n appendHead(`\n \n \n \n \n ${data.title}\n `);\n\n appendHead(`\n \n \n \n `);\n data.authors.forEach((a) => {\n appendHtml(head, `\n `)\n });\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n // if this is a proprer article, generate Google Scholar meta data\n if (data.doiSuffix){\n appendHead(`\n \\n`);\n\n meta(\"citation_title\", data.title);\n meta(\"citation_fulltext_html_url\", data.url);\n meta(\"citation_volume\", data.volume);\n meta(\"citation_issue\", data.issue);\n meta(\"citation_firstpage\", data.doiSuffix? `e${data.doiSuffix}` : undefined);\n meta(\"citation_doi\", data.doi);\n\n let journal = data.journal || {};\n meta(\"citation_journal_title\", journal.name);\n meta(\"citation_journal_abbrev\", journal.nameAbbrev);\n meta(\"citation_issn\", journal.issn);\n meta(\"citation_publisher\", journal.publisher);\n\n if (data.publishedDate){\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n meta(\"citation_publication_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n }\n\n (data.authors || []).forEach((a) => {\n meta(\"citation_author\", `${a.lastName}, ${a.firstName}`);\n meta(\"citation_author_institution\", a.affiliation);\n });\n\n if (data.citations) {\n data.citations.forEach(key => {\n let d = data.bibliography[key];\n if(!d) {\n console.warn(\"No bibliography data fround for \" + key)\n } else {\n meta(\"citation_reference\", citation_meta_content(data.bibliography[key]) )\n };\n });\n }\n }\n}\n\nfunction appendHtml(el, html) {\n el.innerHTML += html;\n}\n\nfunction citation_meta_content(ref){\n var content = `citation_title=${ref.title};`;\n ref.author.split(\" and \").forEach(author => {\n content += `citation_author=${author.trim()};`;\n });\n if (\"journal\" in ref){\n content += `citation_journal_title=${ref.journal};`;\n }\n if (\"volume\" in ref) {\n content += `citation_volume=${ref.volume};`;\n }\n if (\"issue\" in ref || \"number\" in ref){\n content += `citation_number=${ref.issue || ref.number};`;\n }\n /*content += `citation_first_page=${};`;\n content += `citation_publication_date=${};`;*/\n return content;\n}\n","const html = `\n\n
This article is a draft, awaiting review for publication in Distill
\n`;\n\nexport default function(dom, data) {\n let banner = dom.createElement(\"dt-banner\");\n banner.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(banner, b.firstChild);\n banner.addEventListener(\"click\", function() {\n banner.style.display = \"none\";\n });\n}\n","import logo from \"./distill-logo.svg\";\n\nconst html = `\n\n\n\n`\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-header\");\n if(el) {\n el.innerHTML = html;\n } else {\n let header = dom.createElement(\"dt-header\");\n header.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(header, b.firstChild);\n }\n}\n","/*!\n * mustache.js - Logic-less {{mustache}} templates with JavaScript\n * http://github.com/janl/mustache.js\n */\n\n/*global define: false Mustache: true*/\n\n(function defineMustache (global, factory) {\n if (typeof exports === 'object' && exports && typeof exports.nodeName !== 'string') {\n factory(exports); // CommonJS\n } else if (typeof define === 'function' && define.amd) {\n define(['exports'], factory); // AMD\n } else {\n global.Mustache = {};\n factory(global.Mustache); // script, wsh, asp\n }\n}(this, function mustacheFactory (mustache) {\n\n var objectToString = Object.prototype.toString;\n var isArray = Array.isArray || function isArrayPolyfill (object) {\n return objectToString.call(object) === '[object Array]';\n };\n\n function isFunction (object) {\n return typeof object === 'function';\n }\n\n /**\n * More correct typeof string handling array\n * which normally returns typeof 'object'\n */\n function typeStr (obj) {\n return isArray(obj) ? 'array' : typeof obj;\n }\n\n function escapeRegExp (string) {\n return string.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n }\n\n /**\n * Null safe way of checking whether or not an object,\n * including its prototype, has a given property\n */\n function hasProperty (obj, propName) {\n return obj != null && typeof obj === 'object' && (propName in obj);\n }\n\n // Workaround for https://issues.apache.org/jira/browse/COUCHDB-577\n // See https://github.com/janl/mustache.js/issues/189\n var regExpTest = RegExp.prototype.test;\n function testRegExp (re, string) {\n return regExpTest.call(re, string);\n }\n\n var nonSpaceRe = /\\S/;\n function isWhitespace (string) {\n return !testRegExp(nonSpaceRe, string);\n }\n\n var entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n function escapeHtml (string) {\n return String(string).replace(/[&<>\"'`=\\/]/g, function fromEntityMap (s) {\n return entityMap[s];\n });\n }\n\n var whiteRe = /\\s*/;\n var spaceRe = /\\s+/;\n var equalsRe = /\\s*=/;\n var curlyRe = /\\s*\\}/;\n var tagRe = /#|\\^|\\/|>|\\{|&|=|!/;\n\n /**\n * Breaks up the given `template` string into a tree of tokens. If the `tags`\n * argument is given here it must be an array with two string values: the\n * opening and closing tags used in the template (e.g. [ \"<%\", \"%>\" ]). Of\n * course, the default is to use mustaches (i.e. mustache.tags).\n *\n * A token is an array with at least 4 elements. The first element is the\n * mustache symbol that was used inside the tag, e.g. \"#\" or \"&\". If the tag\n * did not contain a symbol (i.e. {{myValue}}) this element is \"name\". For\n * all text that appears outside a symbol this element is \"text\".\n *\n * The second element of a token is its \"value\". For mustache tags this is\n * whatever else was inside the tag besides the opening symbol. For text tokens\n * this is the text itself.\n *\n * The third and fourth elements of the token are the start and end indices,\n * respectively, of the token in the original template.\n *\n * Tokens that are the root node of a subtree contain two more elements: 1) an\n * array of tokens in the subtree and 2) the index in the original template at\n * which the closing tag for that section begins.\n */\n function parseTemplate (template, tags) {\n if (!template)\n return [];\n\n var sections = []; // Stack to hold section tokens\n var tokens = []; // Buffer to hold the tokens\n var spaces = []; // Indices of whitespace tokens on the current line\n var hasTag = false; // Is there a {{tag}} on the current line?\n var nonSpace = false; // Is there a non-space char on the current line?\n\n // Strips all whitespace tokens array for the current line\n // if there was a {{#tag}} on it and otherwise only space.\n function stripSpace () {\n if (hasTag && !nonSpace) {\n while (spaces.length)\n delete tokens[spaces.pop()];\n } else {\n spaces = [];\n }\n\n hasTag = false;\n nonSpace = false;\n }\n\n var openingTagRe, closingTagRe, closingCurlyRe;\n function compileTags (tagsToCompile) {\n if (typeof tagsToCompile === 'string')\n tagsToCompile = tagsToCompile.split(spaceRe, 2);\n\n if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)\n throw new Error('Invalid tags: ' + tagsToCompile);\n\n openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\\\s*');\n closingTagRe = new RegExp('\\\\s*' + escapeRegExp(tagsToCompile[1]));\n closingCurlyRe = new RegExp('\\\\s*' + escapeRegExp('}' + tagsToCompile[1]));\n }\n\n compileTags(tags || mustache.tags);\n\n var scanner = new Scanner(template);\n\n var start, type, value, chr, token, openSection;\n while (!scanner.eos()) {\n start = scanner.pos;\n\n // Match any text between tags.\n value = scanner.scanUntil(openingTagRe);\n\n if (value) {\n for (var i = 0, valueLength = value.length; i < valueLength; ++i) {\n chr = value.charAt(i);\n\n if (isWhitespace(chr)) {\n spaces.push(tokens.length);\n } else {\n nonSpace = true;\n }\n\n tokens.push([ 'text', chr, start, start + 1 ]);\n start += 1;\n\n // Check for whitespace on the current line.\n if (chr === '\\n')\n stripSpace();\n }\n }\n\n // Match the opening tag.\n if (!scanner.scan(openingTagRe))\n break;\n\n hasTag = true;\n\n // Get the tag type.\n type = scanner.scan(tagRe) || 'name';\n scanner.scan(whiteRe);\n\n // Get the tag value.\n if (type === '=') {\n value = scanner.scanUntil(equalsRe);\n scanner.scan(equalsRe);\n scanner.scanUntil(closingTagRe);\n } else if (type === '{') {\n value = scanner.scanUntil(closingCurlyRe);\n scanner.scan(curlyRe);\n scanner.scanUntil(closingTagRe);\n type = '&';\n } else {\n value = scanner.scanUntil(closingTagRe);\n }\n\n // Match the closing tag.\n if (!scanner.scan(closingTagRe))\n throw new Error('Unclosed tag at ' + scanner.pos);\n\n token = [ type, value, start, scanner.pos ];\n tokens.push(token);\n\n if (type === '#' || type === '^') {\n sections.push(token);\n } else if (type === '/') {\n // Check section nesting.\n openSection = sections.pop();\n\n if (!openSection)\n throw new Error('Unopened section \"' + value + '\" at ' + start);\n\n if (openSection[1] !== value)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + start);\n } else if (type === 'name' || type === '{' || type === '&') {\n nonSpace = true;\n } else if (type === '=') {\n // Set the tags for the next time around.\n compileTags(value);\n }\n }\n\n // Make sure there are no open sections when we're done.\n openSection = sections.pop();\n\n if (openSection)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + scanner.pos);\n\n return nestTokens(squashTokens(tokens));\n }\n\n /**\n * Combines the values of consecutive text tokens in the given `tokens` array\n * to a single token.\n */\n function squashTokens (tokens) {\n var squashedTokens = [];\n\n var token, lastToken;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n if (token) {\n if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {\n lastToken[1] += token[1];\n lastToken[3] = token[3];\n } else {\n squashedTokens.push(token);\n lastToken = token;\n }\n }\n }\n\n return squashedTokens;\n }\n\n /**\n * Forms the given array of `tokens` into a nested tree structure where\n * tokens that represent a section have two additional items: 1) an array of\n * all tokens that appear in that section and 2) the index in the original\n * template that represents the end of that section.\n */\n function nestTokens (tokens) {\n var nestedTokens = [];\n var collector = nestedTokens;\n var sections = [];\n\n var token, section;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n switch (token[0]) {\n case '#':\n case '^':\n collector.push(token);\n sections.push(token);\n collector = token[4] = [];\n break;\n case '/':\n section = sections.pop();\n section[5] = token[2];\n collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;\n break;\n default:\n collector.push(token);\n }\n }\n\n return nestedTokens;\n }\n\n /**\n * A simple string scanner that is used by the template parser to find\n * tokens in template strings.\n */\n function Scanner (string) {\n this.string = string;\n this.tail = string;\n this.pos = 0;\n }\n\n /**\n * Returns `true` if the tail is empty (end of string).\n */\n Scanner.prototype.eos = function eos () {\n return this.tail === '';\n };\n\n /**\n * Tries to match the given regular expression at the current position.\n * Returns the matched text if it can match, the empty string otherwise.\n */\n Scanner.prototype.scan = function scan (re) {\n var match = this.tail.match(re);\n\n if (!match || match.index !== 0)\n return '';\n\n var string = match[0];\n\n this.tail = this.tail.substring(string.length);\n this.pos += string.length;\n\n return string;\n };\n\n /**\n * Skips all text until the given regular expression can be matched. Returns\n * the skipped string, which is the entire tail if no match can be made.\n */\n Scanner.prototype.scanUntil = function scanUntil (re) {\n var index = this.tail.search(re), match;\n\n switch (index) {\n case -1:\n match = this.tail;\n this.tail = '';\n break;\n case 0:\n match = '';\n break;\n default:\n match = this.tail.substring(0, index);\n this.tail = this.tail.substring(index);\n }\n\n this.pos += match.length;\n\n return match;\n };\n\n /**\n * Represents a rendering context by wrapping a view object and\n * maintaining a reference to the parent context.\n */\n function Context (view, parentContext) {\n this.view = view;\n this.cache = { '.': this.view };\n this.parent = parentContext;\n }\n\n /**\n * Creates a new context using the given view with this context\n * as the parent.\n */\n Context.prototype.push = function push (view) {\n return new Context(view, this);\n };\n\n /**\n * Returns the value of the given name in this context, traversing\n * up the context hierarchy if the value is absent in this context's view.\n */\n Context.prototype.lookup = function lookup (name) {\n var cache = this.cache;\n\n var value;\n if (cache.hasOwnProperty(name)) {\n value = cache[name];\n } else {\n var context = this, names, index, lookupHit = false;\n\n while (context) {\n if (name.indexOf('.') > 0) {\n value = context.view;\n names = name.split('.');\n index = 0;\n\n /**\n * Using the dot notion path in `name`, we descend through the\n * nested objects.\n *\n * To be certain that the lookup has been successful, we have to\n * check if the last object in the path actually has the property\n * we are looking for. We store the result in `lookupHit`.\n *\n * This is specially necessary for when the value has been set to\n * `undefined` and we want to avoid looking up parent contexts.\n **/\n while (value != null && index < names.length) {\n if (index === names.length - 1)\n lookupHit = hasProperty(value, names[index]);\n\n value = value[names[index++]];\n }\n } else {\n value = context.view[name];\n lookupHit = hasProperty(context.view, name);\n }\n\n if (lookupHit)\n break;\n\n context = context.parent;\n }\n\n cache[name] = value;\n }\n\n if (isFunction(value))\n value = value.call(this.view);\n\n return value;\n };\n\n /**\n * A Writer knows how to take a stream of tokens and render them to a\n * string, given a context. It also maintains a cache of templates to\n * avoid the need to parse the same template twice.\n */\n function Writer () {\n this.cache = {};\n }\n\n /**\n * Clears all cached templates in this writer.\n */\n Writer.prototype.clearCache = function clearCache () {\n this.cache = {};\n };\n\n /**\n * Parses and caches the given `template` and returns the array of tokens\n * that is generated from the parse.\n */\n Writer.prototype.parse = function parse (template, tags) {\n var cache = this.cache;\n var tokens = cache[template];\n\n if (tokens == null)\n tokens = cache[template] = parseTemplate(template, tags);\n\n return tokens;\n };\n\n /**\n * High-level method that is used to render the given `template` with\n * the given `view`.\n *\n * The optional `partials` argument may be an object that contains the\n * names and templates of partials that are used in the template. It may\n * also be a function that is used to load partial templates on the fly\n * that takes a single argument: the name of the partial.\n */\n Writer.prototype.render = function render (template, view, partials) {\n var tokens = this.parse(template);\n var context = (view instanceof Context) ? view : new Context(view);\n return this.renderTokens(tokens, context, partials, template);\n };\n\n /**\n * Low-level method that renders the given array of `tokens` using\n * the given `context` and `partials`.\n *\n * Note: The `originalTemplate` is only ever used to extract the portion\n * of the original template that was contained in a higher-order section.\n * If the template doesn't use higher-order sections, this argument may\n * be omitted.\n */\n Writer.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate) {\n var buffer = '';\n\n var token, symbol, value;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n value = undefined;\n token = tokens[i];\n symbol = token[0];\n\n if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate);\n else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate);\n else if (symbol === '>') value = this.renderPartial(token, context, partials, originalTemplate);\n else if (symbol === '&') value = this.unescapedValue(token, context);\n else if (symbol === 'name') value = this.escapedValue(token, context);\n else if (symbol === 'text') value = this.rawValue(token);\n\n if (value !== undefined)\n buffer += value;\n }\n\n return buffer;\n };\n\n Writer.prototype.renderSection = function renderSection (token, context, partials, originalTemplate) {\n var self = this;\n var buffer = '';\n var value = context.lookup(token[1]);\n\n // This function is used to render an arbitrary template\n // in the current context by higher-order sections.\n function subRender (template) {\n return self.render(template, context, partials);\n }\n\n if (!value) return;\n\n if (isArray(value)) {\n for (var j = 0, valueLength = value.length; j < valueLength; ++j) {\n buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate);\n }\n } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {\n buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate);\n } else if (isFunction(value)) {\n if (typeof originalTemplate !== 'string')\n throw new Error('Cannot use higher-order sections without the original template');\n\n // Extract the portion of the original template that the section contains.\n value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);\n\n if (value != null)\n buffer += value;\n } else {\n buffer += this.renderTokens(token[4], context, partials, originalTemplate);\n }\n return buffer;\n };\n\n Writer.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate) {\n var value = context.lookup(token[1]);\n\n // Use JavaScript's definition of falsy. Include empty arrays.\n // See https://github.com/janl/mustache.js/issues/186\n if (!value || (isArray(value) && value.length === 0))\n return this.renderTokens(token[4], context, partials, originalTemplate);\n };\n\n Writer.prototype.renderPartial = function renderPartial (token, context, partials) {\n if (!partials) return;\n\n var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\n if (value != null)\n return this.renderTokens(this.parse(value), context, partials, value);\n };\n\n Writer.prototype.unescapedValue = function unescapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return value;\n };\n\n Writer.prototype.escapedValue = function escapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return mustache.escape(value);\n };\n\n Writer.prototype.rawValue = function rawValue (token) {\n return token[1];\n };\n\n mustache.name = 'mustache.js';\n mustache.version = '2.3.0';\n mustache.tags = [ '{{', '}}' ];\n\n // All high-level mustache.* functions use this writer.\n var defaultWriter = new Writer();\n\n /**\n * Clears all cached templates in the default writer.\n */\n mustache.clearCache = function clearCache () {\n return defaultWriter.clearCache();\n };\n\n /**\n * Parses and caches the given template in the default writer and returns the\n * array of tokens it contains. Doing this ahead of time avoids the need to\n * parse templates on the fly as they are rendered.\n */\n mustache.parse = function parse (template, tags) {\n return defaultWriter.parse(template, tags);\n };\n\n /**\n * Renders the `template` with the given `view` and `partials` using the\n * default writer.\n */\n mustache.render = function render (template, view, partials) {\n if (typeof template !== 'string') {\n throw new TypeError('Invalid template! Template should be a \"string\" ' +\n 'but \"' + typeStr(template) + '\" was given as the first ' +\n 'argument for mustache#render(template, view, partials)');\n }\n\n return defaultWriter.render(template, view, partials);\n };\n\n // This is here for backwards compatibility with 0.4.x.,\n /*eslint-disable */ // eslint wants camel cased function name\n mustache.to_html = function to_html (template, view, partials, send) {\n /*eslint-enable*/\n\n var result = mustache.render(template, view, partials);\n\n if (isFunction(send)) {\n send(result);\n } else {\n return result;\n }\n };\n\n // Export the escaping function so that the user may override it.\n // See https://github.com/janl/mustache.js/issues/244\n mustache.escape = escapeHtml;\n\n // Export these mainly for testing, but also for advanced usage.\n mustache.Scanner = Scanner;\n mustache.Context = Context;\n mustache.Writer = Writer;\n\n return mustache;\n}));\n","import mustache from \"mustache\";\n\nconst html = `\n\n\n`;\n\nconst template = `\n
\n
\n {{#authors}}\n
\n {{#personalURL}}\n {{name}}\n {{/personalURL}}\n {{^personalURL}}\n
{{name}}
\n {{/personalURL}}\n {{#affiliation}}\n {{#affiliationURL}}\n {{affiliation}}\n {{/affiliationURL}}\n {{^affiliationURL}}\n
{{affiliation}}
\n {{/affiliationURL}}\n {{/affiliation}}\n
\n {{/authors}}\n
\n
\n
{{publishedMonth}}. {{publishedDay}}
\n
{{publishedYear}}
\n
\n \n
Citation:
\n
{{concatenatedAuthors}}, {{publishedYear}}
\n
\n
\n`\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-byline');\n if (el) {\n el.innerHTML = html + mustache.render(template, data);\n }\n}\n","const html = `\n\n\n
\n

References

\n \n

Errors, Reuse, and Citation

\n

If you see mistakes or want to suggest changes, please create an issue on GitHub.

\n

Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on GitHub. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: “Figure from …”.

\n

For attribution in academic contexts, please cite this work as

\n
\n  

BibTeX citation

\n
\n
\n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-appendix')\n if (el) {\n let oldHtml = el.innerHTML;\n el.innerHTML = html;\n let div = el.querySelector(\"div.l-body\")\n\n if (dom.querySelector(\"dt-fn\")) {\n div.innerHTML = `

Footnotes

` + div.innerHTML;\n }\n\n div.innerHTML = oldHtml + div.innerHTML;\n if (data.githubCompareUpdatesUrl) {\n div.innerHTML = `

Updates

View all changes to this article since it was first published.

` + div.innerHTML;\n }\n\n el.querySelector(\"a.github\").setAttribute(\"href\", data.githubUrl);\n el.querySelector(\"a.github-issue\").setAttribute(\"href\", data.githubUrl + \"/issues/new\");\n el.querySelector(\".citation.short\").textContent = data.concatenatedAuthors + \", \" + '\"' + data.title + '\", Distill, ' + data.publishedYear + \".\";\n var bibtex = \"@article{\" + data.slug + \",\\n\";\n bibtex += \" author = {\" + data.bibtexAuthors + \"},\\n\";\n bibtex += \" title = {\" + data.title + \"},\\n\";\n bibtex += \" journal = {Distill},\\n\";\n bibtex += \" year = {\" + data.publishedYear + \"},\\n\";\n bibtex += \" note = {\" + data.url + \"}\\n\";\n bibtex += \"}\";\n el.querySelector(\".citation.long\").textContent = bibtex;\n }\n\n}\n","import logo from \"./distill-logo.svg\";\n\nlet html = `\n\n\n
\n \n ${logo}\n Distill\n is dedicated to clear explanations of machine learning\n
\n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-footer\");\n if(el) {\n el.innerHTML = html;\n } else {\n let footer = dom.createElement(\"dt-footer\");\n footer.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.appendChild(footer);\n }\n}\n","export default function(dom, data) {\n let css = `\n dt-cite {\n color: hsla(206, 90%, 20%, 0.7);\n }\n dt-cite .citation-number {\n cursor: default;\n white-space: nowrap;\n font-family: -apple-system, BlinkMacSystemFont, \"Roboto\", Helvetica, sans-serif;\n font-size: 75%;\n color: hsla(206, 90%, 20%, 0.7);\n display: inline-block;\n line-height: 1.1em;\n text-align: center;\n position: relative;\n top: -2px;\n margin: 0 2px;\n }\n figcaption dt-cite .citation-number {\n font-size: 11px;\n font-weight: normal;\n top: -2px;\n line-height: 1em;\n }\n `;\n\n let style = dom.createElement(\"style\");\n style.textContent = css;\n dom.querySelector(\"body\").appendChild(style);\n\n let citations = data.citations;\n /*if (data.citations) {\n citations = Object.keys(data.citations).map(c => data.citations[c]);\n citations.sort((a, b) => {\n return a.author.localeCompare(b.author);\n });\n }*/\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach((el,n) => {\n var key = el.getAttribute(\"key\");\n if (key) {\n var keys = key.split(\",\");\n var cite_string = inline_cite_short(keys);\n var cite_hover_str = \"\";\n keys.map((key,n) => {\n if (n>0) cite_hover_str += \"

\";\n cite_hover_str += hover_cite(data.bibliography[key]);\n });\n cite_hover_str = cite_hover_str.replace(/\"/g, \"'\")\n var orig_string = el.innerHTML;\n if (orig_string != \"\") orig_string += \" \";\n el.innerHTML = `${orig_string}${cite_string}`;\n }\n });\n\n let bibEl = dom.querySelector(\"dt-bibliography\");\n if (bibEl) {\n let ol = dom.createElement(\"ol\");\n citations.forEach(key => {\n let el = dom.createElement(\"li\");\n el.innerHTML = bibliography_cite(data.bibliography[key]);\n ol.appendChild(el);\n })\n bibEl.appendChild(ol);\n }\n\n function inline_cite_short(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var n = data.citations.indexOf(key)+1;\n return \"\"+n;\n } else {\n return \"?\";\n }\n }\n return \"[\"+keys.map(cite_string).join(\", \")+\"]\";\n }\n\n function inline_cite_long(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var ent = data.bibliography[key];\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var year = ent.year;\n if (names.length == 1) return names[0] + \", \" + year;\n if (names.length == 2) return names[0] + \" & \" + names[1] + \", \" + year;\n if (names.length > 2) return names[0] + \", et al., \" + year;\n } else {\n return \"?\";\n }\n }\n return keys.map(cite_string).join(\", \");\n }\n\n function author_string(ent, template, sep, finalSep){\n var names = ent.author.split(\" and \");\n let name_strings = names.map(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1];\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n var initials = \"\";\n if (firsts != undefined) {\n initials = firsts.trim().split(\" \").map(s => s.trim()[0]);\n initials = initials.join(\".\")+\".\";\n }\n return template.replace(\"${F}\", firsts)\n .replace(\"${L}\", last)\n .replace(\"${I}\", initials);\n });\n if (names.length > 1) {\n var str = name_strings.slice(0, names.length-1).join(sep);\n str += (finalSep || sep) + name_strings[names.length-1];\n return str;\n } else {\n return name_strings[0];\n }\n }\n\n function venue_string(ent) {\n var cite = (ent.journal || ent.booktitle || \"\")\n if (\"volume\" in ent){\n var issue = ent.issue || ent.number;\n issue = (issue != undefined)? \"(\"+issue+\")\" : \"\";\n cite += \", Vol \" + ent.volume + issue;\n }\n if (\"pages\" in ent){\n cite += \", pp. \" + ent.pages\n }\n if (cite != \"\") cite += \". \"\n if (\"publisher\" in ent){\n cite += ent.publisher;\n if (cite[cite.length-1] != \".\") cite += \".\";\n }\n return cite;\n }\n\n function link_string(ent){\n if (\"url\" in ent){\n var url = ent.url;\n var arxiv_match = (/arxiv\\.org\\/abs\\/([0-9\\.]*)/).exec(url);\n if (arxiv_match != null){\n url = `http://arxiv.org/pdf/${arxiv_match[1]}.pdf`;\n }\n\n if (url.slice(-4) == \".pdf\"){\n var label = \"PDF\";\n } else if (url.slice(-5) == \".html\") {\n var label = \"HTML\";\n }\n return `  [${label||\"link\"}]`;\n }/* else if (\"doi\" in ent){\n return `  [DOI]`;\n }*/ else {\n return \"\";\n }\n }\n function doi_string(ent, new_line){\n if (\"doi\" in ent) {\n return `${new_line?\"
\":\"\"} DOI: ${ent.doi}`;\n } else {\n return \"\";\n }\n }\n\n function bibliography_cite(ent, fancy){\n if (ent){\n var cite = \"\" + ent.title + \" \"\n cite += link_string(ent) + \"
\";\n cite += author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += venue_string(ent);\n cite += doi_string(ent);\n return cite\n /*var cite = author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += \"\" + ent.title + \". \";\n cite += venue_string(ent);\n cite += doi_string(ent);\n cite += link_string(ent);\n return cite*/\n } else {\n return \"?\";\n }\n }\n\n function hover_cite(ent){\n if (ent){\n var cite = \"\";\n cite += \"\" + ent.title + \"\";\n cite += link_string(ent);\n cite += \"
\"\n\n var a_str = author_string(ent, \"${I} ${L}\", \", \") + \".\";\n var v_str = venue_string(ent).trim() + \" \" + ent.year + \". \" + doi_string(ent, true);\n\n if ((a_str+v_str).length < Math.min(40, ent.title.length)) {\n cite += a_str + \" \" + v_str;\n } else {\n cite += a_str + \"
\" + v_str;\n }\n return cite;\n } else {\n return \"?\";\n }\n }\n\n\n //https://scholar.google.com/scholar?q=allintitle%3ADocument+author%3Aolah\n function get_GS_URL(ent){\n if (ent){\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var title = ent.title.split(\" \")//.replace(/[,:]/, \"\")\n var url = \"http://search.labs.crossref.org/dois?\"//\"\"https://scholar.google.com/scholar?\"\n url += uris({q: names.join(\" \") + \" \" + title.join(\" \")})\n }\n\n }\n}\n","export default function(dom, data) {\n\n var fnTags = [].slice.apply(dom.querySelectorAll(\"dt-fn\"));\n var fnContent = [];\n fnTags.forEach((el,n) => {\n var content = el.innerHTML;\n fnContent.push(content);\n n = (n+1)+\"\";\n var key = \"fn-\"+n;\n var escaped_content = content.replace(/\"/g, \"'\");\n el.innerHTML = `${n}`;\n });\n\n let fnList = dom.querySelector(\"dt-fn-list\");\n if (fnList) {\n let ol = dom.createElement(\"ol\");\n fnContent.forEach(content => {\n let el = dom.createElement(\"li\");\n el.innerHTML = content;\n ol.appendChild(el);\n })\n fnList.appendChild(ol);\n }\n\n}\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n */\n\n;(function() {\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^( *[-*_]){3,} *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,\n nptable: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n blockquote: /^( *>[^\\n]+(\\n(?!def)[^\\n]+)*\\n*)+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n table: noop,\n paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,\n text: /^[^\\n]+/\n};\n\nblock.bullet = /(?:[*+-]|\\d+\\.)/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = replace(block.item, 'gm')\n (/bull/g, block.bullet)\n ();\n\nblock.list = replace(block.list)\n (/bull/g, block.bullet)\n ('hr', '\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))')\n ('def', '\\\\n+(?=' + block.def.source + ')')\n ();\n\nblock.blockquote = replace(block.blockquote)\n ('def', block.def)\n ();\n\nblock._tag = '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'\n + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'\n + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|[^\\\\w\\\\s@]*@)\\\\b';\n\nblock.html = replace(block.html)\n ('comment', //)\n ('closed', /<(tag)[\\s\\S]+?<\\/\\1>/)\n ('closing', /])*?>/)\n (/tag/g, block._tag)\n ();\n\nblock.paragraph = replace(block.paragraph)\n ('hr', block.hr)\n ('heading', block.heading)\n ('lheading', block.lheading)\n ('blockquote', block.blockquote)\n ('tag', '<' + block._tag)\n ('def', block.def)\n ();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]*?)\\s*\\1 *(?:\\n+|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = replace(block.paragraph)\n ('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n ();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top, bq) {\n var src = src.replace(/^ +$/gm, '')\n , next\n , loose\n , cap\n , bull\n , b\n , item\n , space\n , i\n , l;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic\n ? cap.replace(/\\n+$/, '')\n : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top, true);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n\n this.tokens.push({\n type: 'list_start',\n ordered: bull.length > 1\n });\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n this.tokens.push({\n type: loose\n ? 'loose_item_start'\n : 'list_item_start'\n });\n\n // Recurse.\n this.token(item, false, bq);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if ((!bq && top) && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.links[cap[1].toLowerCase()] = {\n href: cap[2],\n title: cap[3]\n };\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i]\n .replace(/^ *\\| *| *\\| *$/g, '')\n .split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n autolink: /^<([^ >]+(@|:\\/)[^ >]+)>/,\n url: noop,\n tag: /^|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^\\b_((?:[^_]|__)+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n code: /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n text: /^[\\s\\S]+?(?=[\\\\?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\ninline.link = replace(inline.link)\n ('inside', inline._inside)\n ('href', inline._href)\n ();\n\ninline.reflink = replace(inline.reflink)\n ('inside', inline._inside)\n ();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: replace(inline.escape)('])', '~|])')(),\n url: /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n text: replace(inline.text)\n (']|', '~]|')\n ('|', '|https?://|')\n ()\n});\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: replace(inline.br)('{2,}', '*')(),\n text: replace(inline.gfm.text)('{2,}', '*')()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer;\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new\n Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n var out = ''\n , link\n , text\n , href\n , cap;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += cap[1];\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = cap[1].charAt(6) === ':'\n ? this.mangle(cap[1].substring(7))\n : this.mangle(cap[1]);\n href = this.mangle('mailto:') + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n src = src.substring(cap[0].length);\n text = escape(cap[1]);\n href = text;\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^/i.test(cap[0])) {\n this.inLink = false;\n }\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0]\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out += this.outputLink(cap, {\n href: cap[2],\n title: cap[3]\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2], true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = escape(link.href)\n , title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = ''\n , l = text.length\n , i = 0\n , ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || {};\n}\n\nRenderer.prototype.code = function(code, lang, escaped) {\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
'\n      + (escaped ? code : escape(code, true))\n      + '\\n
';\n }\n\n return '
'\n    + (escaped ? code : escape(code, true))\n    + '\\n
\\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '
\\n' + quote + '
\\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw) {\n return ''\n + text\n + '\\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? '
\\n' : '
\\n';\n};\n\nRenderer.prototype.list = function(body, ordered) {\n var type = ordered ? 'ol' : 'ul';\n return '<' + type + '>\\n' + body + '\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '
  • ' + text + '
  • \\n';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '

    ' + text + '

    \\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + '\\n'\n + body\n + '\\n'\n + '
    \\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '\\n' + content + '\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' style=\"text-align:' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.em = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? '
    ' : '
    ';\n};\n\nRenderer.prototype.del = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n if (this.options.sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return '';\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0) {\n return '';\n }\n }\n var out = '
    ';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n var out = '\"'' : '>';\n return out;\n};\n\nRenderer.prototype.text = function(text) {\n return text;\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer;\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options, renderer) {\n var parser = new Parser(options, renderer);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options, this.renderer);\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n this.token.text);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = ''\n , body = ''\n , i\n , row\n , cell\n , flags\n , j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n flags = { header: true, align: this.token.align[i] };\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n var body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n var body = ''\n , ordered = this.token.ordered;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered);\n }\n case 'list_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'loose_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'html': {\n var html = !this.token.pre && !this.options.pedantic\n ? this.inline.output(this.token.text)\n : this.token.text;\n return this.renderer.html(html);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n }\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n return html\n .replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\nfunction unescape(html) {\n\t// explicitly match decimal, hex, and named HTML entities \n return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/g, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction replace(regex, opt) {\n regex = regex.source;\n opt = opt || '';\n return function self(name, val) {\n if (!name) return new RegExp(regex, opt);\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return self;\n };\n}\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1\n , target\n , key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n\n var highlight = opt.highlight\n , tokens\n , pending\n , i = 0;\n\n try {\n tokens = Lexer.lex(src, opt)\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/chjj/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occured:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n sanitizer: null,\n mangle: true,\n smartLists: false,\n silent: false,\n highlight: null,\n langPrefix: 'lang-',\n smartypants: false,\n headerPrefix: '',\n renderer: new Renderer,\n xhtml: false\n};\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.parse = marked;\n\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n this.marked = marked;\n}\n\n}).call(function() {\n return this || (typeof window !== 'undefined' ? window : global);\n}());\n","import marked from 'marked';\n\nmarked.setOptions({\n gfm: true,\n smartypants: true\n});\n\nexport default function(dom, data) {\n let markdownElements = [].slice.call(dom.querySelectorAll('[markdown]'));\n markdownElements.forEach(el => {\n let content = el.innerHTML;\n // Set default indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n\n el.innerHTML = marked(content);\n });\n}\n","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = _self.Prism = {\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/ text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\tbreak tokenloop;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t delNum = 1;\n\n\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t to = match.index + match[0].length,\n\t\t\t\t\t\t k = i,\n\t\t\t\t\t\t p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && p < to; ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t match = match[0].slice(lookbehindLength),\n\t\t\t\t\t to = from + match.length,\n\t\t\t\t\t before = str.slice(0, from),\n\t\t\t\t\t after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (env.type == 'comment') {\n\t\tenv.attributes['spellcheck'] = 'true';\n\t}\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n \t// In worker\n\t_self.addEventListener('message', function(evt) {\n\t\tvar message = JSON.parse(evt.data),\n\t\t lang = message.language,\n\t\t code = message.code,\n\t\t immediateClose = message.immediateClose;\n\n\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\tif (immediateClose) {\n\t\t\t_self.close();\n\t\t}\n\t}, false);\n\n\treturn _self.Prism;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (document.addEventListener && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': //,\n\t'prolog': /<\\?[\\w\\W]+?\\?>/,\n\t'doctype': //i,\n\t'cdata': //i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\w\\W])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:('|\")[\\w\\W]*?(\\1)|[^\\s>]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /[=>\"']/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\w\\W]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^\\{\\}\\s][^\\{\\};]*?(?=\\s*\\{)/,\n\t'string': {\n\t\tpattern: /(\"|')(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'property': /(\\b|\\B)[\\w-]+(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|').*?\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\w\\W]*?\\*\\//,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[a-z0-9_\\.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /(\\.|\\\\)/\n\t\t}\n\t},\n\t'keyword': /\\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(0x[\\dA-Fa-f]+|0b[01]+|0o[0-7]+|\\d*\\.?\\d+([Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*(?=\\()/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*\\*?|\\/|~|\\^|%|\\.{3}/\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[.+?]|\\\\.|[^/\\\\\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\\\\\|\\\\?[^\\\\])*?`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript'\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tif(Array.prototype.forEach) { // Check to prevent error in IE8\n\t\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\t\tvar language, parent = pre;\n\t\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\t\tparent = parent.parentNode;\n\t\t\t\t}\n\n\t\t\t\tif (parent) {\n\t\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t\t}\n\n\t\t\t\tif (!language) {\n\t\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t\t}\n\n\t\t\t\tvar code = document.createElement('code');\n\t\t\t\tcode.className = 'language-' + language;\n\n\t\t\t\tpre.textContent = '';\n\n\t\t\t\tcode.textContent = 'Loading…';\n\n\t\t\t\tpre.appendChild(code);\n\n\t\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\t\txhr.open('GET', src, true);\n\n\t\t\t\txhr.onreadystatechange = function () {\n\t\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\txhr.send(null);\n\t\t\t});\n\t\t}\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\n})();\n","import Prism from \"prismjs\";\n\nexport default function(dom, data) {\n let codeElements = [].slice.call(dom.querySelectorAll(\"dt-code\"));\n codeElements.forEach(el => {\n let content = el.textContent;\n el.innerHTML = \"\";\n let language = el.getAttribute(\"language\");\n let c = dom.createElement(\"code\");\n if (el.getAttribute(\"block\") === \"\") {\n // Let's normalize the tab indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n let p = dom.createElement(\"pre\");\n p.appendChild(c);\n el.appendChild(p);\n } else {\n el.appendChild(c);\n }\n let highlighted = content;\n if (Prism.languages[language]) {\n c.setAttribute(\"class\", \"language-\" + language);\n highlighted = Prism.highlight(content, Prism.languages[language]);\n }\n c.innerHTML = highlighted;\n });\n}\n","export default function(dom, data) {\n\n var textNodes = dom.createTreeWalker(\n dom.body,\n dom.defaultView.NodeFilter.SHOW_TEXT\n );\n while (textNodes.nextNode()) {\n var n = textNodes.currentNode,\n text = n.nodeValue;\n if (text && acceptNode(n)) {\n text = quotes(text);\n text = punctuation(text);\n n.nodeValue = text;\n }\n }\n}\n\nfunction acceptNode(node) {\n var parent = node.parentElement;\n var isMath = (parent && parent.getAttribute && parent.getAttribute(\"class\")) ? parent.getAttribute(\"class\").includes(\"katex\") || parent.getAttribute(\"class\").includes(\"MathJax\") : false;\n return parent &&\n parent.nodeName !== \"SCRIPT\" &&\n parent.nodeName !== \"STYLE\" &&\n parent.nodeName !== \"CODE\" &&\n parent.nodeName !== \"PRE\" &&\n parent.nodeName !== \"SPAN\" &&\n parent.nodeName !== \"DT-HEADER\" &&\n parent.nodeName !== \"DT-BYLINE\" &&\n parent.nodeName !== \"DT-MATH\" &&\n parent.nodeName !== \"DT-CODE\" &&\n parent.nodeName !== \"DT-BIBLIOGRAPHY\" &&\n parent.nodeName !== \"DT-FOOTER\" &&\n parent.nodeType !== 8 && //comment nodes\n !isMath;\n}\n\n\n/*!\n * typeset - Typesetting for the web\n * @version v0.1.6\n * @link https://github.com/davidmerfield/Typeset.js\n * @author David Merfield\n */\n // which has a CC0 license\n // http://creativecommons.org/publicdomain/zero/1.0/\n\n\nfunction punctuation(text){\n\n // Dashes\n text = text.replace(/--/g, '\\u2014');\n text = text.replace(/ \\u2014 /g,\"\\u2009\\u2014\\u2009\"); //this has thin spaces\n\n // Elipses\n text = text.replace(/\\.\\.\\./g,'…');\n\n // Nbsp for punc with spaces\n var NBSP = \"\\u00a0\";\n var NBSP_PUNCTUATION_START = /([«¿¡]) /g;\n var NBSP_PUNCTUATION_END = / ([\\!\\?:;\\.,‽»])/g;\n\n text = text.replace(NBSP_PUNCTUATION_START, '$1' + NBSP);\n text = text.replace(NBSP_PUNCTUATION_END, NBSP + '$1');\n\n return text;\n}\n\nfunction quotes(text) {\n\n text = text\n .replace(/(\\W|^)\"([^\\s\\!\\?:;\\.,‽»])/g, '$1\\u201c$2') // beginning \"\n .replace(/(\\u201c[^\"]*)\"([^\"]*$|[^\\u201c\"]*\\u201c)/g, '$1\\u201d$2') // ending \"\n .replace(/([^0-9])\"/g,'$1\\u201d') // remaining \" at end of word\n .replace(/(\\W|^)'(\\S)/g, '$1\\u2018$2') // beginning '\n .replace(/([a-z])'([a-z])/ig, '$1\\u2019$2') // conjunction's possession\n .replace(/((\\u2018[^']*)|[a-z])'([^0-9]|$)/ig, '$1\\u2019$3') // ending '\n .replace(/(\\u2018)([0-9]{2}[^\\u2019]*)(\\u2018([^0-9]|$)|$|\\u2019[a-z])/ig, '\\u2019$2$3') // abbrev. years like '93\n .replace(/(\\B|^)\\u2018(?=([^\\u2019]*\\u2019\\b)*([^\\u2019\\u2018]*\\W[\\u2019\\u2018]\\b|[^\\u2019\\u2018]*$))/ig, '$1\\u2019') // backwards apostrophe\n .replace(/'''/g, '\\u2034') // triple prime\n .replace(/(\"|'')/g, '\\u2033') // double prime\n .replace(/'/g, '\\u2032');\n\n // Allow escaped quotes\n text = text.replace(/\\\\“/, '\\\"');\n text = text.replace(/\\\\”/, '\\\"');\n text = text.replace(/\\\\’/, '\\'');\n text = text.replace(/\\\\‘/, '\\'');\n\n return text;\n}\n\nfunction ligatures(text){\n\n text = text.replace(/fi/g, 'fi');\n text = text.replace(/fl/g, 'fl');\n\n return text;\n};\n","import code from './hover-box.txt';\n\nexport default function(dom) {\n let s = dom.createElement(\"script\");\n s.textContent = code;\n dom.querySelector(\"body\").appendChild(s);\n}\n","//import xml from \"xml\";\n\nexport default function(data) {\n\n\n var date = data.publishedDate;\n\n var batch_timestamp = Math.floor(Date.now() / 1000);\n var batch_id = data.authors.length ? data.authors[0].lastName.toLowerCase().slice(0,20) : \"Anonymous\";\n batch_id += \"_\" + date.getFullYear();\n batch_id += \"_\" + data.title.split(\" \")[0].toLowerCase().slice(0,20) + \"_\" + batch_timestamp;\n // generate XML\n var crf_data =\n {doi_batch : [\n\n { _attr: {\n version: \"4.3.7\",\n xmlns: \"http://www.crossref.org/schema/4.3.7\",\n \"xmlns:xsi\": \"http://www.w3.org/2001/XMLSchema-instance\",\n \"xsi:schemaLocation\": \"http://www.crossref.org/schema/4.3.7 http://www.crossref.org/schemas/crossref4.3.7.xsd\",\n }},\n\n { head: [\n {doi_batch_id: batch_id},\n {timestamp: batch_timestamp},\n {depositor: [\n {depositor_name: data.journal.publisherName},\n {email_address: data.journal.publisherEmail},\n ]},\n {registrant: data.journal.publisherName},\n ]},\n\n {body: [\n {journal: [\n\n {journal_metadata: [\n {full_title: data.journal.full_title || data.journal.title},\n {abbrev_title: data.journal.abbrev_title || data.journal.title || data.journal.full_title},\n {issn: data.journal.issn},\n {doi_data: [\n {doi: data.journal.doi},\n {resource: data.journal.url},\n ]},\n ]},\n\n {journal_issue: [\n {publication_date: [\n {month: date.getMonth()+1},\n {year: date.getFullYear()},\n ]},\n {journal_volume: [\n {volume: data.volume},\n ]},\n {issue: data.issue},\n ]},\n\n {journal_article: [\n {titles: [\n {title: data.title},\n ]},\n { contributors:\n data.authors.map((author, ind) => (\n {person_name: [\n { _attr: {\n contributor_role: \"author\",\n sequence: (ind == 0)? \"first\" : \"additional\"\n }},\n {given_name: author.firstName},\n {surname: author.lastName},\n {affiliation: author.affiliation}\n // TODO: ORCID?\n ]}\n ))\n },\n {publication_date: [\n {month: date.getMonth()+1},\n {day: date.getDate()},\n {year: date.getFullYear()}\n ]},\n { publisher_item: [\n {item_number: data.doi}\n ]},\n {doi_data: [\n {doi: data.doi},\n //{timestamp: \"\"},\n {resource: data.url},\n ]},\n {citation_list:\n data.citations.map(key =>\n citation_xml(key, data.bibliography[key]))\n }\n\n ]},\n\n ]},\n ]},\n ]};\n\n return xml(crf_data);\n}\n\nfunction citation_xml(key, ent){\n if (ent == undefined) return {};\n var info = [];\n info.push({_attr: {key: key}});\n if (\"title\" in ent)\n info.push({article_title: ent.title});\n if (\"author\" in ent)\n info.push({author: ent.author.split(\" and \")[0].split(\",\")[0].trim()});\n if (\"journal\" in ent)\n info.push({journal_title: ent.journal});\n if (\"booktitle\" in ent)\n info.push({volume_title: ent.booktitle});\n if (\"volume\" in ent)\n info.push({volume: ent.volume});\n if (\"issue\" in ent)\n info.push({issue: ent.issue});\n if (\"doi\" in ent)\n info.push({doi: ent.doi});\n return {citation: info}\n}\n\nfunction xml(obj) {\n //console.log(typeof(obj), obj)\n if (typeof obj === 'string') return obj;\n if (typeof obj === 'number') return \"\"+obj;\n let keys = Object.keys(obj);\n if (keys.length != 1) console.error(\"can't interpret \", obj, \"as xml\");\n let name = keys[0];\n var full_content = obj[name];\n var attr = {};\n if (Array.isArray(full_content)){\n var content = [];\n for (var i in full_content) {\n var obj = full_content[i];\n var obj_name = Object.keys(obj)[0];\n if (\"_attr\" == obj_name) {\n attr = obj[\"_attr\"];\n } else {\n //console.log(Object.keys(obj)[0])\n content.push(obj);\n }\n }\n } else {\n content = full_content;\n }\n if (content == undefined){\n content = \"undefined\"\n }\n\n let attr_string = \"\";\n for (var k in attr) {\n attr_string += ` ${k}=\\\"${attr[k]}\\\"`\n }\n\n //console.log(typeof content, Array.isArray(content), content instanceof String, content)\n if (Array.isArray(content)){\n content = content.map(xml);\n content = content.join(\"\\n\").split(\"\\n\");\n content = content.map(s => \" \" + s).join(\"\\n\")\n var result = `<${name}${attr_string}>\\n${content}\\n`;\n } else {\n content = xml(content);\n var result = `<${name}${attr_string}>${content}`;\n }\n return result;\n}\n","import html from \"./components/html\";\nimport styles from \"./components/styles\";\nimport frontMatter from \"./components/front-matter\";\nimport bibliography from \"./components/bibliography\";\nimport expandData from \"./components/expand-data\";\nimport meta from \"./components/meta\";\nimport banner from \"./components/banner\";\nimport header from \"./components/header\";\nimport byline from \"./components/byline\";\nimport appendix from \"./components/appendix\";\nimport footer from \"./components/footer\";\nimport citation from \"./components/citation\";\nimport footnote from \"./components/footnote\";\nimport markdown from \"./components/markdown\";\nimport code from \"./components/code\";\nimport typeset from \"./components/typeset\";\nimport hoverBox from \"./components/hover-box-include\";\nimport generateCrossref from \"./components/generate-crossref\";\n\nfunction renderImmediately(dom) {\n html(dom);\n styles(dom);\n}\n\nfunction renderOnLoad(dom, data) {\n frontMatter(dom, data);\n bibliography(dom, data);\n expandData(dom, data);\n meta(dom, data);\n header(dom, data);\n byline(dom, data);\n appendix(dom, data);\n footer(dom, data);\n markdown(dom, data);\n code(dom, data);\n citation(dom, data);\n footnote(dom, data);\n typeset(dom, data);\n hoverBox(dom, data);\n}\n\n// If we are in a browser, render automatically...\nif(window && window.document) {\n let data = {};\n renderImmediately(window.document);\n window.document.addEventListener(\"DOMContentLoaded\", (event) => {\n renderOnLoad(window.document, data);\n // Add a banner if we're not on localhost.\n if (window.location.hostname !== \"localhost\" && window.location.origin !== \"file://\") {\n banner(window.document, data);\n }\n generateCrossref(data);\n });\n}\n\n// If we are in node...\nfunction render(dom, data) {\n renderImmediately(dom);\n renderOnLoad(dom, data);\n // Remove script tag so it doesn't run again in the client\n let s = dom.querySelector('script[src=\"http://distill.pub/template.js\"]');\n if (s) { s.parentElement.removeChild(s); };\n}\n\nexport {render as render};\nexport {generateCrossref as generateCrossref};\n"],"names":["let","meta","YAMLException","common","require$$0","Mark","this","Type","require$$1","require$$2","type","arguments","Schema","require$$3","require$$4","require$$5","require","_hasOwnProperty","_toString","require$$6","require$$7","_require","DEFAULT_SAFE_SCHEMA","DEFAULT_FULL_SCHEMA","loadAll","load","safeLoadAll","safeLoad","State","dump","safeDump","require$$8","require$$9","ymlParse","interval","day","timeDay","timeYear","timeSunday","timeMonday","locale","const","html","define","global","Prism","code","render"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":null,"sources":["../components/html.js","../components/styles.js","../node_modules/js-yaml/lib/js-yaml/common.js","../node_modules/js-yaml/lib/js-yaml/exception.js","../node_modules/js-yaml/lib/js-yaml/mark.js","../node_modules/js-yaml/lib/js-yaml/type.js","../node_modules/js-yaml/lib/js-yaml/schema.js","../node_modules/js-yaml/lib/js-yaml/type/str.js","../node_modules/js-yaml/lib/js-yaml/type/seq.js","../node_modules/js-yaml/lib/js-yaml/type/map.js","../node_modules/js-yaml/lib/js-yaml/schema/failsafe.js","../node_modules/js-yaml/lib/js-yaml/type/null.js","../node_modules/js-yaml/lib/js-yaml/type/bool.js","../node_modules/js-yaml/lib/js-yaml/type/int.js","../node_modules/js-yaml/lib/js-yaml/type/float.js","../node_modules/js-yaml/lib/js-yaml/schema/json.js","../node_modules/js-yaml/lib/js-yaml/schema/core.js","../node_modules/js-yaml/lib/js-yaml/type/timestamp.js","../node_modules/js-yaml/lib/js-yaml/type/merge.js","../node_modules/js-yaml/lib/js-yaml/type/binary.js","../node_modules/js-yaml/lib/js-yaml/type/omap.js","../node_modules/js-yaml/lib/js-yaml/type/pairs.js","../node_modules/js-yaml/lib/js-yaml/type/set.js","../node_modules/js-yaml/lib/js-yaml/schema/default_safe.js","../node_modules/js-yaml/lib/js-yaml/type/js/undefined.js","../node_modules/js-yaml/lib/js-yaml/type/js/regexp.js","../node_modules/js-yaml/lib/js-yaml/type/js/function.js","../node_modules/js-yaml/lib/js-yaml/schema/default_full.js","../node_modules/js-yaml/lib/js-yaml/loader.js","../node_modules/js-yaml/lib/js-yaml/dumper.js","../node_modules/js-yaml/lib/js-yaml.js","../node_modules/js-yaml/index.js","../components/front-matter.js","../node_modules/bibtex-parse-js/bibtexParse.js","../components/bibliography.js","../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/utcMinute.js","../node_modules/d3-time/src/utcHour.js","../node_modules/d3-time/src/utcDay.js","../node_modules/d3-time/src/utcWeek.js","../node_modules/d3-time/src/utcMonth.js","../node_modules/d3-time/src/utcYear.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-time-format/src/isoFormat.js","../node_modules/d3-time-format/src/isoParse.js","../components/expand-data.js","../../node_modules/escape-html/index.js","../components/meta.js","../components/banner.js","../components/header.js","../node_modules/mustache/mustache.js","../components/byline.js","../components/appendix.js","../components/footer.js","../components/citation.js","../components/footnote.js","../node_modules/marked/lib/marked.js","../components/markdown.js","../node_modules/prismjs/prism.js","../components/code.js","../components/typeset.js","../components/hover-box-include.js","../components/generate-crossref.js","../index.js"],"sourcesContent":["export default function(dom) {\n if (!dom.querySelector(\"html\").getAttribute(\"lang\")) {\n dom.querySelector(\"html\").setAttribute(\"lang\", \"en\")\n }\n\n let head = dom.querySelector(\"head\");\n\n if (!dom.querySelector(\"meta[charset]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"charset\", \"utf-8\");\n head.appendChild(meta);\n }\n if (!dom.querySelector(\"meta[name=viewport]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"name\", \"viewport\");\n meta.setAttribute(\"content\", \"width=device-width, initial-scale=1\");\n head.appendChild(meta);\n }\n}\n","import base from './styles-base.css';\nimport layout from './styles-layout.css';\nimport article from './styles-article.css';\nimport code from './styles-code.css';\nimport print from './styles-print.css';\n\nexport default function(dom) {\n let s = dom.createElement(\"style\");\n s.textContent = base + layout + article + code + print;\n dom.querySelector(\"head\").appendChild(s);\n}\n","'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n var result = this.name + ': ';\n\n result += this.reason || '(unknown reason)';\n\n if (!compact && this.mark) {\n result += ' ' + this.mark.toString();\n }\n\n return result;\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n\nvar common = require('./common');\n\n\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\n\n\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head, start, tail, end, snippet;\n\n if (!this.buffer) return null;\n\n indent = indent || 4;\n maxLength = maxLength || 75;\n\n head = '';\n start = this.position;\n\n while (start > 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n\n tail = '';\n end = this.position;\n\n while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n\n snippet = this.buffer.slice(start, end);\n\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' +\n common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\n\nMark.prototype.toString = function toString(compact) {\n var snippet, where = '';\n\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n if (!compact) {\n snippet = this.getSnippet();\n\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n\n return where;\n};\n\n\nmodule.exports = Mark;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name, result) {\n var exclude = [];\n\n schema.include.forEach(function (includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n\n schema[name].forEach(function (currentType) {\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n exclude.push(previousIndex);\n }\n });\n\n result.push(currentType);\n });\n\n return result.filter(function (type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {}\n }, index, length;\n\n function collectType(type) {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n\n this.implicit.forEach(function (type) {\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n });\n\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\n\nSchema.DEFAULT = null;\n\n\nSchema.create = function createSchema() {\n var schemas, types;\n\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n\n if (!schemas.every(function (schema) { return schema instanceof Schema; })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n\n if (!types.every(function (type) { return type instanceof Type; })) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n return new Schema({\n include: schemas,\n explicit: types\n });\n};\n\n\nmodule.exports = Schema;\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 8\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 10 (except 0) or base 60\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch === ':') break;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n if (!hasDigits) return false;\n\n // if !base60 - done;\n if (ch !== ':') return true;\n\n // base60 almost not used, no needs to optimize\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch, base, digits = [];\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value, 16);\n return sign * parseInt(value, 8);\n }\n\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseInt(v, 10));\n });\n\n value = 0;\n base = 1;\n\n digits.forEach(function (d) {\n value += (d * base);\n base *= 60;\n });\n\n return sign * value;\n\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (object) { return '0b' + object.toString(2); },\n octal: function (object) { return '0' + object.toString(8); },\n decimal: function (object) { return object.toString(10); },\n hexadecimal: function (object) { return '0x' + object.toString(16).toUpperCase(); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n '^(?:[-+]?(?:[0-9][0-9_]*)\\\\.[0-9_]*(?:[eE][-+][0-9]+)?' +\n '|\\\\.[0-9_]+(?:[eE][-+][0-9]+)?' +\n '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' +\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data)) return false;\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign, base, digits;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n\n } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n\n value = 0.0;\n base = 1;\n\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n\n return sign * value;\n\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./failsafe')\n ],\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./json')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\nvar NodeBuffer;\n\ntry {\n // A trick for browserified version, to not include `Buffer` shim\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n // Wrap into Buffer for NodeJS and leave Array for browser\n if (NodeBuffer) return new NodeBuffer(result);\n\n return result;\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./core')\n ],\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n return true;\n}\n\nfunction constructJavascriptUndefined() {\n /*eslint-disable no-undefined*/\n return undefined;\n}\n\nfunction representJavascriptUndefined() {\n return '';\n}\n\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n if (data === null) return false;\n if (data.length === 0) return false;\n\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // if regexp starts with '/' it can have modifiers and must be properly closed\n // `/foo/gim` - modifiers tail can be maximum 3 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n\n if (modifiers.length > 3) return false;\n // if expression starts with /, is should be properly terminated\n if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n }\n\n return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // `/foo/gim` - tail can be maximum 4 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n\n return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object /*, style*/) {\n var result = '/' + object.source + '/';\n\n if (object.global) result += 'g';\n if (object.multiline) result += 'm';\n if (object.ignoreCase) result += 'i';\n\n return result;\n}\n\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n","'use strict';\n\nvar esprima;\n\n// Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n// If not found - try to fallback to window.esprima. If not\n// found too - then fail to parse.\n//\ntry {\n // workaround to exclude package from browserify list.\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n /*global window */\n if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n if (data === null) return false;\n\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true });\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction constructJavascriptFunction(data) {\n /*jslint evil:true*/\n\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true }),\n params = [],\n body;\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n throw new Error('Failed to resolve function');\n }\n\n ast.body[0].expression.params.forEach(function (param) {\n params.push(param.name);\n });\n\n body = ast.body[0].expression.body.range;\n\n // Esprima's ranges include the first '{' and the last '}' characters on\n // function expressions. So cut them out.\n /*eslint-disable no-new-func*/\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n}\n\nfunction representJavascriptFunction(object /*, style*/) {\n return object.toString();\n}\n\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n","// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [\n require('./default_safe')\n ],\n explicit: [\n require('../type/js/undefined'),\n require('../type/js/regexp'),\n require('../type/js/function')\n ]\n});\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00);\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n return new YAMLException(\n message,\n new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length;\n _position < _length;\n _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode) {\n var index, quantity;\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n throwError(state, 'duplicated mapping key');\n }\n _result[keyNode] = valueNode;\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else {\n break; // Reading is done. Go to the epilogue.\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if (state.lineIndent > nodeIndent && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!state.anchorMap.hasOwnProperty(alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag !== null && state.tag !== '!') {\n if (state.tag === '?') {\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length;\n typeIndex < typeQuantity;\n typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only assigned to plain scalars. So, it isn't\n // needed to check for 'kind' conformity.\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = {};\n state.anchorMap = {};\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n var documents = loadDocuments(input, options), index, length;\n\n for (index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nfunction safeLoadAll(input, output, options) {\n loadAll(input, output, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nfunction safeLoad(input, options) {\n return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// Simplified test for values allowed after the first character in plain style.\nfunction isPlainSafe(c) {\n // Uses a subset of nb-char - c-flow-indicator - \":\" - \"#\"\n // where nb-char ::= c-printable - b-char - c-byte-order-mark.\n return isPrintable(c) && c !== 0xFEFF\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // - \":\" - \"#\"\n && c !== CHAR_COLON\n && c !== CHAR_SHARP;\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n return isPrintable(c) && c !== 0xFEFF\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {\n var i;\n var char;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(string.charCodeAt(0))\n && !isWhitespace(string.charCodeAt(string.length - 1));\n\n if (singleLineOnly) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n return plain && !testAmbiguousType(string)\n ? STYLE_PLAIN : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (string[0] === ' ' && indentPerLevel > 9) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey) {\n state.dump = (function () {\n if (string.length === 0) {\n return \"''\";\n }\n if (!state.noCompatMode &&\n DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n return \"'\" + string + \"'\";\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = (string[0] === ' ') ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char;\n var escapeSeq;\n\n for (var i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n result += !escapeSeq && isPrintable(char)\n ? string[i]\n : escapeSeq || encodeHex(char);\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level, object[index], false, false)) {\n if (index !== 0) _result += ', ';\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || index !== 0) {\n _result += generateNextLine(state, level);\n }\n _result += '- ' + state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (index !== 0) pairBuffer += ', ';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + ': ';\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || index !== 0) {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n state.tag = explicit ? type.tag : '?';\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n writeBlockSequence(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey);\n }\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n state.dump = '!<' + state.tag + '> ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n if (writeNode(state, 0, input, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nfunction safeDump(input, options) {\n return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n","'use strict';\n\n\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\n\n\nfunction deprecated(name) {\n return function () {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\n\n\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\n\n// Deprecated schema names from JS-YAML 2.0.x\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\n\n// Deprecated functions from JS-YAML 1.x.x\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","'use strict';\n\n\nvar yaml = require('./lib/js-yaml.js');\n\n\nmodule.exports = yaml;\n","import ymlParse from \"js-yaml\";\n\nexport default function(dom, data) {\n let localData = {};\n let el = dom.querySelector('script[type=\"text/front-matter\"]');\n if (el) {\n let text = el.textContent;\n localData = ymlParse.safeLoad(text);\n }\n\n data.title = localData.title ? localData.title : \"Untitled\";\n data.description = localData.description ? localData.description : \"No description.\";\n\n data.authors = localData.authors ? localData.authors : [];\n\n data.authors = data.authors.map((author, i) =>{\n let a = {};\n let name = Object.keys(author)[0];\n if ((typeof author) === \"string\") {\n name = author;\n } else {\n a.personalURL = author[name];\n }\n let names = name.split(\" \");\n a.name = name;\n a.firstName = names.slice(0, names.length - 1).join(\" \");\n a.lastName = names[names.length -1];\n if(localData.affiliations[i]) {\n let affiliation = Object.keys(localData.affiliations[i])[0];\n if ((typeof localData.affiliations[i]) === \"string\") {\n affiliation = localData.affiliations[i]\n } else {\n a.affiliationURL = localData.affiliations[i][affiliation];\n }\n a.affiliation = affiliation;\n }\n return a;\n });\n \n\n}\n","/* start bibtexParse 0.0.22 */\n\n//Original work by Henrik Muehe (c) 2010\n//\n//CommonJS port by Mikola Lysenko 2013\n//\n//Port to Browser lib by ORCID / RCPETERS\n//\n//Issues:\n//no comment handling within strings\n//no string concatenation\n//no variable values yet\n//Grammar implemented here:\n//bibtex -> (string | preamble | comment | entry)*;\n//string -> '@STRING' '{' key_equals_value '}';\n//preamble -> '@PREAMBLE' '{' value '}';\n//comment -> '@COMMENT' '{' value '}';\n//entry -> '@' key '{' key ',' key_value_list '}';\n//key_value_list -> key_equals_value (',' key_equals_value)*;\n//key_equals_value -> key '=' value;\n//value -> value_quotes | value_braces | key;\n//value_quotes -> '\"' .*? '\"'; // not quite\n//value_braces -> '{' .*? '\"'; // not quite\n(function(exports) {\n\n function BibtexParser() {\n \n this.months = [\"jan\", \"feb\", \"mar\", \"apr\", \"may\", \"jun\", \"jul\", \"aug\", \"sep\", \"oct\", \"nov\", \"dec\"];\n this.notKey = [',','{','}',' ','='];\n this.pos = 0;\n this.input = \"\";\n this.entries = new Array();\n\n this.currentEntry = \"\";\n\n this.setInput = function(t) {\n this.input = t;\n };\n\n this.getEntries = function() {\n return this.entries;\n };\n\n this.isWhitespace = function(s) {\n return (s == ' ' || s == '\\r' || s == '\\t' || s == '\\n');\n };\n\n this.match = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n this.pos += s.length;\n } else {\n throw \"Token mismatch, expected \" + s + \", found \"\n + this.input.substring(this.pos);\n };\n this.skipWhitespace(canCommentOut);\n };\n\n this.tryMatch = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n return true;\n } else {\n return false;\n };\n this.skipWhitespace(canCommentOut);\n };\n\n /* when search for a match all text can be ignored, not just white space */\n this.matchAt = function() {\n while (this.input.length > this.pos && this.input[this.pos] != '@') {\n this.pos++;\n };\n\n if (this.input[this.pos] == '@') {\n return true;\n };\n return false;\n };\n\n this.skipWhitespace = function(canCommentOut) {\n while (this.isWhitespace(this.input[this.pos])) {\n this.pos++;\n };\n if (this.input[this.pos] == \"%\" && canCommentOut == true) {\n while (this.input[this.pos] != \"\\n\") {\n this.pos++;\n };\n this.skipWhitespace(canCommentOut);\n };\n };\n\n this.value_braces = function() {\n var bracecount = 0;\n this.match(\"{\", false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '}') {\n if (bracecount > 0) {\n bracecount--;\n } else {\n var end = this.pos;\n this.match(\"}\", false);\n return this.input.substring(start, end);\n };\n } else if (this.input[this.pos] == '{') {\n bracecount++;\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value\";\n };\n };\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.value_comment = function() {\n var str = '';\n var brcktCnt = 0;\n while (!(this.tryMatch(\"}\", false) && brcktCnt == 0)) {\n str = str + this.input[this.pos];\n if (this.input[this.pos] == '{')\n brcktCnt++;\n if (this.input[this.pos] == '}')\n brcktCnt--;\n if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n this.pos++;\n };\n return str;\n };\n\n this.value_quotes = function() {\n this.match('\"', false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '\"') {\n var end = this.pos;\n this.match('\"', false);\n return this.input.substring(start, end);\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n }\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.single_value = function() {\n var start = this.pos;\n if (this.tryMatch(\"{\")) {\n return this.value_braces();\n } else if (this.tryMatch('\"')) {\n return this.value_quotes();\n } else {\n var k = this.key();\n if (k.match(\"^[0-9]+$\"))\n return k;\n else if (this.months.indexOf(k.toLowerCase()) >= 0)\n return k.toLowerCase();\n else\n throw \"Value expected:\" + this.input.substring(start) + ' for key: ' + k;\n \n };\n };\n\n this.value = function() {\n var values = [];\n values.push(this.single_value());\n while (this.tryMatch(\"#\")) {\n this.match(\"#\");\n values.push(this.single_value());\n };\n return values.join(\"\");\n };\n\n this.key = function() {\n var start = this.pos;\n while (true) {\n if (this.pos >= this.input.length) {\n throw \"Runaway key\";\n };\n // а-яА-Я is Cyrillic\n //console.log(this.input[this.pos]);\n if (this.notKey.indexOf(this.input[this.pos]) >= 0) {\n return this.input.substring(start, this.pos);\n } else {\n this.pos++;\n \n };\n };\n };\n\n this.key_equals_value = function() {\n var key = this.key();\n if (this.tryMatch(\"=\")) {\n this.match(\"=\");\n var val = this.value();\n return [ key, val ];\n } else {\n throw \"... = value expected, equals sign missing:\"\n + this.input.substring(this.pos);\n };\n };\n\n this.key_value_list = function() {\n var kv = this.key_equals_value();\n this.currentEntry['entryTags'] = {};\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n while (this.tryMatch(\",\")) {\n this.match(\",\");\n // fixes problems with commas at the end of a list\n if (this.tryMatch(\"}\")) {\n break;\n }\n ;\n kv = this.key_equals_value();\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n };\n };\n\n this.entry_body = function(d) {\n this.currentEntry = {};\n this.currentEntry['citationKey'] = this.key();\n this.currentEntry['entryType'] = d.substring(1);\n this.match(\",\");\n this.key_value_list();\n this.entries.push(this.currentEntry);\n };\n\n this.directive = function() {\n this.match(\"@\");\n return \"@\" + this.key();\n };\n\n this.preamble = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'PREAMBLE';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.comment = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'COMMENT';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.entry = function(d) {\n this.entry_body(d);\n };\n\n this.bibtex = function() {\n while (this.matchAt()) {\n var d = this.directive();\n this.match(\"{\");\n if (d == \"@STRING\") {\n this.string();\n } else if (d == \"@PREAMBLE\") {\n this.preamble();\n } else if (d == \"@COMMENT\") {\n this.comment();\n } else {\n this.entry(d);\n }\n this.match(\"}\");\n };\n };\n };\n \n exports.toJSON = function(bibtex) {\n var b = new BibtexParser();\n b.setInput(bibtex);\n b.bibtex();\n return b.entries;\n };\n\n /* added during hackathon don't hate on me */\n exports.toBibtex = function(json) {\n var out = '';\n for ( var i in json) {\n out += \"@\" + json[i].entryType;\n out += '{';\n if (json[i].citationKey)\n out += json[i].citationKey + ', ';\n if (json[i].entry)\n out += json[i].entry ;\n if (json[i].entryTags) {\n var tags = '';\n for (var jdx in json[i].entryTags) {\n if (tags.length != 0)\n tags += ', ';\n tags += jdx + '= {' + json[i].entryTags[jdx] + '}';\n }\n out += tags;\n }\n out += '}\\n\\n';\n }\n return out;\n \n };\n\n})(typeof exports === 'undefined' ? this['bibtexParse'] = {} : exports);\n\n/* end bibtexParse */\n","import bibtexParse from \"bibtex-parse-js\";\n\nexport default function(dom, data) {\n let el = dom.querySelector('script[type=\"text/bibliography\"]');\n let citations = [];\n let bibliography = {};\n //TODO If we don't have a local element, make a request for the document.\n if (el) {\n let rawBib = el.textContent;\n let parsed = bibtexParse.toJSON(rawBib);\n if(parsed) {\n parsed.forEach(e => {\n for (var k in e.entryTags){\n var val = e.entryTags[k];\n val = val.replace(/[\\t\\n ]+/g, \" \");\n val = val.replace(/{\\\\[\"^`\\.'acu~Hvs]( )?([a-zA-Z])}/g,\n (full, x, char) => char);\n val = val.replace(/{\\\\([a-zA-Z])}/g,\n (full, char) => char);\n e.entryTags[k] = val;\n }\n bibliography[e.citationKey] = e.entryTags;\n bibliography[e.citationKey].type = e.entryType;\n });\n }\n\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach(el => {\n let key = el.getAttribute(\"key\");\n if (key) {\n let citationKeys = key.split(\",\");\n citationKeys.forEach(key => {\n if (citations.indexOf(key) == -1){\n citations.push(key);\n if (!(key in bibliography)){\n console.warn(\"No bibliography entry found for: \" + key);\n }\n }\n });\n }\n });\n }\n data.bibliography = bibliography;\n data.citations = citations;\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(new Date(+start)); while (offseti(start, step), floori(start), start < stop)\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) while (--step >= 0) while (offseti(date, 1), !test(date)) {} // eslint-disable-line no-empty\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(Math.floor(date / durationSecond) * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(Math.floor(date / durationMinute) * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute} from \"./duration\";\n\nvar hour = interval(function(date) {\n var offset = date.getTimezoneOffset() * durationMinute % durationHour;\n if (offset < 0) offset += durationHour;\n date.setTime(Math.floor((+date - offset) / durationHour) * durationHour + offset);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval\";\nimport {durationWeek} from \"./duration\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {timeDay, timeSunday, timeMonday, timeYear, utcDay, utcSunday, utcMonday, utcYear} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"S\": formatSeconds,\n \"U\": formatWeekNumberSunday,\n \"w\": formatWeekdayNumber,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"S\": formatUTCSeconds,\n \"U\": formatUTCWeekNumberSunday,\n \"w\": formatUTCWeekdayNumber,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"S\": parseSeconds,\n \"U\": parseWeekNumberSunday,\n \"w\": parseWeekdayNumber,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0);\n if (i != string.length) return null;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n var day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?:\\:?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekdayNumber(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekdayNumber(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {timeFormat} from \"d3-time-format\";\n\nexport default function(dom, data) {\n\n data.authors = data.authors || [];\n\n // paths\n data.url = \"http://distill.pub/\" + data.distillPath;\n data.githubUrl = \"https://github.com/\" + data.githubPath;\n\n // Homepage\n //data.homepage = !post.noHomepage;\n data.journal = data.journal || {};\n\n // Dates\n if (data.publishedDate){//} && data.journal) {\n data.volume = data.publishedDate.getFullYear() - 2015;\n data.issue = data.publishedDate.getMonth() + 1;\n }\n\n data.publishedDate = data.publishedDate ? data.publishedDate : new Date(\"Invalid\");\n data.updatedDate = data.updatedDate ? data.updatedDate : new Date(\"Invalid\");\n\n data.publishedDateRFC\n let RFC = timeFormat(\"%a, %d %b %Y %H:%M:%S %Z\");\n let months = [\"Jan\", \"Feb\", \"March\", \"April\", \"May\", \"June\", \"July\", \"Aug\", \"Sept\", \"Oct\", \"Nov\", \"Dec\"];\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n data.publishedDateRFC = RFC(data.publishedDate);\n data.publishedYear = data.publishedDate.getFullYear();\n data.publishedMonth = months[data.publishedDate.getMonth()];\n data.publishedDay = data.publishedDate.getDate();\n data.publishedMonthPadded = zeroPad(data.publishedDate.getMonth() + 1);\n data.publishedDayPadded = zeroPad(data.publishedDate.getDate());\n data.updatedDateRFC = RFC(data.updatedDate);\n\n if (data.authors.length > 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \", et al.\";\n } else if (data.authors.length === 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \" & \" + data.authors[1].lastName;\n } else if (data.authors.length === 1) {\n data.concatenatedAuthors = data.authors[0].lastName\n }\n\n data.bibtexAuthors = data.authors.map(function(author){\n return author.lastName + \", \" + author.firstName;\n }).join(\" and \");\n\n data.slug = data.authors.length ? data.authors[0].lastName.toLowerCase() + data.publishedYear + data.title.split(\" \")[0].toLowerCase() : \"Untitled\";\n\n}\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","import favicon from './distill-favicon.base64';\nimport escape from 'escape-html';\n\nexport default function(dom, data) {\n let head = dom.querySelector(\"head\");\n let appendHead = html => appendHtml(head, html);\n\n function meta(name, content, force) {\n if (content || force)\n appendHead(` \\n`);\n }\n\n appendHead(`\n \n \n \n \n ${data.title}\n `);\n\n appendHead(`\n \n \n \n `);\n data.authors.forEach((a) => {\n appendHtml(head, `\n `)\n });\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n // if this is a proprer article, generate Google Scholar meta data\n if (data.doiSuffix){\n appendHead(`\n \\n`);\n\n meta(\"citation_title\", data.title);\n //meta(\"citation_fulltext_html_url\", data.url);\n meta(\"citation_volume\", data.volume);\n meta(\"citation_issue\", data.issue);\n meta(\"citation_firstpage\", data.doiSuffix? `e${data.doiSuffix}` : undefined);\n meta(\"citation_doi\", data.doi);\n\n let journal = data.journal || {};\n meta(\"citation_journal_title\", journal.full_title || journal.title);\n meta(\"citation_journal_abbrev\", journal.abbrev_title);\n meta(\"citation_issn\", journal.issn);\n meta(\"citation_publisher\", journal.publisher);\n meta(\"citation_fulltext_world_readable\", \"\", true);\n\n if (data.publishedDate){\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n meta(\"citation_online_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n // Should we do something different here?\n meta(\"citation_publication_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n }\n\n (data.authors || []).forEach((a) => {\n meta(\"citation_author\", `${a.lastName}, ${a.firstName}`);\n meta(\"citation_author_institution\", a.affiliation);\n });\n\n if (data.citations) {\n data.citations.forEach(key => {\n let d = data.bibliography[key];\n if(!d) {\n console.warn(\"No bibliography data fround for \" + key)\n } else {\n meta(\"citation_reference\", citation_meta_content(data.bibliography[key]) )\n };\n });\n }\n }\n}\n\nfunction appendHtml(el, html) {\n el.innerHTML += html;\n}\n\nfunction citation_meta_content(ref){\n // Special test for arxiv\n var content = `citation_title=${ref.title};`;\n \n let name_strings = ref.author.split(\" and \").forEach(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1].trim();\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n content += `citation_author=${firsts} ${last};`;\n });\n \n if (\"year\" in ref) {\n content += `citation_publication_date=${ref.year};`;\n }\n \n var arxiv_id_search = /https?:\\/\\/arxiv\\.org\\/pdf\\/([0-9]*\\.[0-9]*)\\.pdf/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /https?:\\/\\/arxiv\\.org\\/abs\\/([0-9]*\\.[0-9]*)/.exec(ref.url);\n if (arxiv_id_search && arxiv_id_search[1]){\n content += `citation_arxiv_id=${arxiv_id_search[1]};`;\n return content;\n } \n if (\"journal\" in ref){\n content += `citation_journal_title=${ref.journal};`;\n }\n if (\"volume\" in ref) {\n content += `citation_volume=${ref.volume};`;\n }\n if (\"issue\" in ref || \"number\" in ref){\n content += `citation_number=${ref.issue || ref.number};`;\n }\n /*content += `citation_first_page=${};`;\n content += `citation_publication_date=${};`;*/\n return content;\n}\n","const html = `\n\n
    This article is a draft, awaiting review for publication in Distill
    \n`;\n\nexport default function(dom, data) {\n let banner = dom.createElement(\"dt-banner\");\n banner.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(banner, b.firstChild);\n banner.addEventListener(\"click\", function() {\n banner.style.display = \"none\";\n });\n}\n","import logo from \"./distill-logo.svg\";\n\nconst html = `\n\n\n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-header\");\n if(el) {\n el.innerHTML = html;\n } else {\n let header = dom.createElement(\"dt-header\");\n header.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(header, b.firstChild);\n }\n}\n","/*!\n * mustache.js - Logic-less {{mustache}} templates with JavaScript\n * http://github.com/janl/mustache.js\n */\n\n/*global define: false Mustache: true*/\n\n(function defineMustache (global, factory) {\n if (typeof exports === 'object' && exports && typeof exports.nodeName !== 'string') {\n factory(exports); // CommonJS\n } else if (typeof define === 'function' && define.amd) {\n define(['exports'], factory); // AMD\n } else {\n global.Mustache = {};\n factory(global.Mustache); // script, wsh, asp\n }\n}(this, function mustacheFactory (mustache) {\n\n var objectToString = Object.prototype.toString;\n var isArray = Array.isArray || function isArrayPolyfill (object) {\n return objectToString.call(object) === '[object Array]';\n };\n\n function isFunction (object) {\n return typeof object === 'function';\n }\n\n /**\n * More correct typeof string handling array\n * which normally returns typeof 'object'\n */\n function typeStr (obj) {\n return isArray(obj) ? 'array' : typeof obj;\n }\n\n function escapeRegExp (string) {\n return string.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n }\n\n /**\n * Null safe way of checking whether or not an object,\n * including its prototype, has a given property\n */\n function hasProperty (obj, propName) {\n return obj != null && typeof obj === 'object' && (propName in obj);\n }\n\n // Workaround for https://issues.apache.org/jira/browse/COUCHDB-577\n // See https://github.com/janl/mustache.js/issues/189\n var regExpTest = RegExp.prototype.test;\n function testRegExp (re, string) {\n return regExpTest.call(re, string);\n }\n\n var nonSpaceRe = /\\S/;\n function isWhitespace (string) {\n return !testRegExp(nonSpaceRe, string);\n }\n\n var entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n function escapeHtml (string) {\n return String(string).replace(/[&<>\"'`=\\/]/g, function fromEntityMap (s) {\n return entityMap[s];\n });\n }\n\n var whiteRe = /\\s*/;\n var spaceRe = /\\s+/;\n var equalsRe = /\\s*=/;\n var curlyRe = /\\s*\\}/;\n var tagRe = /#|\\^|\\/|>|\\{|&|=|!/;\n\n /**\n * Breaks up the given `template` string into a tree of tokens. If the `tags`\n * argument is given here it must be an array with two string values: the\n * opening and closing tags used in the template (e.g. [ \"<%\", \"%>\" ]). Of\n * course, the default is to use mustaches (i.e. mustache.tags).\n *\n * A token is an array with at least 4 elements. The first element is the\n * mustache symbol that was used inside the tag, e.g. \"#\" or \"&\". If the tag\n * did not contain a symbol (i.e. {{myValue}}) this element is \"name\". For\n * all text that appears outside a symbol this element is \"text\".\n *\n * The second element of a token is its \"value\". For mustache tags this is\n * whatever else was inside the tag besides the opening symbol. For text tokens\n * this is the text itself.\n *\n * The third and fourth elements of the token are the start and end indices,\n * respectively, of the token in the original template.\n *\n * Tokens that are the root node of a subtree contain two more elements: 1) an\n * array of tokens in the subtree and 2) the index in the original template at\n * which the closing tag for that section begins.\n */\n function parseTemplate (template, tags) {\n if (!template)\n return [];\n\n var sections = []; // Stack to hold section tokens\n var tokens = []; // Buffer to hold the tokens\n var spaces = []; // Indices of whitespace tokens on the current line\n var hasTag = false; // Is there a {{tag}} on the current line?\n var nonSpace = false; // Is there a non-space char on the current line?\n\n // Strips all whitespace tokens array for the current line\n // if there was a {{#tag}} on it and otherwise only space.\n function stripSpace () {\n if (hasTag && !nonSpace) {\n while (spaces.length)\n delete tokens[spaces.pop()];\n } else {\n spaces = [];\n }\n\n hasTag = false;\n nonSpace = false;\n }\n\n var openingTagRe, closingTagRe, closingCurlyRe;\n function compileTags (tagsToCompile) {\n if (typeof tagsToCompile === 'string')\n tagsToCompile = tagsToCompile.split(spaceRe, 2);\n\n if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)\n throw new Error('Invalid tags: ' + tagsToCompile);\n\n openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\\\s*');\n closingTagRe = new RegExp('\\\\s*' + escapeRegExp(tagsToCompile[1]));\n closingCurlyRe = new RegExp('\\\\s*' + escapeRegExp('}' + tagsToCompile[1]));\n }\n\n compileTags(tags || mustache.tags);\n\n var scanner = new Scanner(template);\n\n var start, type, value, chr, token, openSection;\n while (!scanner.eos()) {\n start = scanner.pos;\n\n // Match any text between tags.\n value = scanner.scanUntil(openingTagRe);\n\n if (value) {\n for (var i = 0, valueLength = value.length; i < valueLength; ++i) {\n chr = value.charAt(i);\n\n if (isWhitespace(chr)) {\n spaces.push(tokens.length);\n } else {\n nonSpace = true;\n }\n\n tokens.push([ 'text', chr, start, start + 1 ]);\n start += 1;\n\n // Check for whitespace on the current line.\n if (chr === '\\n')\n stripSpace();\n }\n }\n\n // Match the opening tag.\n if (!scanner.scan(openingTagRe))\n break;\n\n hasTag = true;\n\n // Get the tag type.\n type = scanner.scan(tagRe) || 'name';\n scanner.scan(whiteRe);\n\n // Get the tag value.\n if (type === '=') {\n value = scanner.scanUntil(equalsRe);\n scanner.scan(equalsRe);\n scanner.scanUntil(closingTagRe);\n } else if (type === '{') {\n value = scanner.scanUntil(closingCurlyRe);\n scanner.scan(curlyRe);\n scanner.scanUntil(closingTagRe);\n type = '&';\n } else {\n value = scanner.scanUntil(closingTagRe);\n }\n\n // Match the closing tag.\n if (!scanner.scan(closingTagRe))\n throw new Error('Unclosed tag at ' + scanner.pos);\n\n token = [ type, value, start, scanner.pos ];\n tokens.push(token);\n\n if (type === '#' || type === '^') {\n sections.push(token);\n } else if (type === '/') {\n // Check section nesting.\n openSection = sections.pop();\n\n if (!openSection)\n throw new Error('Unopened section \"' + value + '\" at ' + start);\n\n if (openSection[1] !== value)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + start);\n } else if (type === 'name' || type === '{' || type === '&') {\n nonSpace = true;\n } else if (type === '=') {\n // Set the tags for the next time around.\n compileTags(value);\n }\n }\n\n // Make sure there are no open sections when we're done.\n openSection = sections.pop();\n\n if (openSection)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + scanner.pos);\n\n return nestTokens(squashTokens(tokens));\n }\n\n /**\n * Combines the values of consecutive text tokens in the given `tokens` array\n * to a single token.\n */\n function squashTokens (tokens) {\n var squashedTokens = [];\n\n var token, lastToken;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n if (token) {\n if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {\n lastToken[1] += token[1];\n lastToken[3] = token[3];\n } else {\n squashedTokens.push(token);\n lastToken = token;\n }\n }\n }\n\n return squashedTokens;\n }\n\n /**\n * Forms the given array of `tokens` into a nested tree structure where\n * tokens that represent a section have two additional items: 1) an array of\n * all tokens that appear in that section and 2) the index in the original\n * template that represents the end of that section.\n */\n function nestTokens (tokens) {\n var nestedTokens = [];\n var collector = nestedTokens;\n var sections = [];\n\n var token, section;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n switch (token[0]) {\n case '#':\n case '^':\n collector.push(token);\n sections.push(token);\n collector = token[4] = [];\n break;\n case '/':\n section = sections.pop();\n section[5] = token[2];\n collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;\n break;\n default:\n collector.push(token);\n }\n }\n\n return nestedTokens;\n }\n\n /**\n * A simple string scanner that is used by the template parser to find\n * tokens in template strings.\n */\n function Scanner (string) {\n this.string = string;\n this.tail = string;\n this.pos = 0;\n }\n\n /**\n * Returns `true` if the tail is empty (end of string).\n */\n Scanner.prototype.eos = function eos () {\n return this.tail === '';\n };\n\n /**\n * Tries to match the given regular expression at the current position.\n * Returns the matched text if it can match, the empty string otherwise.\n */\n Scanner.prototype.scan = function scan (re) {\n var match = this.tail.match(re);\n\n if (!match || match.index !== 0)\n return '';\n\n var string = match[0];\n\n this.tail = this.tail.substring(string.length);\n this.pos += string.length;\n\n return string;\n };\n\n /**\n * Skips all text until the given regular expression can be matched. Returns\n * the skipped string, which is the entire tail if no match can be made.\n */\n Scanner.prototype.scanUntil = function scanUntil (re) {\n var index = this.tail.search(re), match;\n\n switch (index) {\n case -1:\n match = this.tail;\n this.tail = '';\n break;\n case 0:\n match = '';\n break;\n default:\n match = this.tail.substring(0, index);\n this.tail = this.tail.substring(index);\n }\n\n this.pos += match.length;\n\n return match;\n };\n\n /**\n * Represents a rendering context by wrapping a view object and\n * maintaining a reference to the parent context.\n */\n function Context (view, parentContext) {\n this.view = view;\n this.cache = { '.': this.view };\n this.parent = parentContext;\n }\n\n /**\n * Creates a new context using the given view with this context\n * as the parent.\n */\n Context.prototype.push = function push (view) {\n return new Context(view, this);\n };\n\n /**\n * Returns the value of the given name in this context, traversing\n * up the context hierarchy if the value is absent in this context's view.\n */\n Context.prototype.lookup = function lookup (name) {\n var cache = this.cache;\n\n var value;\n if (cache.hasOwnProperty(name)) {\n value = cache[name];\n } else {\n var context = this, names, index, lookupHit = false;\n\n while (context) {\n if (name.indexOf('.') > 0) {\n value = context.view;\n names = name.split('.');\n index = 0;\n\n /**\n * Using the dot notion path in `name`, we descend through the\n * nested objects.\n *\n * To be certain that the lookup has been successful, we have to\n * check if the last object in the path actually has the property\n * we are looking for. We store the result in `lookupHit`.\n *\n * This is specially necessary for when the value has been set to\n * `undefined` and we want to avoid looking up parent contexts.\n **/\n while (value != null && index < names.length) {\n if (index === names.length - 1)\n lookupHit = hasProperty(value, names[index]);\n\n value = value[names[index++]];\n }\n } else {\n value = context.view[name];\n lookupHit = hasProperty(context.view, name);\n }\n\n if (lookupHit)\n break;\n\n context = context.parent;\n }\n\n cache[name] = value;\n }\n\n if (isFunction(value))\n value = value.call(this.view);\n\n return value;\n };\n\n /**\n * A Writer knows how to take a stream of tokens and render them to a\n * string, given a context. It also maintains a cache of templates to\n * avoid the need to parse the same template twice.\n */\n function Writer () {\n this.cache = {};\n }\n\n /**\n * Clears all cached templates in this writer.\n */\n Writer.prototype.clearCache = function clearCache () {\n this.cache = {};\n };\n\n /**\n * Parses and caches the given `template` and returns the array of tokens\n * that is generated from the parse.\n */\n Writer.prototype.parse = function parse (template, tags) {\n var cache = this.cache;\n var tokens = cache[template];\n\n if (tokens == null)\n tokens = cache[template] = parseTemplate(template, tags);\n\n return tokens;\n };\n\n /**\n * High-level method that is used to render the given `template` with\n * the given `view`.\n *\n * The optional `partials` argument may be an object that contains the\n * names and templates of partials that are used in the template. It may\n * also be a function that is used to load partial templates on the fly\n * that takes a single argument: the name of the partial.\n */\n Writer.prototype.render = function render (template, view, partials) {\n var tokens = this.parse(template);\n var context = (view instanceof Context) ? view : new Context(view);\n return this.renderTokens(tokens, context, partials, template);\n };\n\n /**\n * Low-level method that renders the given array of `tokens` using\n * the given `context` and `partials`.\n *\n * Note: The `originalTemplate` is only ever used to extract the portion\n * of the original template that was contained in a higher-order section.\n * If the template doesn't use higher-order sections, this argument may\n * be omitted.\n */\n Writer.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate) {\n var buffer = '';\n\n var token, symbol, value;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n value = undefined;\n token = tokens[i];\n symbol = token[0];\n\n if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate);\n else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate);\n else if (symbol === '>') value = this.renderPartial(token, context, partials, originalTemplate);\n else if (symbol === '&') value = this.unescapedValue(token, context);\n else if (symbol === 'name') value = this.escapedValue(token, context);\n else if (symbol === 'text') value = this.rawValue(token);\n\n if (value !== undefined)\n buffer += value;\n }\n\n return buffer;\n };\n\n Writer.prototype.renderSection = function renderSection (token, context, partials, originalTemplate) {\n var self = this;\n var buffer = '';\n var value = context.lookup(token[1]);\n\n // This function is used to render an arbitrary template\n // in the current context by higher-order sections.\n function subRender (template) {\n return self.render(template, context, partials);\n }\n\n if (!value) return;\n\n if (isArray(value)) {\n for (var j = 0, valueLength = value.length; j < valueLength; ++j) {\n buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate);\n }\n } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {\n buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate);\n } else if (isFunction(value)) {\n if (typeof originalTemplate !== 'string')\n throw new Error('Cannot use higher-order sections without the original template');\n\n // Extract the portion of the original template that the section contains.\n value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);\n\n if (value != null)\n buffer += value;\n } else {\n buffer += this.renderTokens(token[4], context, partials, originalTemplate);\n }\n return buffer;\n };\n\n Writer.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate) {\n var value = context.lookup(token[1]);\n\n // Use JavaScript's definition of falsy. Include empty arrays.\n // See https://github.com/janl/mustache.js/issues/186\n if (!value || (isArray(value) && value.length === 0))\n return this.renderTokens(token[4], context, partials, originalTemplate);\n };\n\n Writer.prototype.renderPartial = function renderPartial (token, context, partials) {\n if (!partials) return;\n\n var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\n if (value != null)\n return this.renderTokens(this.parse(value), context, partials, value);\n };\n\n Writer.prototype.unescapedValue = function unescapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return value;\n };\n\n Writer.prototype.escapedValue = function escapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return mustache.escape(value);\n };\n\n Writer.prototype.rawValue = function rawValue (token) {\n return token[1];\n };\n\n mustache.name = 'mustache.js';\n mustache.version = '2.3.0';\n mustache.tags = [ '{{', '}}' ];\n\n // All high-level mustache.* functions use this writer.\n var defaultWriter = new Writer();\n\n /**\n * Clears all cached templates in the default writer.\n */\n mustache.clearCache = function clearCache () {\n return defaultWriter.clearCache();\n };\n\n /**\n * Parses and caches the given template in the default writer and returns the\n * array of tokens it contains. Doing this ahead of time avoids the need to\n * parse templates on the fly as they are rendered.\n */\n mustache.parse = function parse (template, tags) {\n return defaultWriter.parse(template, tags);\n };\n\n /**\n * Renders the `template` with the given `view` and `partials` using the\n * default writer.\n */\n mustache.render = function render (template, view, partials) {\n if (typeof template !== 'string') {\n throw new TypeError('Invalid template! Template should be a \"string\" ' +\n 'but \"' + typeStr(template) + '\" was given as the first ' +\n 'argument for mustache#render(template, view, partials)');\n }\n\n return defaultWriter.render(template, view, partials);\n };\n\n // This is here for backwards compatibility with 0.4.x.,\n /*eslint-disable */ // eslint wants camel cased function name\n mustache.to_html = function to_html (template, view, partials, send) {\n /*eslint-enable*/\n\n var result = mustache.render(template, view, partials);\n\n if (isFunction(send)) {\n send(result);\n } else {\n return result;\n }\n };\n\n // Export the escaping function so that the user may override it.\n // See https://github.com/janl/mustache.js/issues/244\n mustache.escape = escapeHtml;\n\n // Export these mainly for testing, but also for advanced usage.\n mustache.Scanner = Scanner;\n mustache.Context = Context;\n mustache.Writer = Writer;\n\n return mustache;\n}));\n","import mustache from \"mustache\";\n\nconst html = `\n\n\n`;\n\nconst template = `\n
    \n
    \n {{#authors}}\n
    \n {{#personalURL}}\n {{name}}\n {{/personalURL}}\n {{^personalURL}}\n
    {{name}}
    \n {{/personalURL}}\n {{#affiliation}}\n {{#affiliationURL}}\n {{affiliation}}\n {{/affiliationURL}}\n {{^affiliationURL}}\n
    {{affiliation}}
    \n {{/affiliationURL}}\n {{/affiliation}}\n
    \n {{/authors}}\n
    \n
    \n
    {{publishedMonth}}. {{publishedDay}}
    \n
    {{publishedYear}}
    \n
    \n \n
    Citation:
    \n
    {{concatenatedAuthors}}, {{publishedYear}}
    \n
    \n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-byline');\n if (el) {\n el.innerHTML = html + mustache.render(template, data);\n }\n}\n","const html = `\n\n\n
    \n

    References

    \n \n

    Errors, Reuse, and Citation

    \n

    If you see mistakes or want to suggest changes, please create an issue on GitHub.

    \n

    Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on GitHub. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: “Figure from …”.

    \n

    For attribution in academic contexts, please cite this work as

    \n
    \n  

    BibTeX citation

    \n
    \n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-appendix')\n if (el) {\n let oldHtml = el.innerHTML;\n el.innerHTML = html;\n let div = el.querySelector(\"div.l-body\")\n\n if (dom.querySelector(\"dt-fn\")) {\n div.innerHTML = `

    Footnotes

    ` + div.innerHTML;\n }\n\n div.innerHTML = oldHtml + div.innerHTML;\n if (data.githubCompareUpdatesUrl) {\n div.innerHTML = `

    Updates

    View all changes to this article since it was first published.

    ` + div.innerHTML;\n }\n\n el.querySelector(\"a.github\").setAttribute(\"href\", data.githubUrl);\n el.querySelector(\"a.github-issue\").setAttribute(\"href\", data.githubUrl + \"/issues/new\");\n el.querySelector(\".citation.short\").textContent = data.concatenatedAuthors + \", \" + '\"' + data.title + '\", Distill, ' + data.publishedYear + \".\";\n var bibtex = \"@article{\" + data.slug + \",\\n\";\n bibtex += \" author = {\" + data.bibtexAuthors + \"},\\n\";\n bibtex += \" title = {\" + data.title + \"},\\n\";\n bibtex += \" journal = {Distill},\\n\";\n bibtex += \" year = {\" + data.publishedYear + \"},\\n\";\n bibtex += \" note = {\" + data.url + \"}\\n\";\n bibtex += \"}\";\n el.querySelector(\".citation.long\").textContent = bibtex;\n }\n\n}\n","import logo from \"./distill-logo.svg\";\n\nlet html = `\n\n\n
    \n \n ${logo}\n Distill\n is dedicated to clear explanations of machine learning\n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-footer\");\n if(el) {\n el.innerHTML = html;\n } else {\n let footer = dom.createElement(\"dt-footer\");\n footer.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.appendChild(footer);\n }\n}\n","export default function(dom, data) {\n let css = `\n dt-cite {\n color: hsla(206, 90%, 20%, 0.7);\n }\n dt-cite .citation-number {\n cursor: default;\n white-space: nowrap;\n font-family: -apple-system, BlinkMacSystemFont, \"Roboto\", Helvetica, sans-serif;\n font-size: 75%;\n color: hsla(206, 90%, 20%, 0.7);\n display: inline-block;\n line-height: 1.1em;\n text-align: center;\n position: relative;\n top: -2px;\n margin: 0 2px;\n }\n figcaption dt-cite .citation-number {\n font-size: 11px;\n font-weight: normal;\n top: -2px;\n line-height: 1em;\n }\n `;\n\n let style = dom.createElement(\"style\");\n style.textContent = css;\n dom.querySelector(\"body\").appendChild(style);\n\n let citations = data.citations;\n /*if (data.citations) {\n citations = Object.keys(data.citations).map(c => data.citations[c]);\n citations.sort((a, b) => {\n return a.author.localeCompare(b.author);\n });\n }*/\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach((el,n) => {\n var key = el.getAttribute(\"key\");\n if (key) {\n var keys = key.split(\",\");\n var cite_string = inline_cite_short(keys);\n var cite_hover_str = \"\";\n keys.map((key,n) => {\n if (n>0) cite_hover_str += \"

    \";\n cite_hover_str += hover_cite(data.bibliography[key]);\n });\n cite_hover_str = cite_hover_str.replace(/\"/g, \"'\")\n var orig_string = el.innerHTML;\n if (orig_string != \"\") orig_string += \" \";\n el.innerHTML = `${orig_string}${cite_string}`;\n }\n });\n\n let bibEl = dom.querySelector(\"dt-bibliography\");\n if (bibEl) {\n let ol = dom.createElement(\"ol\");\n citations.forEach(key => {\n let el = dom.createElement(\"li\");\n el.innerHTML = bibliography_cite(data.bibliography[key]);\n ol.appendChild(el);\n })\n bibEl.appendChild(ol);\n }\n\n function inline_cite_short(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var n = data.citations.indexOf(key)+1;\n return \"\"+n;\n } else {\n return \"?\";\n }\n }\n return \"[\"+keys.map(cite_string).join(\", \")+\"]\";\n }\n\n function inline_cite_long(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var ent = data.bibliography[key];\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var year = ent.year;\n if (names.length == 1) return names[0] + \", \" + year;\n if (names.length == 2) return names[0] + \" & \" + names[1] + \", \" + year;\n if (names.length > 2) return names[0] + \", et al., \" + year;\n } else {\n return \"?\";\n }\n }\n return keys.map(cite_string).join(\", \");\n }\n\n function author_string(ent, template, sep, finalSep){\n var names = ent.author.split(\" and \");\n let name_strings = names.map(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1];\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n var initials = \"\";\n if (firsts != undefined) {\n initials = firsts.trim().split(\" \").map(s => s.trim()[0]);\n initials = initials.join(\".\")+\".\";\n }\n return template.replace(\"${F}\", firsts)\n .replace(\"${L}\", last)\n .replace(\"${I}\", initials);\n });\n if (names.length > 1) {\n var str = name_strings.slice(0, names.length-1).join(sep);\n str += (finalSep || sep) + name_strings[names.length-1];\n return str;\n } else {\n return name_strings[0];\n }\n }\n\n function venue_string(ent) {\n var cite = (ent.journal || ent.booktitle || \"\")\n if (\"volume\" in ent){\n var issue = ent.issue || ent.number;\n issue = (issue != undefined)? \"(\"+issue+\")\" : \"\";\n cite += \", Vol \" + ent.volume + issue;\n }\n if (\"pages\" in ent){\n cite += \", pp. \" + ent.pages\n }\n if (cite != \"\") cite += \". \"\n if (\"publisher\" in ent){\n cite += ent.publisher;\n if (cite[cite.length-1] != \".\") cite += \".\";\n }\n return cite;\n }\n\n function link_string(ent){\n if (\"url\" in ent){\n var url = ent.url;\n var arxiv_match = (/arxiv\\.org\\/abs\\/([0-9\\.]*)/).exec(url);\n if (arxiv_match != null){\n url = `http://arxiv.org/pdf/${arxiv_match[1]}.pdf`;\n }\n\n if (url.slice(-4) == \".pdf\"){\n var label = \"PDF\";\n } else if (url.slice(-5) == \".html\") {\n var label = \"HTML\";\n }\n return `  [${label||\"link\"}]`;\n }/* else if (\"doi\" in ent){\n return `  [DOI]`;\n }*/ else {\n return \"\";\n }\n }\n function doi_string(ent, new_line){\n if (\"doi\" in ent) {\n return `${new_line?\"
    \":\"\"} DOI: ${ent.doi}`;\n } else {\n return \"\";\n }\n }\n\n function bibliography_cite(ent, fancy){\n if (ent){\n var cite = \"\" + ent.title + \" \"\n cite += link_string(ent) + \"
    \";\n cite += author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += venue_string(ent);\n cite += doi_string(ent);\n return cite\n /*var cite = author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += \"\" + ent.title + \". \";\n cite += venue_string(ent);\n cite += doi_string(ent);\n cite += link_string(ent);\n return cite*/\n } else {\n return \"?\";\n }\n }\n\n function hover_cite(ent){\n if (ent){\n var cite = \"\";\n cite += \"\" + ent.title + \"\";\n cite += link_string(ent);\n cite += \"
    \"\n\n var a_str = author_string(ent, \"${I} ${L}\", \", \") + \".\";\n var v_str = venue_string(ent).trim() + \" \" + ent.year + \". \" + doi_string(ent, true);\n\n if ((a_str+v_str).length < Math.min(40, ent.title.length)) {\n cite += a_str + \" \" + v_str;\n } else {\n cite += a_str + \"
    \" + v_str;\n }\n return cite;\n } else {\n return \"?\";\n }\n }\n\n\n //https://scholar.google.com/scholar?q=allintitle%3ADocument+author%3Aolah\n function get_GS_URL(ent){\n if (ent){\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var title = ent.title.split(\" \")//.replace(/[,:]/, \"\")\n var url = \"http://search.labs.crossref.org/dois?\"//\"\"https://scholar.google.com/scholar?\"\n url += uris({q: names.join(\" \") + \" \" + title.join(\" \")})\n }\n\n }\n}\n","export default function(dom, data) {\n\n var fnTags = [].slice.apply(dom.querySelectorAll(\"dt-fn\"));\n var fnContent = [];\n fnTags.forEach((el,n) => {\n var content = el.innerHTML;\n fnContent.push(content);\n n = (n+1)+\"\";\n var key = \"fn-\"+n;\n var escaped_content = content.replace(/\"/g, \"'\");\n el.innerHTML = `${n}`;\n });\n\n let fnList = dom.querySelector(\"dt-fn-list\");\n if (fnList) {\n let ol = dom.createElement(\"ol\");\n fnContent.forEach(content => {\n let el = dom.createElement(\"li\");\n el.innerHTML = content;\n ol.appendChild(el);\n })\n fnList.appendChild(ol);\n }\n\n}\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n */\n\n;(function() {\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^( *[-*_]){3,} *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,\n nptable: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n blockquote: /^( *>[^\\n]+(\\n(?!def)[^\\n]+)*\\n*)+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n table: noop,\n paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,\n text: /^[^\\n]+/\n};\n\nblock.bullet = /(?:[*+-]|\\d+\\.)/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = replace(block.item, 'gm')\n (/bull/g, block.bullet)\n ();\n\nblock.list = replace(block.list)\n (/bull/g, block.bullet)\n ('hr', '\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))')\n ('def', '\\\\n+(?=' + block.def.source + ')')\n ();\n\nblock.blockquote = replace(block.blockquote)\n ('def', block.def)\n ();\n\nblock._tag = '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'\n + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'\n + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|[^\\\\w\\\\s@]*@)\\\\b';\n\nblock.html = replace(block.html)\n ('comment', //)\n ('closed', /<(tag)[\\s\\S]+?<\\/\\1>/)\n ('closing', /])*?>/)\n (/tag/g, block._tag)\n ();\n\nblock.paragraph = replace(block.paragraph)\n ('hr', block.hr)\n ('heading', block.heading)\n ('lheading', block.lheading)\n ('blockquote', block.blockquote)\n ('tag', '<' + block._tag)\n ('def', block.def)\n ();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]*?)\\s*\\1 *(?:\\n+|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = replace(block.paragraph)\n ('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n ();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top, bq) {\n var src = src.replace(/^ +$/gm, '')\n , next\n , loose\n , cap\n , bull\n , b\n , item\n , space\n , i\n , l;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic\n ? cap.replace(/\\n+$/, '')\n : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top, true);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n\n this.tokens.push({\n type: 'list_start',\n ordered: bull.length > 1\n });\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n this.tokens.push({\n type: loose\n ? 'loose_item_start'\n : 'list_item_start'\n });\n\n // Recurse.\n this.token(item, false, bq);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if ((!bq && top) && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.links[cap[1].toLowerCase()] = {\n href: cap[2],\n title: cap[3]\n };\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i]\n .replace(/^ *\\| *| *\\| *$/g, '')\n .split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n autolink: /^<([^ >]+(@|:\\/)[^ >]+)>/,\n url: noop,\n tag: /^|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^\\b_((?:[^_]|__)+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n code: /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n text: /^[\\s\\S]+?(?=[\\\\?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\ninline.link = replace(inline.link)\n ('inside', inline._inside)\n ('href', inline._href)\n ();\n\ninline.reflink = replace(inline.reflink)\n ('inside', inline._inside)\n ();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: replace(inline.escape)('])', '~|])')(),\n url: /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n text: replace(inline.text)\n (']|', '~]|')\n ('|', '|https?://|')\n ()\n});\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: replace(inline.br)('{2,}', '*')(),\n text: replace(inline.gfm.text)('{2,}', '*')()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer;\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new\n Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n var out = ''\n , link\n , text\n , href\n , cap;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += cap[1];\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = cap[1].charAt(6) === ':'\n ? this.mangle(cap[1].substring(7))\n : this.mangle(cap[1]);\n href = this.mangle('mailto:') + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n src = src.substring(cap[0].length);\n text = escape(cap[1]);\n href = text;\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^/i.test(cap[0])) {\n this.inLink = false;\n }\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0]\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out += this.outputLink(cap, {\n href: cap[2],\n title: cap[3]\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2], true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = escape(link.href)\n , title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = ''\n , l = text.length\n , i = 0\n , ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || {};\n}\n\nRenderer.prototype.code = function(code, lang, escaped) {\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '\\n
    ';\n }\n\n return '
    '\n    + (escaped ? code : escape(code, true))\n    + '\\n
    \\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '
    \\n' + quote + '
    \\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw) {\n return ''\n + text\n + '\\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n};\n\nRenderer.prototype.list = function(body, ordered) {\n var type = ordered ? 'ol' : 'ul';\n return '<' + type + '>\\n' + body + '\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '
  • ' + text + '
  • \\n';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '

    ' + text + '

    \\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + '\\n'\n + body\n + '\\n'\n + '
    \\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '\\n' + content + '\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' style=\"text-align:' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.em = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? '
    ' : '
    ';\n};\n\nRenderer.prototype.del = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n if (this.options.sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return '';\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0) {\n return '';\n }\n }\n var out = '
    ';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n var out = '\"'' : '>';\n return out;\n};\n\nRenderer.prototype.text = function(text) {\n return text;\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer;\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options, renderer) {\n var parser = new Parser(options, renderer);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options, this.renderer);\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n this.token.text);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = ''\n , body = ''\n , i\n , row\n , cell\n , flags\n , j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n flags = { header: true, align: this.token.align[i] };\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n var body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n var body = ''\n , ordered = this.token.ordered;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered);\n }\n case 'list_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'loose_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'html': {\n var html = !this.token.pre && !this.options.pedantic\n ? this.inline.output(this.token.text)\n : this.token.text;\n return this.renderer.html(html);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n }\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n return html\n .replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\nfunction unescape(html) {\n\t// explicitly match decimal, hex, and named HTML entities \n return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/g, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction replace(regex, opt) {\n regex = regex.source;\n opt = opt || '';\n return function self(name, val) {\n if (!name) return new RegExp(regex, opt);\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return self;\n };\n}\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1\n , target\n , key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n\n var highlight = opt.highlight\n , tokens\n , pending\n , i = 0;\n\n try {\n tokens = Lexer.lex(src, opt)\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/chjj/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occured:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n sanitizer: null,\n mangle: true,\n smartLists: false,\n silent: false,\n highlight: null,\n langPrefix: 'lang-',\n smartypants: false,\n headerPrefix: '',\n renderer: new Renderer,\n xhtml: false\n};\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.parse = marked;\n\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n this.marked = marked;\n}\n\n}).call(function() {\n return this || (typeof window !== 'undefined' ? window : global);\n}());\n","import marked from 'marked';\n\nmarked.setOptions({\n gfm: true,\n smartypants: true\n});\n\nexport default function(dom, data) {\n let markdownElements = [].slice.call(dom.querySelectorAll('[markdown]'));\n markdownElements.forEach(el => {\n let content = el.innerHTML;\n // Set default indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n\n el.innerHTML = marked(content);\n });\n}\n","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = _self.Prism = {\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/ text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\tbreak tokenloop;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t delNum = 1;\n\n\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t to = match.index + match[0].length,\n\t\t\t\t\t\t k = i,\n\t\t\t\t\t\t p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && p < to; ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t match = match[0].slice(lookbehindLength),\n\t\t\t\t\t to = from + match.length,\n\t\t\t\t\t before = str.slice(0, from),\n\t\t\t\t\t after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (env.type == 'comment') {\n\t\tenv.attributes['spellcheck'] = 'true';\n\t}\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n \t// In worker\n\t_self.addEventListener('message', function(evt) {\n\t\tvar message = JSON.parse(evt.data),\n\t\t lang = message.language,\n\t\t code = message.code,\n\t\t immediateClose = message.immediateClose;\n\n\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\tif (immediateClose) {\n\t\t\t_self.close();\n\t\t}\n\t}, false);\n\n\treturn _self.Prism;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (document.addEventListener && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': //,\n\t'prolog': /<\\?[\\w\\W]+?\\?>/,\n\t'doctype': //i,\n\t'cdata': //i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\w\\W])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:('|\")[\\w\\W]*?(\\1)|[^\\s>]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /[=>\"']/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\w\\W]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^\\{\\}\\s][^\\{\\};]*?(?=\\s*\\{)/,\n\t'string': {\n\t\tpattern: /(\"|')(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'property': /(\\b|\\B)[\\w-]+(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|').*?\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\w\\W]*?\\*\\//,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[a-z0-9_\\.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /(\\.|\\\\)/\n\t\t}\n\t},\n\t'keyword': /\\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(0x[\\dA-Fa-f]+|0b[01]+|0o[0-7]+|\\d*\\.?\\d+([Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*(?=\\()/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*\\*?|\\/|~|\\^|%|\\.{3}/\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[.+?]|\\\\.|[^/\\\\\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\\\\\|\\\\?[^\\\\])*?`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript'\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tif(Array.prototype.forEach) { // Check to prevent error in IE8\n\t\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\t\tvar language, parent = pre;\n\t\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\t\tparent = parent.parentNode;\n\t\t\t\t}\n\n\t\t\t\tif (parent) {\n\t\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t\t}\n\n\t\t\t\tif (!language) {\n\t\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t\t}\n\n\t\t\t\tvar code = document.createElement('code');\n\t\t\t\tcode.className = 'language-' + language;\n\n\t\t\t\tpre.textContent = '';\n\n\t\t\t\tcode.textContent = 'Loading…';\n\n\t\t\t\tpre.appendChild(code);\n\n\t\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\t\txhr.open('GET', src, true);\n\n\t\t\t\txhr.onreadystatechange = function () {\n\t\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\txhr.send(null);\n\t\t\t});\n\t\t}\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\n})();\n","import Prism from \"prismjs\";\n\nexport default function(dom, data) {\n let codeElements = [].slice.call(dom.querySelectorAll(\"dt-code\"));\n codeElements.forEach(el => {\n let content = el.textContent;\n el.innerHTML = \"\";\n let language = el.getAttribute(\"language\");\n let c = dom.createElement(\"code\");\n if (el.getAttribute(\"block\") === \"\") {\n // Let's normalize the tab indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n let p = dom.createElement(\"pre\");\n p.appendChild(c);\n el.appendChild(p);\n } else {\n el.appendChild(c);\n }\n let highlighted = content;\n if (Prism.languages[language]) {\n c.setAttribute(\"class\", \"language-\" + language);\n highlighted = Prism.highlight(content, Prism.languages[language]);\n }\n c.innerHTML = highlighted;\n });\n}\n","export default function(dom, data) {\n\n var textNodes = dom.createTreeWalker(\n dom.body,\n dom.defaultView.NodeFilter.SHOW_TEXT\n );\n while (textNodes.nextNode()) {\n var n = textNodes.currentNode,\n text = n.nodeValue;\n if (text && acceptNode(n)) {\n text = quotes(text);\n text = punctuation(text);\n n.nodeValue = text;\n }\n }\n}\n\nfunction acceptNode(node) {\n var parent = node.parentElement;\n var isMath = (parent && parent.getAttribute && parent.getAttribute(\"class\")) ? parent.getAttribute(\"class\").includes(\"katex\") || parent.getAttribute(\"class\").includes(\"MathJax\") : false;\n return parent &&\n parent.nodeName !== \"SCRIPT\" &&\n parent.nodeName !== \"STYLE\" &&\n parent.nodeName !== \"CODE\" &&\n parent.nodeName !== \"PRE\" &&\n parent.nodeName !== \"SPAN\" &&\n parent.nodeName !== \"DT-HEADER\" &&\n parent.nodeName !== \"DT-BYLINE\" &&\n parent.nodeName !== \"DT-MATH\" &&\n parent.nodeName !== \"DT-CODE\" &&\n parent.nodeName !== \"DT-BIBLIOGRAPHY\" &&\n parent.nodeName !== \"DT-FOOTER\" &&\n parent.nodeType !== 8 && //comment nodes\n !isMath;\n}\n\n\n/*!\n * typeset - Typesetting for the web\n * @version v0.1.6\n * @link https://github.com/davidmerfield/Typeset.js\n * @author David Merfield\n */\n // which has a CC0 license\n // http://creativecommons.org/publicdomain/zero/1.0/\n\n\nfunction punctuation(text){\n\n // Dashes\n text = text.replace(/--/g, '\\u2014');\n text = text.replace(/ \\u2014 /g,\"\\u2009\\u2014\\u2009\"); //this has thin spaces\n\n // Elipses\n text = text.replace(/\\.\\.\\./g,'…');\n\n // Nbsp for punc with spaces\n var NBSP = \"\\u00a0\";\n var NBSP_PUNCTUATION_START = /([«¿¡]) /g;\n var NBSP_PUNCTUATION_END = / ([\\!\\?:;\\.,‽»])/g;\n\n text = text.replace(NBSP_PUNCTUATION_START, '$1' + NBSP);\n text = text.replace(NBSP_PUNCTUATION_END, NBSP + '$1');\n\n return text;\n}\n\nfunction quotes(text) {\n\n text = text\n .replace(/(\\W|^)\"([^\\s\\!\\?:;\\.,‽»])/g, '$1\\u201c$2') // beginning \"\n .replace(/(\\u201c[^\"]*)\"([^\"]*$|[^\\u201c\"]*\\u201c)/g, '$1\\u201d$2') // ending \"\n .replace(/([^0-9])\"/g,'$1\\u201d') // remaining \" at end of word\n .replace(/(\\W|^)'(\\S)/g, '$1\\u2018$2') // beginning '\n .replace(/([a-z])'([a-z])/ig, '$1\\u2019$2') // conjunction's possession\n .replace(/((\\u2018[^']*)|[a-z])'([^0-9]|$)/ig, '$1\\u2019$3') // ending '\n .replace(/(\\u2018)([0-9]{2}[^\\u2019]*)(\\u2018([^0-9]|$)|$|\\u2019[a-z])/ig, '\\u2019$2$3') // abbrev. years like '93\n .replace(/(\\B|^)\\u2018(?=([^\\u2019]*\\u2019\\b)*([^\\u2019\\u2018]*\\W[\\u2019\\u2018]\\b|[^\\u2019\\u2018]*$))/ig, '$1\\u2019') // backwards apostrophe\n .replace(/'''/g, '\\u2034') // triple prime\n .replace(/(\"|'')/g, '\\u2033') // double prime\n .replace(/'/g, '\\u2032');\n\n // Allow escaped quotes\n text = text.replace(/\\\\“/, '\\\"');\n text = text.replace(/\\\\”/, '\\\"');\n text = text.replace(/\\\\’/, '\\'');\n text = text.replace(/\\\\‘/, '\\'');\n\n return text;\n}\n\nfunction ligatures(text){\n\n text = text.replace(/fi/g, 'fi');\n text = text.replace(/fl/g, 'fl');\n\n return text;\n};\n","import code from './hover-box.txt';\n\nexport default function(dom) {\n let s = dom.createElement(\"script\");\n s.textContent = code;\n dom.querySelector(\"body\").appendChild(s);\n}\n","//import xml from \"xml\";\n\nexport default function(data) {\n\n\n var date = data.publishedDate;\n\n var batch_timestamp = Math.floor(Date.now() / 1000);\n var batch_id = data.authors.length ? data.authors[0].lastName.toLowerCase().slice(0,20) : \"Anonymous\";\n batch_id += \"_\" + date.getFullYear();\n batch_id += \"_\" + data.title.split(\" \")[0].toLowerCase().slice(0,20) + \"_\" + batch_timestamp;\n // generate XML\n var crf_data =\n {doi_batch : [\n\n { _attr: {\n version: \"4.3.7\",\n xmlns: \"http://www.crossref.org/schema/4.3.7\",\n \"xmlns:xsi\": \"http://www.w3.org/2001/XMLSchema-instance\",\n \"xsi:schemaLocation\": \"http://www.crossref.org/schema/4.3.7 http://www.crossref.org/schemas/crossref4.3.7.xsd\",\n }},\n\n { head: [\n {doi_batch_id: batch_id},\n {timestamp: batch_timestamp},\n {depositor: [\n {depositor_name: data.journal.publisherName},\n {email_address: data.journal.publisherEmail},\n ]},\n {registrant: data.journal.publisherName},\n ]},\n\n {body: [\n {journal: [\n\n {journal_metadata: [\n {full_title: data.journal.full_title || data.journal.title},\n {abbrev_title: data.journal.abbrev_title || data.journal.title || data.journal.full_title},\n {issn: data.journal.issn},\n {doi_data: [\n {doi: data.journal.doi},\n {resource: data.journal.url},\n ]},\n ]},\n\n {journal_issue: [\n {publication_date: [\n {month: date.getMonth()+1},\n {year: date.getFullYear()},\n ]},\n {journal_volume: [\n {volume: data.volume},\n ]},\n {issue: data.issue},\n ]},\n\n {journal_article: [\n {titles: [\n {title: data.title},\n ]},\n { contributors:\n data.authors.map((author, ind) => (\n {person_name: [\n { _attr: {\n contributor_role: \"author\",\n sequence: (ind == 0)? \"first\" : \"additional\"\n }},\n {given_name: author.firstName},\n {surname: author.lastName},\n {affiliation: author.affiliation}\n // TODO: ORCID?\n ]}\n ))\n },\n {publication_date: [\n {month: date.getMonth()+1},\n {day: date.getDate()},\n {year: date.getFullYear()}\n ]},\n { publisher_item: [\n {item_number: data.doi}\n ]},\n {doi_data: [\n {doi: data.doi},\n //{timestamp: \"\"},\n {resource: data.url},\n ]},\n {citation_list:\n data.citations.map(key =>\n citation_xml(key, data.bibliography[key]))\n }\n\n ]},\n\n ]},\n ]},\n ]};\n\n return xml(crf_data);\n}\n\nfunction citation_xml(key, ent){\n if (ent == undefined) return {};\n var info = [];\n info.push({_attr: {key: key}});\n if (\"title\" in ent)\n info.push({article_title: ent.title});\n if (\"author\" in ent)\n info.push({author: ent.author.split(\" and \")[0].split(\",\")[0].trim()});\n if (\"journal\" in ent)\n info.push({journal_title: ent.journal});\n if (\"booktitle\" in ent)\n info.push({volume_title: ent.booktitle});\n if (\"volume\" in ent)\n info.push({volume: ent.volume});\n if (\"issue\" in ent)\n info.push({issue: ent.issue});\n if (\"doi\" in ent)\n info.push({doi: ent.doi});\n return {citation: info}\n}\n\nfunction xml(obj) {\n //console.log(typeof(obj), obj)\n if (typeof obj === 'string') return obj;\n if (typeof obj === 'number') return \"\"+obj;\n let keys = Object.keys(obj);\n if (keys.length != 1) console.error(\"can't interpret \", obj, \"as xml\");\n let name = keys[0];\n var full_content = obj[name];\n var attr = {};\n if (Array.isArray(full_content)){\n var content = [];\n for (var i in full_content) {\n var obj = full_content[i];\n var obj_name = Object.keys(obj)[0];\n if (\"_attr\" == obj_name) {\n attr = obj[\"_attr\"];\n } else {\n //console.log(Object.keys(obj)[0])\n content.push(obj);\n }\n }\n } else {\n content = full_content;\n }\n if (content == undefined){\n content = \"undefined\"\n }\n\n let attr_string = \"\";\n for (var k in attr) {\n attr_string += ` ${k}=\\\"${attr[k]}\\\"`\n }\n\n //console.log(typeof content, Array.isArray(content), content instanceof String, content)\n if (Array.isArray(content)){\n content = content.map(xml);\n content = content.join(\"\\n\").split(\"\\n\");\n content = content.map(s => \" \" + s).join(\"\\n\")\n var result = `<${name}${attr_string}>\\n${content}\\n`;\n } else {\n content = xml(content);\n var result = `<${name}${attr_string}>${content}`;\n }\n return result;\n}\n","import html from \"./components/html\";\nimport styles from \"./components/styles\";\nimport frontMatter from \"./components/front-matter\";\nimport bibliography from \"./components/bibliography\";\nimport expandData from \"./components/expand-data\";\nimport meta from \"./components/meta\";\nimport banner from \"./components/banner\";\nimport header from \"./components/header\";\nimport byline from \"./components/byline\";\nimport appendix from \"./components/appendix\";\nimport footer from \"./components/footer\";\nimport citation from \"./components/citation\";\nimport footnote from \"./components/footnote\";\nimport markdown from \"./components/markdown\";\nimport code from \"./components/code\";\nimport typeset from \"./components/typeset\";\nimport hoverBox from \"./components/hover-box-include\";\nimport generateCrossref from \"./components/generate-crossref\";\n\nfunction renderImmediately(dom) {\n html(dom);\n styles(dom);\n}\n\nfunction renderOnLoad(dom, data) {\n frontMatter(dom, data);\n bibliography(dom, data);\n expandData(dom, data);\n meta(dom, data);\n header(dom, data);\n byline(dom, data);\n appendix(dom, data);\n footer(dom, data);\n markdown(dom, data);\n code(dom, data);\n citation(dom, data);\n footnote(dom, data);\n typeset(dom, data);\n hoverBox(dom, data);\n}\n\n// If we are in a browser, render automatically...\nif(window && window.document) {\n let data = {};\n renderImmediately(window.document);\n window.document.addEventListener(\"DOMContentLoaded\", (event) => {\n renderOnLoad(window.document, data);\n // Add a banner if we're not on localhost.\n if (window.location.hostname !== \"localhost\" && window.location.origin !== \"file://\") {\n banner(window.document, data);\n }\n generateCrossref(data);\n });\n}\n\n// If we are in node...\nfunction render(dom, data) {\n renderImmediately(dom);\n renderOnLoad(dom, data);\n // Remove script tag so it doesn't run again in the client\n let s = dom.querySelector('script[src=\"http://distill.pub/template.js\"]');\n if (s) { s.parentElement.removeChild(s); };\n}\n\nexport {render as render};\nexport {generateCrossref as generateCrossref};\n"],"names":["let","meta","YAMLException","common","require$$0","Mark","this","Type","require$$1","require$$2","type","arguments","Schema","require$$3","require$$4","require$$5","require","_hasOwnProperty","_toString","require$$6","require$$7","_require","DEFAULT_SAFE_SCHEMA","DEFAULT_FULL_SCHEMA","loadAll","load","safeLoadAll","safeLoad","State","dump","safeDump","require$$8","require$$9","ymlParse","interval","day","timeDay","timeYear","timeSunday","timeMonday","locale","escape","const","html","define","global","Prism","code","render"],"mappings":"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"} \ No newline at end of file From b439644064c07679686ad301d4f23fd94b879b33 Mon Sep 17 00:00:00 2001 From: Christopher Olah Date: Wed, 15 Mar 2017 10:14:04 -0700 Subject: [PATCH 04/42] update scholar meta stuff --- components/meta.js | 3 ++- dist/template.js | 3 ++- dist/template.js.map | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/components/meta.js b/components/meta.js index 1faa2c1..5a2a4bf 100644 --- a/components/meta.js +++ b/components/meta.js @@ -120,10 +120,11 @@ function citation_meta_content(ref){ var arxiv_id_search = /https?:\/\/arxiv\.org\/pdf\/([0-9]*\.[0-9]*)\.pdf/.exec(ref.url); arxiv_id_search = arxiv_id_search || /https?:\/\/arxiv\.org\/abs\/([0-9]*\.[0-9]*)/.exec(ref.url); + arxiv_id_search = arxiv_id_search || /arXiv preprint arXiv:([0-9]*\.[0-9]*)/.exec(ref.journal); if (arxiv_id_search && arxiv_id_search[1]){ content += `citation_arxiv_id=${arxiv_id_search[1]};`; return content; - } + } if ("journal" in ref){ content += `citation_journal_title=${ref.journal};`; } diff --git a/dist/template.js b/dist/template.js index d2df510..4633e78 100644 --- a/dist/template.js +++ b/dist/template.js @@ -5304,10 +5304,11 @@ function citation_meta_content(ref){ var arxiv_id_search = /https?:\/\/arxiv\.org\/pdf\/([0-9]*\.[0-9]*)\.pdf/.exec(ref.url); arxiv_id_search = arxiv_id_search || /https?:\/\/arxiv\.org\/abs\/([0-9]*\.[0-9]*)/.exec(ref.url); + arxiv_id_search = arxiv_id_search || /arXiv preprint arXiv:([0-9]*\.[0-9]*)/.exec(ref.journal); if (arxiv_id_search && arxiv_id_search[1]){ content += "citation_arxiv_id=" + (arxiv_id_search[1]) + ";"; return content; - } + } if ("journal" in ref){ content += "citation_journal_title=" + (ref.journal) + ";"; } diff --git a/dist/template.js.map b/dist/template.js.map index ae49295..cc60d69 100644 --- a/dist/template.js.map +++ b/dist/template.js.map @@ -1 +1 @@ -{"version":3,"file":null,"sources":["../components/html.js","../components/styles.js","../node_modules/js-yaml/lib/js-yaml/common.js","../node_modules/js-yaml/lib/js-yaml/exception.js","../node_modules/js-yaml/lib/js-yaml/mark.js","../node_modules/js-yaml/lib/js-yaml/type.js","../node_modules/js-yaml/lib/js-yaml/schema.js","../node_modules/js-yaml/lib/js-yaml/type/str.js","../node_modules/js-yaml/lib/js-yaml/type/seq.js","../node_modules/js-yaml/lib/js-yaml/type/map.js","../node_modules/js-yaml/lib/js-yaml/schema/failsafe.js","../node_modules/js-yaml/lib/js-yaml/type/null.js","../node_modules/js-yaml/lib/js-yaml/type/bool.js","../node_modules/js-yaml/lib/js-yaml/type/int.js","../node_modules/js-yaml/lib/js-yaml/type/float.js","../node_modules/js-yaml/lib/js-yaml/schema/json.js","../node_modules/js-yaml/lib/js-yaml/schema/core.js","../node_modules/js-yaml/lib/js-yaml/type/timestamp.js","../node_modules/js-yaml/lib/js-yaml/type/merge.js","../node_modules/js-yaml/lib/js-yaml/type/binary.js","../node_modules/js-yaml/lib/js-yaml/type/omap.js","../node_modules/js-yaml/lib/js-yaml/type/pairs.js","../node_modules/js-yaml/lib/js-yaml/type/set.js","../node_modules/js-yaml/lib/js-yaml/schema/default_safe.js","../node_modules/js-yaml/lib/js-yaml/type/js/undefined.js","../node_modules/js-yaml/lib/js-yaml/type/js/regexp.js","../node_modules/js-yaml/lib/js-yaml/type/js/function.js","../node_modules/js-yaml/lib/js-yaml/schema/default_full.js","../node_modules/js-yaml/lib/js-yaml/loader.js","../node_modules/js-yaml/lib/js-yaml/dumper.js","../node_modules/js-yaml/lib/js-yaml.js","../node_modules/js-yaml/index.js","../components/front-matter.js","../node_modules/bibtex-parse-js/bibtexParse.js","../components/bibliography.js","../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/utcMinute.js","../node_modules/d3-time/src/utcHour.js","../node_modules/d3-time/src/utcDay.js","../node_modules/d3-time/src/utcWeek.js","../node_modules/d3-time/src/utcMonth.js","../node_modules/d3-time/src/utcYear.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-time-format/src/isoFormat.js","../node_modules/d3-time-format/src/isoParse.js","../components/expand-data.js","../../node_modules/escape-html/index.js","../components/meta.js","../components/banner.js","../components/header.js","../node_modules/mustache/mustache.js","../components/byline.js","../components/appendix.js","../components/footer.js","../components/citation.js","../components/footnote.js","../node_modules/marked/lib/marked.js","../components/markdown.js","../node_modules/prismjs/prism.js","../components/code.js","../components/typeset.js","../components/hover-box-include.js","../components/generate-crossref.js","../index.js"],"sourcesContent":["export default function(dom) {\n if (!dom.querySelector(\"html\").getAttribute(\"lang\")) {\n dom.querySelector(\"html\").setAttribute(\"lang\", \"en\")\n }\n\n let head = dom.querySelector(\"head\");\n\n if (!dom.querySelector(\"meta[charset]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"charset\", \"utf-8\");\n head.appendChild(meta);\n }\n if (!dom.querySelector(\"meta[name=viewport]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"name\", \"viewport\");\n meta.setAttribute(\"content\", \"width=device-width, initial-scale=1\");\n head.appendChild(meta);\n }\n}\n","import base from './styles-base.css';\nimport layout from './styles-layout.css';\nimport article from './styles-article.css';\nimport code from './styles-code.css';\nimport print from './styles-print.css';\n\nexport default function(dom) {\n let s = dom.createElement(\"style\");\n s.textContent = base + layout + article + code + print;\n dom.querySelector(\"head\").appendChild(s);\n}\n","'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n var result = this.name + ': ';\n\n result += this.reason || '(unknown reason)';\n\n if (!compact && this.mark) {\n result += ' ' + this.mark.toString();\n }\n\n return result;\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n\nvar common = require('./common');\n\n\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\n\n\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head, start, tail, end, snippet;\n\n if (!this.buffer) return null;\n\n indent = indent || 4;\n maxLength = maxLength || 75;\n\n head = '';\n start = this.position;\n\n while (start > 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n\n tail = '';\n end = this.position;\n\n while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n\n snippet = this.buffer.slice(start, end);\n\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' +\n common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\n\nMark.prototype.toString = function toString(compact) {\n var snippet, where = '';\n\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n if (!compact) {\n snippet = this.getSnippet();\n\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n\n return where;\n};\n\n\nmodule.exports = Mark;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name, result) {\n var exclude = [];\n\n schema.include.forEach(function (includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n\n schema[name].forEach(function (currentType) {\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n exclude.push(previousIndex);\n }\n });\n\n result.push(currentType);\n });\n\n return result.filter(function (type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {}\n }, index, length;\n\n function collectType(type) {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n\n this.implicit.forEach(function (type) {\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n });\n\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\n\nSchema.DEFAULT = null;\n\n\nSchema.create = function createSchema() {\n var schemas, types;\n\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n\n if (!schemas.every(function (schema) { return schema instanceof Schema; })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n\n if (!types.every(function (type) { return type instanceof Type; })) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n return new Schema({\n include: schemas,\n explicit: types\n });\n};\n\n\nmodule.exports = Schema;\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 8\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 10 (except 0) or base 60\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch === ':') break;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n if (!hasDigits) return false;\n\n // if !base60 - done;\n if (ch !== ':') return true;\n\n // base60 almost not used, no needs to optimize\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch, base, digits = [];\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value, 16);\n return sign * parseInt(value, 8);\n }\n\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseInt(v, 10));\n });\n\n value = 0;\n base = 1;\n\n digits.forEach(function (d) {\n value += (d * base);\n base *= 60;\n });\n\n return sign * value;\n\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (object) { return '0b' + object.toString(2); },\n octal: function (object) { return '0' + object.toString(8); },\n decimal: function (object) { return object.toString(10); },\n hexadecimal: function (object) { return '0x' + object.toString(16).toUpperCase(); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n '^(?:[-+]?(?:[0-9][0-9_]*)\\\\.[0-9_]*(?:[eE][-+][0-9]+)?' +\n '|\\\\.[0-9_]+(?:[eE][-+][0-9]+)?' +\n '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' +\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data)) return false;\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign, base, digits;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n\n } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n\n value = 0.0;\n base = 1;\n\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n\n return sign * value;\n\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./failsafe')\n ],\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./json')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\nvar NodeBuffer;\n\ntry {\n // A trick for browserified version, to not include `Buffer` shim\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n // Wrap into Buffer for NodeJS and leave Array for browser\n if (NodeBuffer) return new NodeBuffer(result);\n\n return result;\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./core')\n ],\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n return true;\n}\n\nfunction constructJavascriptUndefined() {\n /*eslint-disable no-undefined*/\n return undefined;\n}\n\nfunction representJavascriptUndefined() {\n return '';\n}\n\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n if (data === null) return false;\n if (data.length === 0) return false;\n\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // if regexp starts with '/' it can have modifiers and must be properly closed\n // `/foo/gim` - modifiers tail can be maximum 3 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n\n if (modifiers.length > 3) return false;\n // if expression starts with /, is should be properly terminated\n if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n }\n\n return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // `/foo/gim` - tail can be maximum 4 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n\n return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object /*, style*/) {\n var result = '/' + object.source + '/';\n\n if (object.global) result += 'g';\n if (object.multiline) result += 'm';\n if (object.ignoreCase) result += 'i';\n\n return result;\n}\n\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n","'use strict';\n\nvar esprima;\n\n// Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n// If not found - try to fallback to window.esprima. If not\n// found too - then fail to parse.\n//\ntry {\n // workaround to exclude package from browserify list.\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n /*global window */\n if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n if (data === null) return false;\n\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true });\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction constructJavascriptFunction(data) {\n /*jslint evil:true*/\n\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true }),\n params = [],\n body;\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n throw new Error('Failed to resolve function');\n }\n\n ast.body[0].expression.params.forEach(function (param) {\n params.push(param.name);\n });\n\n body = ast.body[0].expression.body.range;\n\n // Esprima's ranges include the first '{' and the last '}' characters on\n // function expressions. So cut them out.\n /*eslint-disable no-new-func*/\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n}\n\nfunction representJavascriptFunction(object /*, style*/) {\n return object.toString();\n}\n\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n","// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [\n require('./default_safe')\n ],\n explicit: [\n require('../type/js/undefined'),\n require('../type/js/regexp'),\n require('../type/js/function')\n ]\n});\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00);\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n return new YAMLException(\n message,\n new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length;\n _position < _length;\n _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode) {\n var index, quantity;\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n throwError(state, 'duplicated mapping key');\n }\n _result[keyNode] = valueNode;\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else {\n break; // Reading is done. Go to the epilogue.\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if (state.lineIndent > nodeIndent && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!state.anchorMap.hasOwnProperty(alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag !== null && state.tag !== '!') {\n if (state.tag === '?') {\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length;\n typeIndex < typeQuantity;\n typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only assigned to plain scalars. So, it isn't\n // needed to check for 'kind' conformity.\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = {};\n state.anchorMap = {};\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n var documents = loadDocuments(input, options), index, length;\n\n for (index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nfunction safeLoadAll(input, output, options) {\n loadAll(input, output, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nfunction safeLoad(input, options) {\n return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// Simplified test for values allowed after the first character in plain style.\nfunction isPlainSafe(c) {\n // Uses a subset of nb-char - c-flow-indicator - \":\" - \"#\"\n // where nb-char ::= c-printable - b-char - c-byte-order-mark.\n return isPrintable(c) && c !== 0xFEFF\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // - \":\" - \"#\"\n && c !== CHAR_COLON\n && c !== CHAR_SHARP;\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n return isPrintable(c) && c !== 0xFEFF\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {\n var i;\n var char;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(string.charCodeAt(0))\n && !isWhitespace(string.charCodeAt(string.length - 1));\n\n if (singleLineOnly) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n return plain && !testAmbiguousType(string)\n ? STYLE_PLAIN : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (string[0] === ' ' && indentPerLevel > 9) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey) {\n state.dump = (function () {\n if (string.length === 0) {\n return \"''\";\n }\n if (!state.noCompatMode &&\n DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n return \"'\" + string + \"'\";\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = (string[0] === ' ') ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char;\n var escapeSeq;\n\n for (var i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n result += !escapeSeq && isPrintable(char)\n ? string[i]\n : escapeSeq || encodeHex(char);\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level, object[index], false, false)) {\n if (index !== 0) _result += ', ';\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || index !== 0) {\n _result += generateNextLine(state, level);\n }\n _result += '- ' + state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (index !== 0) pairBuffer += ', ';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + ': ';\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || index !== 0) {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n state.tag = explicit ? type.tag : '?';\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n writeBlockSequence(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey);\n }\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n state.dump = '!<' + state.tag + '> ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n if (writeNode(state, 0, input, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nfunction safeDump(input, options) {\n return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n","'use strict';\n\n\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\n\n\nfunction deprecated(name) {\n return function () {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\n\n\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\n\n// Deprecated schema names from JS-YAML 2.0.x\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\n\n// Deprecated functions from JS-YAML 1.x.x\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","'use strict';\n\n\nvar yaml = require('./lib/js-yaml.js');\n\n\nmodule.exports = yaml;\n","import ymlParse from \"js-yaml\";\n\nexport default function(dom, data) {\n let localData = {};\n let el = dom.querySelector('script[type=\"text/front-matter\"]');\n if (el) {\n let text = el.textContent;\n localData = ymlParse.safeLoad(text);\n }\n\n data.title = localData.title ? localData.title : \"Untitled\";\n data.description = localData.description ? localData.description : \"No description.\";\n\n data.authors = localData.authors ? localData.authors : [];\n\n data.authors = data.authors.map((author, i) =>{\n let a = {};\n let name = Object.keys(author)[0];\n if ((typeof author) === \"string\") {\n name = author;\n } else {\n a.personalURL = author[name];\n }\n let names = name.split(\" \");\n a.name = name;\n a.firstName = names.slice(0, names.length - 1).join(\" \");\n a.lastName = names[names.length -1];\n if(localData.affiliations[i]) {\n let affiliation = Object.keys(localData.affiliations[i])[0];\n if ((typeof localData.affiliations[i]) === \"string\") {\n affiliation = localData.affiliations[i]\n } else {\n a.affiliationURL = localData.affiliations[i][affiliation];\n }\n a.affiliation = affiliation;\n }\n return a;\n });\n \n\n}\n","/* start bibtexParse 0.0.22 */\n\n//Original work by Henrik Muehe (c) 2010\n//\n//CommonJS port by Mikola Lysenko 2013\n//\n//Port to Browser lib by ORCID / RCPETERS\n//\n//Issues:\n//no comment handling within strings\n//no string concatenation\n//no variable values yet\n//Grammar implemented here:\n//bibtex -> (string | preamble | comment | entry)*;\n//string -> '@STRING' '{' key_equals_value '}';\n//preamble -> '@PREAMBLE' '{' value '}';\n//comment -> '@COMMENT' '{' value '}';\n//entry -> '@' key '{' key ',' key_value_list '}';\n//key_value_list -> key_equals_value (',' key_equals_value)*;\n//key_equals_value -> key '=' value;\n//value -> value_quotes | value_braces | key;\n//value_quotes -> '\"' .*? '\"'; // not quite\n//value_braces -> '{' .*? '\"'; // not quite\n(function(exports) {\n\n function BibtexParser() {\n \n this.months = [\"jan\", \"feb\", \"mar\", \"apr\", \"may\", \"jun\", \"jul\", \"aug\", \"sep\", \"oct\", \"nov\", \"dec\"];\n this.notKey = [',','{','}',' ','='];\n this.pos = 0;\n this.input = \"\";\n this.entries = new Array();\n\n this.currentEntry = \"\";\n\n this.setInput = function(t) {\n this.input = t;\n };\n\n this.getEntries = function() {\n return this.entries;\n };\n\n this.isWhitespace = function(s) {\n return (s == ' ' || s == '\\r' || s == '\\t' || s == '\\n');\n };\n\n this.match = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n this.pos += s.length;\n } else {\n throw \"Token mismatch, expected \" + s + \", found \"\n + this.input.substring(this.pos);\n };\n this.skipWhitespace(canCommentOut);\n };\n\n this.tryMatch = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n return true;\n } else {\n return false;\n };\n this.skipWhitespace(canCommentOut);\n };\n\n /* when search for a match all text can be ignored, not just white space */\n this.matchAt = function() {\n while (this.input.length > this.pos && this.input[this.pos] != '@') {\n this.pos++;\n };\n\n if (this.input[this.pos] == '@') {\n return true;\n };\n return false;\n };\n\n this.skipWhitespace = function(canCommentOut) {\n while (this.isWhitespace(this.input[this.pos])) {\n this.pos++;\n };\n if (this.input[this.pos] == \"%\" && canCommentOut == true) {\n while (this.input[this.pos] != \"\\n\") {\n this.pos++;\n };\n this.skipWhitespace(canCommentOut);\n };\n };\n\n this.value_braces = function() {\n var bracecount = 0;\n this.match(\"{\", false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '}') {\n if (bracecount > 0) {\n bracecount--;\n } else {\n var end = this.pos;\n this.match(\"}\", false);\n return this.input.substring(start, end);\n };\n } else if (this.input[this.pos] == '{') {\n bracecount++;\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value\";\n };\n };\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.value_comment = function() {\n var str = '';\n var brcktCnt = 0;\n while (!(this.tryMatch(\"}\", false) && brcktCnt == 0)) {\n str = str + this.input[this.pos];\n if (this.input[this.pos] == '{')\n brcktCnt++;\n if (this.input[this.pos] == '}')\n brcktCnt--;\n if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n this.pos++;\n };\n return str;\n };\n\n this.value_quotes = function() {\n this.match('\"', false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '\"') {\n var end = this.pos;\n this.match('\"', false);\n return this.input.substring(start, end);\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n }\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.single_value = function() {\n var start = this.pos;\n if (this.tryMatch(\"{\")) {\n return this.value_braces();\n } else if (this.tryMatch('\"')) {\n return this.value_quotes();\n } else {\n var k = this.key();\n if (k.match(\"^[0-9]+$\"))\n return k;\n else if (this.months.indexOf(k.toLowerCase()) >= 0)\n return k.toLowerCase();\n else\n throw \"Value expected:\" + this.input.substring(start) + ' for key: ' + k;\n \n };\n };\n\n this.value = function() {\n var values = [];\n values.push(this.single_value());\n while (this.tryMatch(\"#\")) {\n this.match(\"#\");\n values.push(this.single_value());\n };\n return values.join(\"\");\n };\n\n this.key = function() {\n var start = this.pos;\n while (true) {\n if (this.pos >= this.input.length) {\n throw \"Runaway key\";\n };\n // а-яА-Я is Cyrillic\n //console.log(this.input[this.pos]);\n if (this.notKey.indexOf(this.input[this.pos]) >= 0) {\n return this.input.substring(start, this.pos);\n } else {\n this.pos++;\n \n };\n };\n };\n\n this.key_equals_value = function() {\n var key = this.key();\n if (this.tryMatch(\"=\")) {\n this.match(\"=\");\n var val = this.value();\n return [ key, val ];\n } else {\n throw \"... = value expected, equals sign missing:\"\n + this.input.substring(this.pos);\n };\n };\n\n this.key_value_list = function() {\n var kv = this.key_equals_value();\n this.currentEntry['entryTags'] = {};\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n while (this.tryMatch(\",\")) {\n this.match(\",\");\n // fixes problems with commas at the end of a list\n if (this.tryMatch(\"}\")) {\n break;\n }\n ;\n kv = this.key_equals_value();\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n };\n };\n\n this.entry_body = function(d) {\n this.currentEntry = {};\n this.currentEntry['citationKey'] = this.key();\n this.currentEntry['entryType'] = d.substring(1);\n this.match(\",\");\n this.key_value_list();\n this.entries.push(this.currentEntry);\n };\n\n this.directive = function() {\n this.match(\"@\");\n return \"@\" + this.key();\n };\n\n this.preamble = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'PREAMBLE';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.comment = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'COMMENT';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.entry = function(d) {\n this.entry_body(d);\n };\n\n this.bibtex = function() {\n while (this.matchAt()) {\n var d = this.directive();\n this.match(\"{\");\n if (d == \"@STRING\") {\n this.string();\n } else if (d == \"@PREAMBLE\") {\n this.preamble();\n } else if (d == \"@COMMENT\") {\n this.comment();\n } else {\n this.entry(d);\n }\n this.match(\"}\");\n };\n };\n };\n \n exports.toJSON = function(bibtex) {\n var b = new BibtexParser();\n b.setInput(bibtex);\n b.bibtex();\n return b.entries;\n };\n\n /* added during hackathon don't hate on me */\n exports.toBibtex = function(json) {\n var out = '';\n for ( var i in json) {\n out += \"@\" + json[i].entryType;\n out += '{';\n if (json[i].citationKey)\n out += json[i].citationKey + ', ';\n if (json[i].entry)\n out += json[i].entry ;\n if (json[i].entryTags) {\n var tags = '';\n for (var jdx in json[i].entryTags) {\n if (tags.length != 0)\n tags += ', ';\n tags += jdx + '= {' + json[i].entryTags[jdx] + '}';\n }\n out += tags;\n }\n out += '}\\n\\n';\n }\n return out;\n \n };\n\n})(typeof exports === 'undefined' ? this['bibtexParse'] = {} : exports);\n\n/* end bibtexParse */\n","import bibtexParse from \"bibtex-parse-js\";\n\nexport default function(dom, data) {\n let el = dom.querySelector('script[type=\"text/bibliography\"]');\n let citations = [];\n let bibliography = {};\n //TODO If we don't have a local element, make a request for the document.\n if (el) {\n let rawBib = el.textContent;\n let parsed = bibtexParse.toJSON(rawBib);\n if(parsed) {\n parsed.forEach(e => {\n for (var k in e.entryTags){\n var val = e.entryTags[k];\n val = val.replace(/[\\t\\n ]+/g, \" \");\n val = val.replace(/{\\\\[\"^`\\.'acu~Hvs]( )?([a-zA-Z])}/g,\n (full, x, char) => char);\n val = val.replace(/{\\\\([a-zA-Z])}/g,\n (full, char) => char);\n e.entryTags[k] = val;\n }\n bibliography[e.citationKey] = e.entryTags;\n bibliography[e.citationKey].type = e.entryType;\n });\n }\n\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach(el => {\n let key = el.getAttribute(\"key\");\n if (key) {\n let citationKeys = key.split(\",\");\n citationKeys.forEach(key => {\n if (citations.indexOf(key) == -1){\n citations.push(key);\n if (!(key in bibliography)){\n console.warn(\"No bibliography entry found for: \" + key);\n }\n }\n });\n }\n });\n }\n data.bibliography = bibliography;\n data.citations = citations;\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(new Date(+start)); while (offseti(start, step), floori(start), start < stop)\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) while (--step >= 0) while (offseti(date, 1), !test(date)) {} // eslint-disable-line no-empty\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(Math.floor(date / durationSecond) * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(Math.floor(date / durationMinute) * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute} from \"./duration\";\n\nvar hour = interval(function(date) {\n var offset = date.getTimezoneOffset() * durationMinute % durationHour;\n if (offset < 0) offset += durationHour;\n date.setTime(Math.floor((+date - offset) / durationHour) * durationHour + offset);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval\";\nimport {durationWeek} from \"./duration\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {timeDay, timeSunday, timeMonday, timeYear, utcDay, utcSunday, utcMonday, utcYear} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"S\": formatSeconds,\n \"U\": formatWeekNumberSunday,\n \"w\": formatWeekdayNumber,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"S\": formatUTCSeconds,\n \"U\": formatUTCWeekNumberSunday,\n \"w\": formatUTCWeekdayNumber,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"S\": parseSeconds,\n \"U\": parseWeekNumberSunday,\n \"w\": parseWeekdayNumber,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0);\n if (i != string.length) return null;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n var day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?:\\:?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekdayNumber(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekdayNumber(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {timeFormat} from \"d3-time-format\";\n\nexport default function(dom, data) {\n\n data.authors = data.authors || [];\n\n // paths\n data.url = \"http://distill.pub/\" + data.distillPath;\n data.githubUrl = \"https://github.com/\" + data.githubPath;\n\n // Homepage\n //data.homepage = !post.noHomepage;\n data.journal = data.journal || {};\n\n // Dates\n if (data.publishedDate){//} && data.journal) {\n data.volume = data.publishedDate.getFullYear() - 2015;\n data.issue = data.publishedDate.getMonth() + 1;\n }\n\n data.publishedDate = data.publishedDate ? data.publishedDate : new Date(\"Invalid\");\n data.updatedDate = data.updatedDate ? data.updatedDate : new Date(\"Invalid\");\n\n data.publishedDateRFC\n let RFC = timeFormat(\"%a, %d %b %Y %H:%M:%S %Z\");\n let months = [\"Jan\", \"Feb\", \"March\", \"April\", \"May\", \"June\", \"July\", \"Aug\", \"Sept\", \"Oct\", \"Nov\", \"Dec\"];\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n data.publishedDateRFC = RFC(data.publishedDate);\n data.publishedYear = data.publishedDate.getFullYear();\n data.publishedMonth = months[data.publishedDate.getMonth()];\n data.publishedDay = data.publishedDate.getDate();\n data.publishedMonthPadded = zeroPad(data.publishedDate.getMonth() + 1);\n data.publishedDayPadded = zeroPad(data.publishedDate.getDate());\n data.updatedDateRFC = RFC(data.updatedDate);\n\n if (data.authors.length > 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \", et al.\";\n } else if (data.authors.length === 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \" & \" + data.authors[1].lastName;\n } else if (data.authors.length === 1) {\n data.concatenatedAuthors = data.authors[0].lastName\n }\n\n data.bibtexAuthors = data.authors.map(function(author){\n return author.lastName + \", \" + author.firstName;\n }).join(\" and \");\n\n data.slug = data.authors.length ? data.authors[0].lastName.toLowerCase() + data.publishedYear + data.title.split(\" \")[0].toLowerCase() : \"Untitled\";\n\n}\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","import favicon from './distill-favicon.base64';\nimport escape from 'escape-html';\n\nexport default function(dom, data) {\n let head = dom.querySelector(\"head\");\n let appendHead = html => appendHtml(head, html);\n\n function meta(name, content, force) {\n if (content || force)\n appendHead(` \\n`);\n }\n\n appendHead(`\n \n \n \n \n ${data.title}\n `);\n\n appendHead(`\n \n \n \n `);\n data.authors.forEach((a) => {\n appendHtml(head, `\n `)\n });\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n // if this is a proprer article, generate Google Scholar meta data\n if (data.doiSuffix){\n appendHead(`\n \\n`);\n\n meta(\"citation_title\", data.title);\n //meta(\"citation_fulltext_html_url\", data.url);\n meta(\"citation_volume\", data.volume);\n meta(\"citation_issue\", data.issue);\n meta(\"citation_firstpage\", data.doiSuffix? `e${data.doiSuffix}` : undefined);\n meta(\"citation_doi\", data.doi);\n\n let journal = data.journal || {};\n meta(\"citation_journal_title\", journal.full_title || journal.title);\n meta(\"citation_journal_abbrev\", journal.abbrev_title);\n meta(\"citation_issn\", journal.issn);\n meta(\"citation_publisher\", journal.publisher);\n meta(\"citation_fulltext_world_readable\", \"\", true);\n\n if (data.publishedDate){\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n meta(\"citation_online_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n // Should we do something different here?\n meta(\"citation_publication_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n }\n\n (data.authors || []).forEach((a) => {\n meta(\"citation_author\", `${a.lastName}, ${a.firstName}`);\n meta(\"citation_author_institution\", a.affiliation);\n });\n\n if (data.citations) {\n data.citations.forEach(key => {\n let d = data.bibliography[key];\n if(!d) {\n console.warn(\"No bibliography data fround for \" + key)\n } else {\n meta(\"citation_reference\", citation_meta_content(data.bibliography[key]) )\n };\n });\n }\n }\n}\n\nfunction appendHtml(el, html) {\n el.innerHTML += html;\n}\n\nfunction citation_meta_content(ref){\n // Special test for arxiv\n var content = `citation_title=${ref.title};`;\n \n let name_strings = ref.author.split(\" and \").forEach(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1].trim();\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n content += `citation_author=${firsts} ${last};`;\n });\n \n if (\"year\" in ref) {\n content += `citation_publication_date=${ref.year};`;\n }\n \n var arxiv_id_search = /https?:\\/\\/arxiv\\.org\\/pdf\\/([0-9]*\\.[0-9]*)\\.pdf/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /https?:\\/\\/arxiv\\.org\\/abs\\/([0-9]*\\.[0-9]*)/.exec(ref.url);\n if (arxiv_id_search && arxiv_id_search[1]){\n content += `citation_arxiv_id=${arxiv_id_search[1]};`;\n return content;\n } \n if (\"journal\" in ref){\n content += `citation_journal_title=${ref.journal};`;\n }\n if (\"volume\" in ref) {\n content += `citation_volume=${ref.volume};`;\n }\n if (\"issue\" in ref || \"number\" in ref){\n content += `citation_number=${ref.issue || ref.number};`;\n }\n /*content += `citation_first_page=${};`;\n content += `citation_publication_date=${};`;*/\n return content;\n}\n","const html = `\n\n
    This article is a draft, awaiting review for publication in Distill
    \n`;\n\nexport default function(dom, data) {\n let banner = dom.createElement(\"dt-banner\");\n banner.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(banner, b.firstChild);\n banner.addEventListener(\"click\", function() {\n banner.style.display = \"none\";\n });\n}\n","import logo from \"./distill-logo.svg\";\n\nconst html = `\n\n\n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-header\");\n if(el) {\n el.innerHTML = html;\n } else {\n let header = dom.createElement(\"dt-header\");\n header.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(header, b.firstChild);\n }\n}\n","/*!\n * mustache.js - Logic-less {{mustache}} templates with JavaScript\n * http://github.com/janl/mustache.js\n */\n\n/*global define: false Mustache: true*/\n\n(function defineMustache (global, factory) {\n if (typeof exports === 'object' && exports && typeof exports.nodeName !== 'string') {\n factory(exports); // CommonJS\n } else if (typeof define === 'function' && define.amd) {\n define(['exports'], factory); // AMD\n } else {\n global.Mustache = {};\n factory(global.Mustache); // script, wsh, asp\n }\n}(this, function mustacheFactory (mustache) {\n\n var objectToString = Object.prototype.toString;\n var isArray = Array.isArray || function isArrayPolyfill (object) {\n return objectToString.call(object) === '[object Array]';\n };\n\n function isFunction (object) {\n return typeof object === 'function';\n }\n\n /**\n * More correct typeof string handling array\n * which normally returns typeof 'object'\n */\n function typeStr (obj) {\n return isArray(obj) ? 'array' : typeof obj;\n }\n\n function escapeRegExp (string) {\n return string.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n }\n\n /**\n * Null safe way of checking whether or not an object,\n * including its prototype, has a given property\n */\n function hasProperty (obj, propName) {\n return obj != null && typeof obj === 'object' && (propName in obj);\n }\n\n // Workaround for https://issues.apache.org/jira/browse/COUCHDB-577\n // See https://github.com/janl/mustache.js/issues/189\n var regExpTest = RegExp.prototype.test;\n function testRegExp (re, string) {\n return regExpTest.call(re, string);\n }\n\n var nonSpaceRe = /\\S/;\n function isWhitespace (string) {\n return !testRegExp(nonSpaceRe, string);\n }\n\n var entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n function escapeHtml (string) {\n return String(string).replace(/[&<>\"'`=\\/]/g, function fromEntityMap (s) {\n return entityMap[s];\n });\n }\n\n var whiteRe = /\\s*/;\n var spaceRe = /\\s+/;\n var equalsRe = /\\s*=/;\n var curlyRe = /\\s*\\}/;\n var tagRe = /#|\\^|\\/|>|\\{|&|=|!/;\n\n /**\n * Breaks up the given `template` string into a tree of tokens. If the `tags`\n * argument is given here it must be an array with two string values: the\n * opening and closing tags used in the template (e.g. [ \"<%\", \"%>\" ]). Of\n * course, the default is to use mustaches (i.e. mustache.tags).\n *\n * A token is an array with at least 4 elements. The first element is the\n * mustache symbol that was used inside the tag, e.g. \"#\" or \"&\". If the tag\n * did not contain a symbol (i.e. {{myValue}}) this element is \"name\". For\n * all text that appears outside a symbol this element is \"text\".\n *\n * The second element of a token is its \"value\". For mustache tags this is\n * whatever else was inside the tag besides the opening symbol. For text tokens\n * this is the text itself.\n *\n * The third and fourth elements of the token are the start and end indices,\n * respectively, of the token in the original template.\n *\n * Tokens that are the root node of a subtree contain two more elements: 1) an\n * array of tokens in the subtree and 2) the index in the original template at\n * which the closing tag for that section begins.\n */\n function parseTemplate (template, tags) {\n if (!template)\n return [];\n\n var sections = []; // Stack to hold section tokens\n var tokens = []; // Buffer to hold the tokens\n var spaces = []; // Indices of whitespace tokens on the current line\n var hasTag = false; // Is there a {{tag}} on the current line?\n var nonSpace = false; // Is there a non-space char on the current line?\n\n // Strips all whitespace tokens array for the current line\n // if there was a {{#tag}} on it and otherwise only space.\n function stripSpace () {\n if (hasTag && !nonSpace) {\n while (spaces.length)\n delete tokens[spaces.pop()];\n } else {\n spaces = [];\n }\n\n hasTag = false;\n nonSpace = false;\n }\n\n var openingTagRe, closingTagRe, closingCurlyRe;\n function compileTags (tagsToCompile) {\n if (typeof tagsToCompile === 'string')\n tagsToCompile = tagsToCompile.split(spaceRe, 2);\n\n if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)\n throw new Error('Invalid tags: ' + tagsToCompile);\n\n openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\\\s*');\n closingTagRe = new RegExp('\\\\s*' + escapeRegExp(tagsToCompile[1]));\n closingCurlyRe = new RegExp('\\\\s*' + escapeRegExp('}' + tagsToCompile[1]));\n }\n\n compileTags(tags || mustache.tags);\n\n var scanner = new Scanner(template);\n\n var start, type, value, chr, token, openSection;\n while (!scanner.eos()) {\n start = scanner.pos;\n\n // Match any text between tags.\n value = scanner.scanUntil(openingTagRe);\n\n if (value) {\n for (var i = 0, valueLength = value.length; i < valueLength; ++i) {\n chr = value.charAt(i);\n\n if (isWhitespace(chr)) {\n spaces.push(tokens.length);\n } else {\n nonSpace = true;\n }\n\n tokens.push([ 'text', chr, start, start + 1 ]);\n start += 1;\n\n // Check for whitespace on the current line.\n if (chr === '\\n')\n stripSpace();\n }\n }\n\n // Match the opening tag.\n if (!scanner.scan(openingTagRe))\n break;\n\n hasTag = true;\n\n // Get the tag type.\n type = scanner.scan(tagRe) || 'name';\n scanner.scan(whiteRe);\n\n // Get the tag value.\n if (type === '=') {\n value = scanner.scanUntil(equalsRe);\n scanner.scan(equalsRe);\n scanner.scanUntil(closingTagRe);\n } else if (type === '{') {\n value = scanner.scanUntil(closingCurlyRe);\n scanner.scan(curlyRe);\n scanner.scanUntil(closingTagRe);\n type = '&';\n } else {\n value = scanner.scanUntil(closingTagRe);\n }\n\n // Match the closing tag.\n if (!scanner.scan(closingTagRe))\n throw new Error('Unclosed tag at ' + scanner.pos);\n\n token = [ type, value, start, scanner.pos ];\n tokens.push(token);\n\n if (type === '#' || type === '^') {\n sections.push(token);\n } else if (type === '/') {\n // Check section nesting.\n openSection = sections.pop();\n\n if (!openSection)\n throw new Error('Unopened section \"' + value + '\" at ' + start);\n\n if (openSection[1] !== value)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + start);\n } else if (type === 'name' || type === '{' || type === '&') {\n nonSpace = true;\n } else if (type === '=') {\n // Set the tags for the next time around.\n compileTags(value);\n }\n }\n\n // Make sure there are no open sections when we're done.\n openSection = sections.pop();\n\n if (openSection)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + scanner.pos);\n\n return nestTokens(squashTokens(tokens));\n }\n\n /**\n * Combines the values of consecutive text tokens in the given `tokens` array\n * to a single token.\n */\n function squashTokens (tokens) {\n var squashedTokens = [];\n\n var token, lastToken;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n if (token) {\n if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {\n lastToken[1] += token[1];\n lastToken[3] = token[3];\n } else {\n squashedTokens.push(token);\n lastToken = token;\n }\n }\n }\n\n return squashedTokens;\n }\n\n /**\n * Forms the given array of `tokens` into a nested tree structure where\n * tokens that represent a section have two additional items: 1) an array of\n * all tokens that appear in that section and 2) the index in the original\n * template that represents the end of that section.\n */\n function nestTokens (tokens) {\n var nestedTokens = [];\n var collector = nestedTokens;\n var sections = [];\n\n var token, section;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n switch (token[0]) {\n case '#':\n case '^':\n collector.push(token);\n sections.push(token);\n collector = token[4] = [];\n break;\n case '/':\n section = sections.pop();\n section[5] = token[2];\n collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;\n break;\n default:\n collector.push(token);\n }\n }\n\n return nestedTokens;\n }\n\n /**\n * A simple string scanner that is used by the template parser to find\n * tokens in template strings.\n */\n function Scanner (string) {\n this.string = string;\n this.tail = string;\n this.pos = 0;\n }\n\n /**\n * Returns `true` if the tail is empty (end of string).\n */\n Scanner.prototype.eos = function eos () {\n return this.tail === '';\n };\n\n /**\n * Tries to match the given regular expression at the current position.\n * Returns the matched text if it can match, the empty string otherwise.\n */\n Scanner.prototype.scan = function scan (re) {\n var match = this.tail.match(re);\n\n if (!match || match.index !== 0)\n return '';\n\n var string = match[0];\n\n this.tail = this.tail.substring(string.length);\n this.pos += string.length;\n\n return string;\n };\n\n /**\n * Skips all text until the given regular expression can be matched. Returns\n * the skipped string, which is the entire tail if no match can be made.\n */\n Scanner.prototype.scanUntil = function scanUntil (re) {\n var index = this.tail.search(re), match;\n\n switch (index) {\n case -1:\n match = this.tail;\n this.tail = '';\n break;\n case 0:\n match = '';\n break;\n default:\n match = this.tail.substring(0, index);\n this.tail = this.tail.substring(index);\n }\n\n this.pos += match.length;\n\n return match;\n };\n\n /**\n * Represents a rendering context by wrapping a view object and\n * maintaining a reference to the parent context.\n */\n function Context (view, parentContext) {\n this.view = view;\n this.cache = { '.': this.view };\n this.parent = parentContext;\n }\n\n /**\n * Creates a new context using the given view with this context\n * as the parent.\n */\n Context.prototype.push = function push (view) {\n return new Context(view, this);\n };\n\n /**\n * Returns the value of the given name in this context, traversing\n * up the context hierarchy if the value is absent in this context's view.\n */\n Context.prototype.lookup = function lookup (name) {\n var cache = this.cache;\n\n var value;\n if (cache.hasOwnProperty(name)) {\n value = cache[name];\n } else {\n var context = this, names, index, lookupHit = false;\n\n while (context) {\n if (name.indexOf('.') > 0) {\n value = context.view;\n names = name.split('.');\n index = 0;\n\n /**\n * Using the dot notion path in `name`, we descend through the\n * nested objects.\n *\n * To be certain that the lookup has been successful, we have to\n * check if the last object in the path actually has the property\n * we are looking for. We store the result in `lookupHit`.\n *\n * This is specially necessary for when the value has been set to\n * `undefined` and we want to avoid looking up parent contexts.\n **/\n while (value != null && index < names.length) {\n if (index === names.length - 1)\n lookupHit = hasProperty(value, names[index]);\n\n value = value[names[index++]];\n }\n } else {\n value = context.view[name];\n lookupHit = hasProperty(context.view, name);\n }\n\n if (lookupHit)\n break;\n\n context = context.parent;\n }\n\n cache[name] = value;\n }\n\n if (isFunction(value))\n value = value.call(this.view);\n\n return value;\n };\n\n /**\n * A Writer knows how to take a stream of tokens and render them to a\n * string, given a context. It also maintains a cache of templates to\n * avoid the need to parse the same template twice.\n */\n function Writer () {\n this.cache = {};\n }\n\n /**\n * Clears all cached templates in this writer.\n */\n Writer.prototype.clearCache = function clearCache () {\n this.cache = {};\n };\n\n /**\n * Parses and caches the given `template` and returns the array of tokens\n * that is generated from the parse.\n */\n Writer.prototype.parse = function parse (template, tags) {\n var cache = this.cache;\n var tokens = cache[template];\n\n if (tokens == null)\n tokens = cache[template] = parseTemplate(template, tags);\n\n return tokens;\n };\n\n /**\n * High-level method that is used to render the given `template` with\n * the given `view`.\n *\n * The optional `partials` argument may be an object that contains the\n * names and templates of partials that are used in the template. It may\n * also be a function that is used to load partial templates on the fly\n * that takes a single argument: the name of the partial.\n */\n Writer.prototype.render = function render (template, view, partials) {\n var tokens = this.parse(template);\n var context = (view instanceof Context) ? view : new Context(view);\n return this.renderTokens(tokens, context, partials, template);\n };\n\n /**\n * Low-level method that renders the given array of `tokens` using\n * the given `context` and `partials`.\n *\n * Note: The `originalTemplate` is only ever used to extract the portion\n * of the original template that was contained in a higher-order section.\n * If the template doesn't use higher-order sections, this argument may\n * be omitted.\n */\n Writer.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate) {\n var buffer = '';\n\n var token, symbol, value;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n value = undefined;\n token = tokens[i];\n symbol = token[0];\n\n if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate);\n else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate);\n else if (symbol === '>') value = this.renderPartial(token, context, partials, originalTemplate);\n else if (symbol === '&') value = this.unescapedValue(token, context);\n else if (symbol === 'name') value = this.escapedValue(token, context);\n else if (symbol === 'text') value = this.rawValue(token);\n\n if (value !== undefined)\n buffer += value;\n }\n\n return buffer;\n };\n\n Writer.prototype.renderSection = function renderSection (token, context, partials, originalTemplate) {\n var self = this;\n var buffer = '';\n var value = context.lookup(token[1]);\n\n // This function is used to render an arbitrary template\n // in the current context by higher-order sections.\n function subRender (template) {\n return self.render(template, context, partials);\n }\n\n if (!value) return;\n\n if (isArray(value)) {\n for (var j = 0, valueLength = value.length; j < valueLength; ++j) {\n buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate);\n }\n } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {\n buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate);\n } else if (isFunction(value)) {\n if (typeof originalTemplate !== 'string')\n throw new Error('Cannot use higher-order sections without the original template');\n\n // Extract the portion of the original template that the section contains.\n value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);\n\n if (value != null)\n buffer += value;\n } else {\n buffer += this.renderTokens(token[4], context, partials, originalTemplate);\n }\n return buffer;\n };\n\n Writer.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate) {\n var value = context.lookup(token[1]);\n\n // Use JavaScript's definition of falsy. Include empty arrays.\n // See https://github.com/janl/mustache.js/issues/186\n if (!value || (isArray(value) && value.length === 0))\n return this.renderTokens(token[4], context, partials, originalTemplate);\n };\n\n Writer.prototype.renderPartial = function renderPartial (token, context, partials) {\n if (!partials) return;\n\n var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\n if (value != null)\n return this.renderTokens(this.parse(value), context, partials, value);\n };\n\n Writer.prototype.unescapedValue = function unescapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return value;\n };\n\n Writer.prototype.escapedValue = function escapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return mustache.escape(value);\n };\n\n Writer.prototype.rawValue = function rawValue (token) {\n return token[1];\n };\n\n mustache.name = 'mustache.js';\n mustache.version = '2.3.0';\n mustache.tags = [ '{{', '}}' ];\n\n // All high-level mustache.* functions use this writer.\n var defaultWriter = new Writer();\n\n /**\n * Clears all cached templates in the default writer.\n */\n mustache.clearCache = function clearCache () {\n return defaultWriter.clearCache();\n };\n\n /**\n * Parses and caches the given template in the default writer and returns the\n * array of tokens it contains. Doing this ahead of time avoids the need to\n * parse templates on the fly as they are rendered.\n */\n mustache.parse = function parse (template, tags) {\n return defaultWriter.parse(template, tags);\n };\n\n /**\n * Renders the `template` with the given `view` and `partials` using the\n * default writer.\n */\n mustache.render = function render (template, view, partials) {\n if (typeof template !== 'string') {\n throw new TypeError('Invalid template! Template should be a \"string\" ' +\n 'but \"' + typeStr(template) + '\" was given as the first ' +\n 'argument for mustache#render(template, view, partials)');\n }\n\n return defaultWriter.render(template, view, partials);\n };\n\n // This is here for backwards compatibility with 0.4.x.,\n /*eslint-disable */ // eslint wants camel cased function name\n mustache.to_html = function to_html (template, view, partials, send) {\n /*eslint-enable*/\n\n var result = mustache.render(template, view, partials);\n\n if (isFunction(send)) {\n send(result);\n } else {\n return result;\n }\n };\n\n // Export the escaping function so that the user may override it.\n // See https://github.com/janl/mustache.js/issues/244\n mustache.escape = escapeHtml;\n\n // Export these mainly for testing, but also for advanced usage.\n mustache.Scanner = Scanner;\n mustache.Context = Context;\n mustache.Writer = Writer;\n\n return mustache;\n}));\n","import mustache from \"mustache\";\n\nconst html = `\n\n\n`;\n\nconst template = `\n
    \n
    \n {{#authors}}\n
    \n {{#personalURL}}\n {{name}}\n {{/personalURL}}\n {{^personalURL}}\n
    {{name}}
    \n {{/personalURL}}\n {{#affiliation}}\n {{#affiliationURL}}\n {{affiliation}}\n {{/affiliationURL}}\n {{^affiliationURL}}\n
    {{affiliation}}
    \n {{/affiliationURL}}\n {{/affiliation}}\n
    \n {{/authors}}\n
    \n
    \n
    {{publishedMonth}}. {{publishedDay}}
    \n
    {{publishedYear}}
    \n
    \n \n
    Citation:
    \n
    {{concatenatedAuthors}}, {{publishedYear}}
    \n
    \n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-byline');\n if (el) {\n el.innerHTML = html + mustache.render(template, data);\n }\n}\n","const html = `\n\n\n
    \n

    References

    \n \n

    Errors, Reuse, and Citation

    \n

    If you see mistakes or want to suggest changes, please create an issue on GitHub.

    \n

    Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on GitHub. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: “Figure from …”.

    \n

    For attribution in academic contexts, please cite this work as

    \n
    \n  

    BibTeX citation

    \n
    \n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-appendix')\n if (el) {\n let oldHtml = el.innerHTML;\n el.innerHTML = html;\n let div = el.querySelector(\"div.l-body\")\n\n if (dom.querySelector(\"dt-fn\")) {\n div.innerHTML = `

    Footnotes

    ` + div.innerHTML;\n }\n\n div.innerHTML = oldHtml + div.innerHTML;\n if (data.githubCompareUpdatesUrl) {\n div.innerHTML = `

    Updates

    View all changes to this article since it was first published.

    ` + div.innerHTML;\n }\n\n el.querySelector(\"a.github\").setAttribute(\"href\", data.githubUrl);\n el.querySelector(\"a.github-issue\").setAttribute(\"href\", data.githubUrl + \"/issues/new\");\n el.querySelector(\".citation.short\").textContent = data.concatenatedAuthors + \", \" + '\"' + data.title + '\", Distill, ' + data.publishedYear + \".\";\n var bibtex = \"@article{\" + data.slug + \",\\n\";\n bibtex += \" author = {\" + data.bibtexAuthors + \"},\\n\";\n bibtex += \" title = {\" + data.title + \"},\\n\";\n bibtex += \" journal = {Distill},\\n\";\n bibtex += \" year = {\" + data.publishedYear + \"},\\n\";\n bibtex += \" note = {\" + data.url + \"}\\n\";\n bibtex += \"}\";\n el.querySelector(\".citation.long\").textContent = bibtex;\n }\n\n}\n","import logo from \"./distill-logo.svg\";\n\nlet html = `\n\n\n
    \n \n ${logo}\n Distill\n is dedicated to clear explanations of machine learning\n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-footer\");\n if(el) {\n el.innerHTML = html;\n } else {\n let footer = dom.createElement(\"dt-footer\");\n footer.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.appendChild(footer);\n }\n}\n","export default function(dom, data) {\n let css = `\n dt-cite {\n color: hsla(206, 90%, 20%, 0.7);\n }\n dt-cite .citation-number {\n cursor: default;\n white-space: nowrap;\n font-family: -apple-system, BlinkMacSystemFont, \"Roboto\", Helvetica, sans-serif;\n font-size: 75%;\n color: hsla(206, 90%, 20%, 0.7);\n display: inline-block;\n line-height: 1.1em;\n text-align: center;\n position: relative;\n top: -2px;\n margin: 0 2px;\n }\n figcaption dt-cite .citation-number {\n font-size: 11px;\n font-weight: normal;\n top: -2px;\n line-height: 1em;\n }\n `;\n\n let style = dom.createElement(\"style\");\n style.textContent = css;\n dom.querySelector(\"body\").appendChild(style);\n\n let citations = data.citations;\n /*if (data.citations) {\n citations = Object.keys(data.citations).map(c => data.citations[c]);\n citations.sort((a, b) => {\n return a.author.localeCompare(b.author);\n });\n }*/\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach((el,n) => {\n var key = el.getAttribute(\"key\");\n if (key) {\n var keys = key.split(\",\");\n var cite_string = inline_cite_short(keys);\n var cite_hover_str = \"\";\n keys.map((key,n) => {\n if (n>0) cite_hover_str += \"

    \";\n cite_hover_str += hover_cite(data.bibliography[key]);\n });\n cite_hover_str = cite_hover_str.replace(/\"/g, \"'\")\n var orig_string = el.innerHTML;\n if (orig_string != \"\") orig_string += \" \";\n el.innerHTML = `${orig_string}${cite_string}`;\n }\n });\n\n let bibEl = dom.querySelector(\"dt-bibliography\");\n if (bibEl) {\n let ol = dom.createElement(\"ol\");\n citations.forEach(key => {\n let el = dom.createElement(\"li\");\n el.innerHTML = bibliography_cite(data.bibliography[key]);\n ol.appendChild(el);\n })\n bibEl.appendChild(ol);\n }\n\n function inline_cite_short(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var n = data.citations.indexOf(key)+1;\n return \"\"+n;\n } else {\n return \"?\";\n }\n }\n return \"[\"+keys.map(cite_string).join(\", \")+\"]\";\n }\n\n function inline_cite_long(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var ent = data.bibliography[key];\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var year = ent.year;\n if (names.length == 1) return names[0] + \", \" + year;\n if (names.length == 2) return names[0] + \" & \" + names[1] + \", \" + year;\n if (names.length > 2) return names[0] + \", et al., \" + year;\n } else {\n return \"?\";\n }\n }\n return keys.map(cite_string).join(\", \");\n }\n\n function author_string(ent, template, sep, finalSep){\n var names = ent.author.split(\" and \");\n let name_strings = names.map(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1];\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n var initials = \"\";\n if (firsts != undefined) {\n initials = firsts.trim().split(\" \").map(s => s.trim()[0]);\n initials = initials.join(\".\")+\".\";\n }\n return template.replace(\"${F}\", firsts)\n .replace(\"${L}\", last)\n .replace(\"${I}\", initials);\n });\n if (names.length > 1) {\n var str = name_strings.slice(0, names.length-1).join(sep);\n str += (finalSep || sep) + name_strings[names.length-1];\n return str;\n } else {\n return name_strings[0];\n }\n }\n\n function venue_string(ent) {\n var cite = (ent.journal || ent.booktitle || \"\")\n if (\"volume\" in ent){\n var issue = ent.issue || ent.number;\n issue = (issue != undefined)? \"(\"+issue+\")\" : \"\";\n cite += \", Vol \" + ent.volume + issue;\n }\n if (\"pages\" in ent){\n cite += \", pp. \" + ent.pages\n }\n if (cite != \"\") cite += \". \"\n if (\"publisher\" in ent){\n cite += ent.publisher;\n if (cite[cite.length-1] != \".\") cite += \".\";\n }\n return cite;\n }\n\n function link_string(ent){\n if (\"url\" in ent){\n var url = ent.url;\n var arxiv_match = (/arxiv\\.org\\/abs\\/([0-9\\.]*)/).exec(url);\n if (arxiv_match != null){\n url = `http://arxiv.org/pdf/${arxiv_match[1]}.pdf`;\n }\n\n if (url.slice(-4) == \".pdf\"){\n var label = \"PDF\";\n } else if (url.slice(-5) == \".html\") {\n var label = \"HTML\";\n }\n return `  [${label||\"link\"}]`;\n }/* else if (\"doi\" in ent){\n return `  [DOI]`;\n }*/ else {\n return \"\";\n }\n }\n function doi_string(ent, new_line){\n if (\"doi\" in ent) {\n return `${new_line?\"
    \":\"\"} DOI: ${ent.doi}`;\n } else {\n return \"\";\n }\n }\n\n function bibliography_cite(ent, fancy){\n if (ent){\n var cite = \"\" + ent.title + \" \"\n cite += link_string(ent) + \"
    \";\n cite += author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += venue_string(ent);\n cite += doi_string(ent);\n return cite\n /*var cite = author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += \"\" + ent.title + \". \";\n cite += venue_string(ent);\n cite += doi_string(ent);\n cite += link_string(ent);\n return cite*/\n } else {\n return \"?\";\n }\n }\n\n function hover_cite(ent){\n if (ent){\n var cite = \"\";\n cite += \"\" + ent.title + \"\";\n cite += link_string(ent);\n cite += \"
    \"\n\n var a_str = author_string(ent, \"${I} ${L}\", \", \") + \".\";\n var v_str = venue_string(ent).trim() + \" \" + ent.year + \". \" + doi_string(ent, true);\n\n if ((a_str+v_str).length < Math.min(40, ent.title.length)) {\n cite += a_str + \" \" + v_str;\n } else {\n cite += a_str + \"
    \" + v_str;\n }\n return cite;\n } else {\n return \"?\";\n }\n }\n\n\n //https://scholar.google.com/scholar?q=allintitle%3ADocument+author%3Aolah\n function get_GS_URL(ent){\n if (ent){\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var title = ent.title.split(\" \")//.replace(/[,:]/, \"\")\n var url = \"http://search.labs.crossref.org/dois?\"//\"\"https://scholar.google.com/scholar?\"\n url += uris({q: names.join(\" \") + \" \" + title.join(\" \")})\n }\n\n }\n}\n","export default function(dom, data) {\n\n var fnTags = [].slice.apply(dom.querySelectorAll(\"dt-fn\"));\n var fnContent = [];\n fnTags.forEach((el,n) => {\n var content = el.innerHTML;\n fnContent.push(content);\n n = (n+1)+\"\";\n var key = \"fn-\"+n;\n var escaped_content = content.replace(/\"/g, \"'\");\n el.innerHTML = `${n}`;\n });\n\n let fnList = dom.querySelector(\"dt-fn-list\");\n if (fnList) {\n let ol = dom.createElement(\"ol\");\n fnContent.forEach(content => {\n let el = dom.createElement(\"li\");\n el.innerHTML = content;\n ol.appendChild(el);\n })\n fnList.appendChild(ol);\n }\n\n}\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n */\n\n;(function() {\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^( *[-*_]){3,} *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,\n nptable: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n blockquote: /^( *>[^\\n]+(\\n(?!def)[^\\n]+)*\\n*)+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n table: noop,\n paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,\n text: /^[^\\n]+/\n};\n\nblock.bullet = /(?:[*+-]|\\d+\\.)/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = replace(block.item, 'gm')\n (/bull/g, block.bullet)\n ();\n\nblock.list = replace(block.list)\n (/bull/g, block.bullet)\n ('hr', '\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))')\n ('def', '\\\\n+(?=' + block.def.source + ')')\n ();\n\nblock.blockquote = replace(block.blockquote)\n ('def', block.def)\n ();\n\nblock._tag = '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'\n + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'\n + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|[^\\\\w\\\\s@]*@)\\\\b';\n\nblock.html = replace(block.html)\n ('comment', //)\n ('closed', /<(tag)[\\s\\S]+?<\\/\\1>/)\n ('closing', /])*?>/)\n (/tag/g, block._tag)\n ();\n\nblock.paragraph = replace(block.paragraph)\n ('hr', block.hr)\n ('heading', block.heading)\n ('lheading', block.lheading)\n ('blockquote', block.blockquote)\n ('tag', '<' + block._tag)\n ('def', block.def)\n ();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]*?)\\s*\\1 *(?:\\n+|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = replace(block.paragraph)\n ('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n ();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top, bq) {\n var src = src.replace(/^ +$/gm, '')\n , next\n , loose\n , cap\n , bull\n , b\n , item\n , space\n , i\n , l;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic\n ? cap.replace(/\\n+$/, '')\n : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top, true);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n\n this.tokens.push({\n type: 'list_start',\n ordered: bull.length > 1\n });\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n this.tokens.push({\n type: loose\n ? 'loose_item_start'\n : 'list_item_start'\n });\n\n // Recurse.\n this.token(item, false, bq);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if ((!bq && top) && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.links[cap[1].toLowerCase()] = {\n href: cap[2],\n title: cap[3]\n };\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i]\n .replace(/^ *\\| *| *\\| *$/g, '')\n .split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n autolink: /^<([^ >]+(@|:\\/)[^ >]+)>/,\n url: noop,\n tag: /^|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^\\b_((?:[^_]|__)+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n code: /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n text: /^[\\s\\S]+?(?=[\\\\?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\ninline.link = replace(inline.link)\n ('inside', inline._inside)\n ('href', inline._href)\n ();\n\ninline.reflink = replace(inline.reflink)\n ('inside', inline._inside)\n ();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: replace(inline.escape)('])', '~|])')(),\n url: /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n text: replace(inline.text)\n (']|', '~]|')\n ('|', '|https?://|')\n ()\n});\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: replace(inline.br)('{2,}', '*')(),\n text: replace(inline.gfm.text)('{2,}', '*')()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer;\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new\n Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n var out = ''\n , link\n , text\n , href\n , cap;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += cap[1];\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = cap[1].charAt(6) === ':'\n ? this.mangle(cap[1].substring(7))\n : this.mangle(cap[1]);\n href = this.mangle('mailto:') + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n src = src.substring(cap[0].length);\n text = escape(cap[1]);\n href = text;\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^/i.test(cap[0])) {\n this.inLink = false;\n }\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0]\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out += this.outputLink(cap, {\n href: cap[2],\n title: cap[3]\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2], true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = escape(link.href)\n , title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = ''\n , l = text.length\n , i = 0\n , ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || {};\n}\n\nRenderer.prototype.code = function(code, lang, escaped) {\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '\\n
    ';\n }\n\n return '
    '\n    + (escaped ? code : escape(code, true))\n    + '\\n
    \\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '
    \\n' + quote + '
    \\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw) {\n return ''\n + text\n + '\\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n};\n\nRenderer.prototype.list = function(body, ordered) {\n var type = ordered ? 'ol' : 'ul';\n return '<' + type + '>\\n' + body + '\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '
  • ' + text + '
  • \\n';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '

    ' + text + '

    \\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + '\\n'\n + body\n + '\\n'\n + '
    \\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '\\n' + content + '\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' style=\"text-align:' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.em = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? '
    ' : '
    ';\n};\n\nRenderer.prototype.del = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n if (this.options.sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return '';\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0) {\n return '';\n }\n }\n var out = '
    ';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n var out = '\"'' : '>';\n return out;\n};\n\nRenderer.prototype.text = function(text) {\n return text;\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer;\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options, renderer) {\n var parser = new Parser(options, renderer);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options, this.renderer);\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n this.token.text);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = ''\n , body = ''\n , i\n , row\n , cell\n , flags\n , j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n flags = { header: true, align: this.token.align[i] };\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n var body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n var body = ''\n , ordered = this.token.ordered;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered);\n }\n case 'list_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'loose_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'html': {\n var html = !this.token.pre && !this.options.pedantic\n ? this.inline.output(this.token.text)\n : this.token.text;\n return this.renderer.html(html);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n }\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n return html\n .replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\nfunction unescape(html) {\n\t// explicitly match decimal, hex, and named HTML entities \n return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/g, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction replace(regex, opt) {\n regex = regex.source;\n opt = opt || '';\n return function self(name, val) {\n if (!name) return new RegExp(regex, opt);\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return self;\n };\n}\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1\n , target\n , key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n\n var highlight = opt.highlight\n , tokens\n , pending\n , i = 0;\n\n try {\n tokens = Lexer.lex(src, opt)\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/chjj/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occured:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n sanitizer: null,\n mangle: true,\n smartLists: false,\n silent: false,\n highlight: null,\n langPrefix: 'lang-',\n smartypants: false,\n headerPrefix: '',\n renderer: new Renderer,\n xhtml: false\n};\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.parse = marked;\n\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n this.marked = marked;\n}\n\n}).call(function() {\n return this || (typeof window !== 'undefined' ? window : global);\n}());\n","import marked from 'marked';\n\nmarked.setOptions({\n gfm: true,\n smartypants: true\n});\n\nexport default function(dom, data) {\n let markdownElements = [].slice.call(dom.querySelectorAll('[markdown]'));\n markdownElements.forEach(el => {\n let content = el.innerHTML;\n // Set default indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n\n el.innerHTML = marked(content);\n });\n}\n","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = _self.Prism = {\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/ text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\tbreak tokenloop;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t delNum = 1;\n\n\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t to = match.index + match[0].length,\n\t\t\t\t\t\t k = i,\n\t\t\t\t\t\t p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && p < to; ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t match = match[0].slice(lookbehindLength),\n\t\t\t\t\t to = from + match.length,\n\t\t\t\t\t before = str.slice(0, from),\n\t\t\t\t\t after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (env.type == 'comment') {\n\t\tenv.attributes['spellcheck'] = 'true';\n\t}\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n \t// In worker\n\t_self.addEventListener('message', function(evt) {\n\t\tvar message = JSON.parse(evt.data),\n\t\t lang = message.language,\n\t\t code = message.code,\n\t\t immediateClose = message.immediateClose;\n\n\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\tif (immediateClose) {\n\t\t\t_self.close();\n\t\t}\n\t}, false);\n\n\treturn _self.Prism;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (document.addEventListener && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': //,\n\t'prolog': /<\\?[\\w\\W]+?\\?>/,\n\t'doctype': //i,\n\t'cdata': //i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\w\\W])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:('|\")[\\w\\W]*?(\\1)|[^\\s>]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /[=>\"']/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\w\\W]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^\\{\\}\\s][^\\{\\};]*?(?=\\s*\\{)/,\n\t'string': {\n\t\tpattern: /(\"|')(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'property': /(\\b|\\B)[\\w-]+(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|').*?\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\w\\W]*?\\*\\//,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[a-z0-9_\\.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /(\\.|\\\\)/\n\t\t}\n\t},\n\t'keyword': /\\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(0x[\\dA-Fa-f]+|0b[01]+|0o[0-7]+|\\d*\\.?\\d+([Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*(?=\\()/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*\\*?|\\/|~|\\^|%|\\.{3}/\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[.+?]|\\\\.|[^/\\\\\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\\\\\|\\\\?[^\\\\])*?`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript'\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tif(Array.prototype.forEach) { // Check to prevent error in IE8\n\t\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\t\tvar language, parent = pre;\n\t\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\t\tparent = parent.parentNode;\n\t\t\t\t}\n\n\t\t\t\tif (parent) {\n\t\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t\t}\n\n\t\t\t\tif (!language) {\n\t\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t\t}\n\n\t\t\t\tvar code = document.createElement('code');\n\t\t\t\tcode.className = 'language-' + language;\n\n\t\t\t\tpre.textContent = '';\n\n\t\t\t\tcode.textContent = 'Loading…';\n\n\t\t\t\tpre.appendChild(code);\n\n\t\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\t\txhr.open('GET', src, true);\n\n\t\t\t\txhr.onreadystatechange = function () {\n\t\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\txhr.send(null);\n\t\t\t});\n\t\t}\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\n})();\n","import Prism from \"prismjs\";\n\nexport default function(dom, data) {\n let codeElements = [].slice.call(dom.querySelectorAll(\"dt-code\"));\n codeElements.forEach(el => {\n let content = el.textContent;\n el.innerHTML = \"\";\n let language = el.getAttribute(\"language\");\n let c = dom.createElement(\"code\");\n if (el.getAttribute(\"block\") === \"\") {\n // Let's normalize the tab indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n let p = dom.createElement(\"pre\");\n p.appendChild(c);\n el.appendChild(p);\n } else {\n el.appendChild(c);\n }\n let highlighted = content;\n if (Prism.languages[language]) {\n c.setAttribute(\"class\", \"language-\" + language);\n highlighted = Prism.highlight(content, Prism.languages[language]);\n }\n c.innerHTML = highlighted;\n });\n}\n","export default function(dom, data) {\n\n var textNodes = dom.createTreeWalker(\n dom.body,\n dom.defaultView.NodeFilter.SHOW_TEXT\n );\n while (textNodes.nextNode()) {\n var n = textNodes.currentNode,\n text = n.nodeValue;\n if (text && acceptNode(n)) {\n text = quotes(text);\n text = punctuation(text);\n n.nodeValue = text;\n }\n }\n}\n\nfunction acceptNode(node) {\n var parent = node.parentElement;\n var isMath = (parent && parent.getAttribute && parent.getAttribute(\"class\")) ? parent.getAttribute(\"class\").includes(\"katex\") || parent.getAttribute(\"class\").includes(\"MathJax\") : false;\n return parent &&\n parent.nodeName !== \"SCRIPT\" &&\n parent.nodeName !== \"STYLE\" &&\n parent.nodeName !== \"CODE\" &&\n parent.nodeName !== \"PRE\" &&\n parent.nodeName !== \"SPAN\" &&\n parent.nodeName !== \"DT-HEADER\" &&\n parent.nodeName !== \"DT-BYLINE\" &&\n parent.nodeName !== \"DT-MATH\" &&\n parent.nodeName !== \"DT-CODE\" &&\n parent.nodeName !== \"DT-BIBLIOGRAPHY\" &&\n parent.nodeName !== \"DT-FOOTER\" &&\n parent.nodeType !== 8 && //comment nodes\n !isMath;\n}\n\n\n/*!\n * typeset - Typesetting for the web\n * @version v0.1.6\n * @link https://github.com/davidmerfield/Typeset.js\n * @author David Merfield\n */\n // which has a CC0 license\n // http://creativecommons.org/publicdomain/zero/1.0/\n\n\nfunction punctuation(text){\n\n // Dashes\n text = text.replace(/--/g, '\\u2014');\n text = text.replace(/ \\u2014 /g,\"\\u2009\\u2014\\u2009\"); //this has thin spaces\n\n // Elipses\n text = text.replace(/\\.\\.\\./g,'…');\n\n // Nbsp for punc with spaces\n var NBSP = \"\\u00a0\";\n var NBSP_PUNCTUATION_START = /([«¿¡]) /g;\n var NBSP_PUNCTUATION_END = / ([\\!\\?:;\\.,‽»])/g;\n\n text = text.replace(NBSP_PUNCTUATION_START, '$1' + NBSP);\n text = text.replace(NBSP_PUNCTUATION_END, NBSP + '$1');\n\n return text;\n}\n\nfunction quotes(text) {\n\n text = text\n .replace(/(\\W|^)\"([^\\s\\!\\?:;\\.,‽»])/g, '$1\\u201c$2') // beginning \"\n .replace(/(\\u201c[^\"]*)\"([^\"]*$|[^\\u201c\"]*\\u201c)/g, '$1\\u201d$2') // ending \"\n .replace(/([^0-9])\"/g,'$1\\u201d') // remaining \" at end of word\n .replace(/(\\W|^)'(\\S)/g, '$1\\u2018$2') // beginning '\n .replace(/([a-z])'([a-z])/ig, '$1\\u2019$2') // conjunction's possession\n .replace(/((\\u2018[^']*)|[a-z])'([^0-9]|$)/ig, '$1\\u2019$3') // ending '\n .replace(/(\\u2018)([0-9]{2}[^\\u2019]*)(\\u2018([^0-9]|$)|$|\\u2019[a-z])/ig, '\\u2019$2$3') // abbrev. years like '93\n .replace(/(\\B|^)\\u2018(?=([^\\u2019]*\\u2019\\b)*([^\\u2019\\u2018]*\\W[\\u2019\\u2018]\\b|[^\\u2019\\u2018]*$))/ig, '$1\\u2019') // backwards apostrophe\n .replace(/'''/g, '\\u2034') // triple prime\n .replace(/(\"|'')/g, '\\u2033') // double prime\n .replace(/'/g, '\\u2032');\n\n // Allow escaped quotes\n text = text.replace(/\\\\“/, '\\\"');\n text = text.replace(/\\\\”/, '\\\"');\n text = text.replace(/\\\\’/, '\\'');\n text = text.replace(/\\\\‘/, '\\'');\n\n return text;\n}\n\nfunction ligatures(text){\n\n text = text.replace(/fi/g, 'fi');\n text = text.replace(/fl/g, 'fl');\n\n return text;\n};\n","import code from './hover-box.txt';\n\nexport default function(dom) {\n let s = dom.createElement(\"script\");\n s.textContent = code;\n dom.querySelector(\"body\").appendChild(s);\n}\n","//import xml from \"xml\";\n\nexport default function(data) {\n\n\n var date = data.publishedDate;\n\n var batch_timestamp = Math.floor(Date.now() / 1000);\n var batch_id = data.authors.length ? data.authors[0].lastName.toLowerCase().slice(0,20) : \"Anonymous\";\n batch_id += \"_\" + date.getFullYear();\n batch_id += \"_\" + data.title.split(\" \")[0].toLowerCase().slice(0,20) + \"_\" + batch_timestamp;\n // generate XML\n var crf_data =\n {doi_batch : [\n\n { _attr: {\n version: \"4.3.7\",\n xmlns: \"http://www.crossref.org/schema/4.3.7\",\n \"xmlns:xsi\": \"http://www.w3.org/2001/XMLSchema-instance\",\n \"xsi:schemaLocation\": \"http://www.crossref.org/schema/4.3.7 http://www.crossref.org/schemas/crossref4.3.7.xsd\",\n }},\n\n { head: [\n {doi_batch_id: batch_id},\n {timestamp: batch_timestamp},\n {depositor: [\n {depositor_name: data.journal.publisherName},\n {email_address: data.journal.publisherEmail},\n ]},\n {registrant: data.journal.publisherName},\n ]},\n\n {body: [\n {journal: [\n\n {journal_metadata: [\n {full_title: data.journal.full_title || data.journal.title},\n {abbrev_title: data.journal.abbrev_title || data.journal.title || data.journal.full_title},\n {issn: data.journal.issn},\n {doi_data: [\n {doi: data.journal.doi},\n {resource: data.journal.url},\n ]},\n ]},\n\n {journal_issue: [\n {publication_date: [\n {month: date.getMonth()+1},\n {year: date.getFullYear()},\n ]},\n {journal_volume: [\n {volume: data.volume},\n ]},\n {issue: data.issue},\n ]},\n\n {journal_article: [\n {titles: [\n {title: data.title},\n ]},\n { contributors:\n data.authors.map((author, ind) => (\n {person_name: [\n { _attr: {\n contributor_role: \"author\",\n sequence: (ind == 0)? \"first\" : \"additional\"\n }},\n {given_name: author.firstName},\n {surname: author.lastName},\n {affiliation: author.affiliation}\n // TODO: ORCID?\n ]}\n ))\n },\n {publication_date: [\n {month: date.getMonth()+1},\n {day: date.getDate()},\n {year: date.getFullYear()}\n ]},\n { publisher_item: [\n {item_number: data.doi}\n ]},\n {doi_data: [\n {doi: data.doi},\n //{timestamp: \"\"},\n {resource: data.url},\n ]},\n {citation_list:\n data.citations.map(key =>\n citation_xml(key, data.bibliography[key]))\n }\n\n ]},\n\n ]},\n ]},\n ]};\n\n return xml(crf_data);\n}\n\nfunction citation_xml(key, ent){\n if (ent == undefined) return {};\n var info = [];\n info.push({_attr: {key: key}});\n if (\"title\" in ent)\n info.push({article_title: ent.title});\n if (\"author\" in ent)\n info.push({author: ent.author.split(\" and \")[0].split(\",\")[0].trim()});\n if (\"journal\" in ent)\n info.push({journal_title: ent.journal});\n if (\"booktitle\" in ent)\n info.push({volume_title: ent.booktitle});\n if (\"volume\" in ent)\n info.push({volume: ent.volume});\n if (\"issue\" in ent)\n info.push({issue: ent.issue});\n if (\"doi\" in ent)\n info.push({doi: ent.doi});\n return {citation: info}\n}\n\nfunction xml(obj) {\n //console.log(typeof(obj), obj)\n if (typeof obj === 'string') return obj;\n if (typeof obj === 'number') return \"\"+obj;\n let keys = Object.keys(obj);\n if (keys.length != 1) console.error(\"can't interpret \", obj, \"as xml\");\n let name = keys[0];\n var full_content = obj[name];\n var attr = {};\n if (Array.isArray(full_content)){\n var content = [];\n for (var i in full_content) {\n var obj = full_content[i];\n var obj_name = Object.keys(obj)[0];\n if (\"_attr\" == obj_name) {\n attr = obj[\"_attr\"];\n } else {\n //console.log(Object.keys(obj)[0])\n content.push(obj);\n }\n }\n } else {\n content = full_content;\n }\n if (content == undefined){\n content = \"undefined\"\n }\n\n let attr_string = \"\";\n for (var k in attr) {\n attr_string += ` ${k}=\\\"${attr[k]}\\\"`\n }\n\n //console.log(typeof content, Array.isArray(content), content instanceof String, content)\n if (Array.isArray(content)){\n content = content.map(xml);\n content = content.join(\"\\n\").split(\"\\n\");\n content = content.map(s => \" \" + s).join(\"\\n\")\n var result = `<${name}${attr_string}>\\n${content}\\n`;\n } else {\n content = xml(content);\n var result = `<${name}${attr_string}>${content}`;\n }\n return result;\n}\n","import html from \"./components/html\";\nimport styles from \"./components/styles\";\nimport frontMatter from \"./components/front-matter\";\nimport bibliography from \"./components/bibliography\";\nimport expandData from \"./components/expand-data\";\nimport meta from \"./components/meta\";\nimport banner from \"./components/banner\";\nimport header from \"./components/header\";\nimport byline from \"./components/byline\";\nimport appendix from \"./components/appendix\";\nimport footer from \"./components/footer\";\nimport citation from \"./components/citation\";\nimport footnote from \"./components/footnote\";\nimport markdown from \"./components/markdown\";\nimport code from \"./components/code\";\nimport typeset from \"./components/typeset\";\nimport hoverBox from \"./components/hover-box-include\";\nimport generateCrossref from \"./components/generate-crossref\";\n\nfunction renderImmediately(dom) {\n html(dom);\n styles(dom);\n}\n\nfunction renderOnLoad(dom, data) {\n frontMatter(dom, data);\n bibliography(dom, data);\n expandData(dom, data);\n meta(dom, data);\n header(dom, data);\n byline(dom, data);\n appendix(dom, data);\n footer(dom, data);\n markdown(dom, data);\n code(dom, data);\n citation(dom, data);\n footnote(dom, data);\n typeset(dom, data);\n hoverBox(dom, data);\n}\n\n// If we are in a browser, render automatically...\nif(window && window.document) {\n let data = {};\n renderImmediately(window.document);\n window.document.addEventListener(\"DOMContentLoaded\", (event) => {\n renderOnLoad(window.document, data);\n // Add a banner if we're not on localhost.\n if (window.location.hostname !== \"localhost\" && window.location.origin !== \"file://\") {\n banner(window.document, data);\n }\n generateCrossref(data);\n });\n}\n\n// If we are in node...\nfunction render(dom, data) {\n renderImmediately(dom);\n renderOnLoad(dom, data);\n // Remove script tag so it doesn't run again in the client\n let s = dom.querySelector('script[src=\"http://distill.pub/template.js\"]');\n if (s) { s.parentElement.removeChild(s); };\n}\n\nexport {render as render};\nexport {generateCrossref as generateCrossref};\n"],"names":["let","meta","YAMLException","common","require$$0","Mark","this","Type","require$$1","require$$2","type","arguments","Schema","require$$3","require$$4","require$$5","require","_hasOwnProperty","_toString","require$$6","require$$7","_require","DEFAULT_SAFE_SCHEMA","DEFAULT_FULL_SCHEMA","loadAll","load","safeLoadAll","safeLoad","State","dump","safeDump","require$$8","require$$9","ymlParse","interval","day","timeDay","timeYear","timeSunday","timeMonday","locale","escape","const","html","define","global","Prism","code","render"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":null,"sources":["../components/html.js","../components/styles.js","../node_modules/js-yaml/lib/js-yaml/common.js","../node_modules/js-yaml/lib/js-yaml/exception.js","../node_modules/js-yaml/lib/js-yaml/mark.js","../node_modules/js-yaml/lib/js-yaml/type.js","../node_modules/js-yaml/lib/js-yaml/schema.js","../node_modules/js-yaml/lib/js-yaml/type/str.js","../node_modules/js-yaml/lib/js-yaml/type/seq.js","../node_modules/js-yaml/lib/js-yaml/type/map.js","../node_modules/js-yaml/lib/js-yaml/schema/failsafe.js","../node_modules/js-yaml/lib/js-yaml/type/null.js","../node_modules/js-yaml/lib/js-yaml/type/bool.js","../node_modules/js-yaml/lib/js-yaml/type/int.js","../node_modules/js-yaml/lib/js-yaml/type/float.js","../node_modules/js-yaml/lib/js-yaml/schema/json.js","../node_modules/js-yaml/lib/js-yaml/schema/core.js","../node_modules/js-yaml/lib/js-yaml/type/timestamp.js","../node_modules/js-yaml/lib/js-yaml/type/merge.js","../node_modules/js-yaml/lib/js-yaml/type/binary.js","../node_modules/js-yaml/lib/js-yaml/type/omap.js","../node_modules/js-yaml/lib/js-yaml/type/pairs.js","../node_modules/js-yaml/lib/js-yaml/type/set.js","../node_modules/js-yaml/lib/js-yaml/schema/default_safe.js","../node_modules/js-yaml/lib/js-yaml/type/js/undefined.js","../node_modules/js-yaml/lib/js-yaml/type/js/regexp.js","../node_modules/js-yaml/lib/js-yaml/type/js/function.js","../node_modules/js-yaml/lib/js-yaml/schema/default_full.js","../node_modules/js-yaml/lib/js-yaml/loader.js","../node_modules/js-yaml/lib/js-yaml/dumper.js","../node_modules/js-yaml/lib/js-yaml.js","../node_modules/js-yaml/index.js","../components/front-matter.js","../node_modules/bibtex-parse-js/bibtexParse.js","../components/bibliography.js","../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/utcMinute.js","../node_modules/d3-time/src/utcHour.js","../node_modules/d3-time/src/utcDay.js","../node_modules/d3-time/src/utcWeek.js","../node_modules/d3-time/src/utcMonth.js","../node_modules/d3-time/src/utcYear.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-time-format/src/isoFormat.js","../node_modules/d3-time-format/src/isoParse.js","../components/expand-data.js","../../node_modules/escape-html/index.js","../components/meta.js","../components/banner.js","../components/header.js","../node_modules/mustache/mustache.js","../components/byline.js","../components/appendix.js","../components/footer.js","../components/citation.js","../components/footnote.js","../node_modules/marked/lib/marked.js","../components/markdown.js","../node_modules/prismjs/prism.js","../components/code.js","../components/typeset.js","../components/hover-box-include.js","../components/generate-crossref.js","../index.js"],"sourcesContent":["export default function(dom) {\n if (!dom.querySelector(\"html\").getAttribute(\"lang\")) {\n dom.querySelector(\"html\").setAttribute(\"lang\", \"en\")\n }\n\n let head = dom.querySelector(\"head\");\n\n if (!dom.querySelector(\"meta[charset]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"charset\", \"utf-8\");\n head.appendChild(meta);\n }\n if (!dom.querySelector(\"meta[name=viewport]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"name\", \"viewport\");\n meta.setAttribute(\"content\", \"width=device-width, initial-scale=1\");\n head.appendChild(meta);\n }\n}\n","import base from './styles-base.css';\nimport layout from './styles-layout.css';\nimport article from './styles-article.css';\nimport code from './styles-code.css';\nimport print from './styles-print.css';\n\nexport default function(dom) {\n let s = dom.createElement(\"style\");\n s.textContent = base + layout + article + code + print;\n dom.querySelector(\"head\").appendChild(s);\n}\n","'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n var result = this.name + ': ';\n\n result += this.reason || '(unknown reason)';\n\n if (!compact && this.mark) {\n result += ' ' + this.mark.toString();\n }\n\n return result;\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n\nvar common = require('./common');\n\n\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\n\n\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head, start, tail, end, snippet;\n\n if (!this.buffer) return null;\n\n indent = indent || 4;\n maxLength = maxLength || 75;\n\n head = '';\n start = this.position;\n\n while (start > 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n\n tail = '';\n end = this.position;\n\n while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n\n snippet = this.buffer.slice(start, end);\n\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' +\n common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\n\nMark.prototype.toString = function toString(compact) {\n var snippet, where = '';\n\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n if (!compact) {\n snippet = this.getSnippet();\n\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n\n return where;\n};\n\n\nmodule.exports = Mark;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name, result) {\n var exclude = [];\n\n schema.include.forEach(function (includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n\n schema[name].forEach(function (currentType) {\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n exclude.push(previousIndex);\n }\n });\n\n result.push(currentType);\n });\n\n return result.filter(function (type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {}\n }, index, length;\n\n function collectType(type) {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n\n this.implicit.forEach(function (type) {\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n });\n\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\n\nSchema.DEFAULT = null;\n\n\nSchema.create = function createSchema() {\n var schemas, types;\n\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n\n if (!schemas.every(function (schema) { return schema instanceof Schema; })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n\n if (!types.every(function (type) { return type instanceof Type; })) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n return new Schema({\n include: schemas,\n explicit: types\n });\n};\n\n\nmodule.exports = Schema;\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 8\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 10 (except 0) or base 60\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch === ':') break;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n if (!hasDigits) return false;\n\n // if !base60 - done;\n if (ch !== ':') return true;\n\n // base60 almost not used, no needs to optimize\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch, base, digits = [];\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value, 16);\n return sign * parseInt(value, 8);\n }\n\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseInt(v, 10));\n });\n\n value = 0;\n base = 1;\n\n digits.forEach(function (d) {\n value += (d * base);\n base *= 60;\n });\n\n return sign * value;\n\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (object) { return '0b' + object.toString(2); },\n octal: function (object) { return '0' + object.toString(8); },\n decimal: function (object) { return object.toString(10); },\n hexadecimal: function (object) { return '0x' + object.toString(16).toUpperCase(); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n '^(?:[-+]?(?:[0-9][0-9_]*)\\\\.[0-9_]*(?:[eE][-+][0-9]+)?' +\n '|\\\\.[0-9_]+(?:[eE][-+][0-9]+)?' +\n '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' +\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data)) return false;\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign, base, digits;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n\n } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n\n value = 0.0;\n base = 1;\n\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n\n return sign * value;\n\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./failsafe')\n ],\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./json')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\nvar NodeBuffer;\n\ntry {\n // A trick for browserified version, to not include `Buffer` shim\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n // Wrap into Buffer for NodeJS and leave Array for browser\n if (NodeBuffer) return new NodeBuffer(result);\n\n return result;\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./core')\n ],\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n return true;\n}\n\nfunction constructJavascriptUndefined() {\n /*eslint-disable no-undefined*/\n return undefined;\n}\n\nfunction representJavascriptUndefined() {\n return '';\n}\n\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n if (data === null) return false;\n if (data.length === 0) return false;\n\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // if regexp starts with '/' it can have modifiers and must be properly closed\n // `/foo/gim` - modifiers tail can be maximum 3 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n\n if (modifiers.length > 3) return false;\n // if expression starts with /, is should be properly terminated\n if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n }\n\n return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // `/foo/gim` - tail can be maximum 4 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n\n return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object /*, style*/) {\n var result = '/' + object.source + '/';\n\n if (object.global) result += 'g';\n if (object.multiline) result += 'm';\n if (object.ignoreCase) result += 'i';\n\n return result;\n}\n\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n","'use strict';\n\nvar esprima;\n\n// Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n// If not found - try to fallback to window.esprima. If not\n// found too - then fail to parse.\n//\ntry {\n // workaround to exclude package from browserify list.\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n /*global window */\n if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n if (data === null) return false;\n\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true });\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction constructJavascriptFunction(data) {\n /*jslint evil:true*/\n\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true }),\n params = [],\n body;\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n throw new Error('Failed to resolve function');\n }\n\n ast.body[0].expression.params.forEach(function (param) {\n params.push(param.name);\n });\n\n body = ast.body[0].expression.body.range;\n\n // Esprima's ranges include the first '{' and the last '}' characters on\n // function expressions. So cut them out.\n /*eslint-disable no-new-func*/\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n}\n\nfunction representJavascriptFunction(object /*, style*/) {\n return object.toString();\n}\n\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n","// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [\n require('./default_safe')\n ],\n explicit: [\n require('../type/js/undefined'),\n require('../type/js/regexp'),\n require('../type/js/function')\n ]\n});\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00);\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n return new YAMLException(\n message,\n new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length;\n _position < _length;\n _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode) {\n var index, quantity;\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n throwError(state, 'duplicated mapping key');\n }\n _result[keyNode] = valueNode;\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else {\n break; // Reading is done. Go to the epilogue.\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if (state.lineIndent > nodeIndent && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!state.anchorMap.hasOwnProperty(alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag !== null && state.tag !== '!') {\n if (state.tag === '?') {\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length;\n typeIndex < typeQuantity;\n typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only assigned to plain scalars. So, it isn't\n // needed to check for 'kind' conformity.\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = {};\n state.anchorMap = {};\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n var documents = loadDocuments(input, options), index, length;\n\n for (index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nfunction safeLoadAll(input, output, options) {\n loadAll(input, output, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nfunction safeLoad(input, options) {\n return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// Simplified test for values allowed after the first character in plain style.\nfunction isPlainSafe(c) {\n // Uses a subset of nb-char - c-flow-indicator - \":\" - \"#\"\n // where nb-char ::= c-printable - b-char - c-byte-order-mark.\n return isPrintable(c) && c !== 0xFEFF\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // - \":\" - \"#\"\n && c !== CHAR_COLON\n && c !== CHAR_SHARP;\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n return isPrintable(c) && c !== 0xFEFF\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {\n var i;\n var char;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(string.charCodeAt(0))\n && !isWhitespace(string.charCodeAt(string.length - 1));\n\n if (singleLineOnly) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n return plain && !testAmbiguousType(string)\n ? STYLE_PLAIN : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (string[0] === ' ' && indentPerLevel > 9) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey) {\n state.dump = (function () {\n if (string.length === 0) {\n return \"''\";\n }\n if (!state.noCompatMode &&\n DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n return \"'\" + string + \"'\";\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = (string[0] === ' ') ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char;\n var escapeSeq;\n\n for (var i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n result += !escapeSeq && isPrintable(char)\n ? string[i]\n : escapeSeq || encodeHex(char);\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level, object[index], false, false)) {\n if (index !== 0) _result += ', ';\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || index !== 0) {\n _result += generateNextLine(state, level);\n }\n _result += '- ' + state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (index !== 0) pairBuffer += ', ';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + ': ';\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || index !== 0) {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n state.tag = explicit ? type.tag : '?';\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n writeBlockSequence(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey);\n }\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n state.dump = '!<' + state.tag + '> ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n if (writeNode(state, 0, input, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nfunction safeDump(input, options) {\n return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n","'use strict';\n\n\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\n\n\nfunction deprecated(name) {\n return function () {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\n\n\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\n\n// Deprecated schema names from JS-YAML 2.0.x\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\n\n// Deprecated functions from JS-YAML 1.x.x\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","'use strict';\n\n\nvar yaml = require('./lib/js-yaml.js');\n\n\nmodule.exports = yaml;\n","import ymlParse from \"js-yaml\";\n\nexport default function(dom, data) {\n let localData = {};\n let el = dom.querySelector('script[type=\"text/front-matter\"]');\n if (el) {\n let text = el.textContent;\n localData = ymlParse.safeLoad(text);\n }\n\n data.title = localData.title ? localData.title : \"Untitled\";\n data.description = localData.description ? localData.description : \"No description.\";\n\n data.authors = localData.authors ? localData.authors : [];\n\n data.authors = data.authors.map((author, i) =>{\n let a = {};\n let name = Object.keys(author)[0];\n if ((typeof author) === \"string\") {\n name = author;\n } else {\n a.personalURL = author[name];\n }\n let names = name.split(\" \");\n a.name = name;\n a.firstName = names.slice(0, names.length - 1).join(\" \");\n a.lastName = names[names.length -1];\n if(localData.affiliations[i]) {\n let affiliation = Object.keys(localData.affiliations[i])[0];\n if ((typeof localData.affiliations[i]) === \"string\") {\n affiliation = localData.affiliations[i]\n } else {\n a.affiliationURL = localData.affiliations[i][affiliation];\n }\n a.affiliation = affiliation;\n }\n return a;\n });\n \n\n}\n","/* start bibtexParse 0.0.22 */\n\n//Original work by Henrik Muehe (c) 2010\n//\n//CommonJS port by Mikola Lysenko 2013\n//\n//Port to Browser lib by ORCID / RCPETERS\n//\n//Issues:\n//no comment handling within strings\n//no string concatenation\n//no variable values yet\n//Grammar implemented here:\n//bibtex -> (string | preamble | comment | entry)*;\n//string -> '@STRING' '{' key_equals_value '}';\n//preamble -> '@PREAMBLE' '{' value '}';\n//comment -> '@COMMENT' '{' value '}';\n//entry -> '@' key '{' key ',' key_value_list '}';\n//key_value_list -> key_equals_value (',' key_equals_value)*;\n//key_equals_value -> key '=' value;\n//value -> value_quotes | value_braces | key;\n//value_quotes -> '\"' .*? '\"'; // not quite\n//value_braces -> '{' .*? '\"'; // not quite\n(function(exports) {\n\n function BibtexParser() {\n \n this.months = [\"jan\", \"feb\", \"mar\", \"apr\", \"may\", \"jun\", \"jul\", \"aug\", \"sep\", \"oct\", \"nov\", \"dec\"];\n this.notKey = [',','{','}',' ','='];\n this.pos = 0;\n this.input = \"\";\n this.entries = new Array();\n\n this.currentEntry = \"\";\n\n this.setInput = function(t) {\n this.input = t;\n };\n\n this.getEntries = function() {\n return this.entries;\n };\n\n this.isWhitespace = function(s) {\n return (s == ' ' || s == '\\r' || s == '\\t' || s == '\\n');\n };\n\n this.match = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n this.pos += s.length;\n } else {\n throw \"Token mismatch, expected \" + s + \", found \"\n + this.input.substring(this.pos);\n };\n this.skipWhitespace(canCommentOut);\n };\n\n this.tryMatch = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n return true;\n } else {\n return false;\n };\n this.skipWhitespace(canCommentOut);\n };\n\n /* when search for a match all text can be ignored, not just white space */\n this.matchAt = function() {\n while (this.input.length > this.pos && this.input[this.pos] != '@') {\n this.pos++;\n };\n\n if (this.input[this.pos] == '@') {\n return true;\n };\n return false;\n };\n\n this.skipWhitespace = function(canCommentOut) {\n while (this.isWhitespace(this.input[this.pos])) {\n this.pos++;\n };\n if (this.input[this.pos] == \"%\" && canCommentOut == true) {\n while (this.input[this.pos] != \"\\n\") {\n this.pos++;\n };\n this.skipWhitespace(canCommentOut);\n };\n };\n\n this.value_braces = function() {\n var bracecount = 0;\n this.match(\"{\", false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '}') {\n if (bracecount > 0) {\n bracecount--;\n } else {\n var end = this.pos;\n this.match(\"}\", false);\n return this.input.substring(start, end);\n };\n } else if (this.input[this.pos] == '{') {\n bracecount++;\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value\";\n };\n };\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.value_comment = function() {\n var str = '';\n var brcktCnt = 0;\n while (!(this.tryMatch(\"}\", false) && brcktCnt == 0)) {\n str = str + this.input[this.pos];\n if (this.input[this.pos] == '{')\n brcktCnt++;\n if (this.input[this.pos] == '}')\n brcktCnt--;\n if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n this.pos++;\n };\n return str;\n };\n\n this.value_quotes = function() {\n this.match('\"', false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '\"') {\n var end = this.pos;\n this.match('\"', false);\n return this.input.substring(start, end);\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n }\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.single_value = function() {\n var start = this.pos;\n if (this.tryMatch(\"{\")) {\n return this.value_braces();\n } else if (this.tryMatch('\"')) {\n return this.value_quotes();\n } else {\n var k = this.key();\n if (k.match(\"^[0-9]+$\"))\n return k;\n else if (this.months.indexOf(k.toLowerCase()) >= 0)\n return k.toLowerCase();\n else\n throw \"Value expected:\" + this.input.substring(start) + ' for key: ' + k;\n \n };\n };\n\n this.value = function() {\n var values = [];\n values.push(this.single_value());\n while (this.tryMatch(\"#\")) {\n this.match(\"#\");\n values.push(this.single_value());\n };\n return values.join(\"\");\n };\n\n this.key = function() {\n var start = this.pos;\n while (true) {\n if (this.pos >= this.input.length) {\n throw \"Runaway key\";\n };\n // а-яА-Я is Cyrillic\n //console.log(this.input[this.pos]);\n if (this.notKey.indexOf(this.input[this.pos]) >= 0) {\n return this.input.substring(start, this.pos);\n } else {\n this.pos++;\n \n };\n };\n };\n\n this.key_equals_value = function() {\n var key = this.key();\n if (this.tryMatch(\"=\")) {\n this.match(\"=\");\n var val = this.value();\n return [ key, val ];\n } else {\n throw \"... = value expected, equals sign missing:\"\n + this.input.substring(this.pos);\n };\n };\n\n this.key_value_list = function() {\n var kv = this.key_equals_value();\n this.currentEntry['entryTags'] = {};\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n while (this.tryMatch(\",\")) {\n this.match(\",\");\n // fixes problems with commas at the end of a list\n if (this.tryMatch(\"}\")) {\n break;\n }\n ;\n kv = this.key_equals_value();\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n };\n };\n\n this.entry_body = function(d) {\n this.currentEntry = {};\n this.currentEntry['citationKey'] = this.key();\n this.currentEntry['entryType'] = d.substring(1);\n this.match(\",\");\n this.key_value_list();\n this.entries.push(this.currentEntry);\n };\n\n this.directive = function() {\n this.match(\"@\");\n return \"@\" + this.key();\n };\n\n this.preamble = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'PREAMBLE';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.comment = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'COMMENT';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.entry = function(d) {\n this.entry_body(d);\n };\n\n this.bibtex = function() {\n while (this.matchAt()) {\n var d = this.directive();\n this.match(\"{\");\n if (d == \"@STRING\") {\n this.string();\n } else if (d == \"@PREAMBLE\") {\n this.preamble();\n } else if (d == \"@COMMENT\") {\n this.comment();\n } else {\n this.entry(d);\n }\n this.match(\"}\");\n };\n };\n };\n \n exports.toJSON = function(bibtex) {\n var b = new BibtexParser();\n b.setInput(bibtex);\n b.bibtex();\n return b.entries;\n };\n\n /* added during hackathon don't hate on me */\n exports.toBibtex = function(json) {\n var out = '';\n for ( var i in json) {\n out += \"@\" + json[i].entryType;\n out += '{';\n if (json[i].citationKey)\n out += json[i].citationKey + ', ';\n if (json[i].entry)\n out += json[i].entry ;\n if (json[i].entryTags) {\n var tags = '';\n for (var jdx in json[i].entryTags) {\n if (tags.length != 0)\n tags += ', ';\n tags += jdx + '= {' + json[i].entryTags[jdx] + '}';\n }\n out += tags;\n }\n out += '}\\n\\n';\n }\n return out;\n \n };\n\n})(typeof exports === 'undefined' ? this['bibtexParse'] = {} : exports);\n\n/* end bibtexParse */\n","import bibtexParse from \"bibtex-parse-js\";\n\nexport default function(dom, data) {\n let el = dom.querySelector('script[type=\"text/bibliography\"]');\n let citations = [];\n let bibliography = {};\n //TODO If we don't have a local element, make a request for the document.\n if (el) {\n let rawBib = el.textContent;\n let parsed = bibtexParse.toJSON(rawBib);\n if(parsed) {\n parsed.forEach(e => {\n for (var k in e.entryTags){\n var val = e.entryTags[k];\n val = val.replace(/[\\t\\n ]+/g, \" \");\n val = val.replace(/{\\\\[\"^`\\.'acu~Hvs]( )?([a-zA-Z])}/g,\n (full, x, char) => char);\n val = val.replace(/{\\\\([a-zA-Z])}/g,\n (full, char) => char);\n e.entryTags[k] = val;\n }\n bibliography[e.citationKey] = e.entryTags;\n bibliography[e.citationKey].type = e.entryType;\n });\n }\n\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach(el => {\n let key = el.getAttribute(\"key\");\n if (key) {\n let citationKeys = key.split(\",\");\n citationKeys.forEach(key => {\n if (citations.indexOf(key) == -1){\n citations.push(key);\n if (!(key in bibliography)){\n console.warn(\"No bibliography entry found for: \" + key);\n }\n }\n });\n }\n });\n }\n data.bibliography = bibliography;\n data.citations = citations;\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(new Date(+start)); while (offseti(start, step), floori(start), start < stop)\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) while (--step >= 0) while (offseti(date, 1), !test(date)) {} // eslint-disable-line no-empty\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(Math.floor(date / durationSecond) * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(Math.floor(date / durationMinute) * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute} from \"./duration\";\n\nvar hour = interval(function(date) {\n var offset = date.getTimezoneOffset() * durationMinute % durationHour;\n if (offset < 0) offset += durationHour;\n date.setTime(Math.floor((+date - offset) / durationHour) * durationHour + offset);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval\";\nimport {durationWeek} from \"./duration\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {timeDay, timeSunday, timeMonday, timeYear, utcDay, utcSunday, utcMonday, utcYear} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"S\": formatSeconds,\n \"U\": formatWeekNumberSunday,\n \"w\": formatWeekdayNumber,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"S\": formatUTCSeconds,\n \"U\": formatUTCWeekNumberSunday,\n \"w\": formatUTCWeekdayNumber,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"S\": parseSeconds,\n \"U\": parseWeekNumberSunday,\n \"w\": parseWeekdayNumber,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0);\n if (i != string.length) return null;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n var day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?:\\:?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekdayNumber(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekdayNumber(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {timeFormat} from \"d3-time-format\";\n\nexport default function(dom, data) {\n\n data.authors = data.authors || [];\n\n // paths\n data.url = \"http://distill.pub/\" + data.distillPath;\n data.githubUrl = \"https://github.com/\" + data.githubPath;\n\n // Homepage\n //data.homepage = !post.noHomepage;\n data.journal = data.journal || {};\n\n // Dates\n if (data.publishedDate){//} && data.journal) {\n data.volume = data.publishedDate.getFullYear() - 2015;\n data.issue = data.publishedDate.getMonth() + 1;\n }\n\n data.publishedDate = data.publishedDate ? data.publishedDate : new Date(\"Invalid\");\n data.updatedDate = data.updatedDate ? data.updatedDate : new Date(\"Invalid\");\n\n data.publishedDateRFC\n let RFC = timeFormat(\"%a, %d %b %Y %H:%M:%S %Z\");\n let months = [\"Jan\", \"Feb\", \"March\", \"April\", \"May\", \"June\", \"July\", \"Aug\", \"Sept\", \"Oct\", \"Nov\", \"Dec\"];\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n data.publishedDateRFC = RFC(data.publishedDate);\n data.publishedYear = data.publishedDate.getFullYear();\n data.publishedMonth = months[data.publishedDate.getMonth()];\n data.publishedDay = data.publishedDate.getDate();\n data.publishedMonthPadded = zeroPad(data.publishedDate.getMonth() + 1);\n data.publishedDayPadded = zeroPad(data.publishedDate.getDate());\n data.updatedDateRFC = RFC(data.updatedDate);\n\n if (data.authors.length > 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \", et al.\";\n } else if (data.authors.length === 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \" & \" + data.authors[1].lastName;\n } else if (data.authors.length === 1) {\n data.concatenatedAuthors = data.authors[0].lastName\n }\n\n data.bibtexAuthors = data.authors.map(function(author){\n return author.lastName + \", \" + author.firstName;\n }).join(\" and \");\n\n data.slug = data.authors.length ? data.authors[0].lastName.toLowerCase() + data.publishedYear + data.title.split(\" \")[0].toLowerCase() : \"Untitled\";\n\n}\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","import favicon from './distill-favicon.base64';\nimport escape from 'escape-html';\n\nexport default function(dom, data) {\n let head = dom.querySelector(\"head\");\n let appendHead = html => appendHtml(head, html);\n\n function meta(name, content, force) {\n if (content || force)\n appendHead(` \\n`);\n }\n\n appendHead(`\n \n \n \n \n ${data.title}\n `);\n\n appendHead(`\n \n \n \n `);\n data.authors.forEach((a) => {\n appendHtml(head, `\n `)\n });\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n // if this is a proprer article, generate Google Scholar meta data\n if (data.doiSuffix){\n appendHead(`\n \\n`);\n\n meta(\"citation_title\", data.title);\n //meta(\"citation_fulltext_html_url\", data.url);\n meta(\"citation_volume\", data.volume);\n meta(\"citation_issue\", data.issue);\n meta(\"citation_firstpage\", data.doiSuffix? `e${data.doiSuffix}` : undefined);\n meta(\"citation_doi\", data.doi);\n\n let journal = data.journal || {};\n meta(\"citation_journal_title\", journal.full_title || journal.title);\n meta(\"citation_journal_abbrev\", journal.abbrev_title);\n meta(\"citation_issn\", journal.issn);\n meta(\"citation_publisher\", journal.publisher);\n meta(\"citation_fulltext_world_readable\", \"\", true);\n\n if (data.publishedDate){\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n meta(\"citation_online_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n // Should we do something different here?\n meta(\"citation_publication_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n }\n\n (data.authors || []).forEach((a) => {\n meta(\"citation_author\", `${a.lastName}, ${a.firstName}`);\n meta(\"citation_author_institution\", a.affiliation);\n });\n\n if (data.citations) {\n data.citations.forEach(key => {\n let d = data.bibliography[key];\n if(!d) {\n console.warn(\"No bibliography data fround for \" + key)\n } else {\n meta(\"citation_reference\", citation_meta_content(data.bibliography[key]) )\n };\n });\n }\n }\n}\n\nfunction appendHtml(el, html) {\n el.innerHTML += html;\n}\n\nfunction citation_meta_content(ref){\n // Special test for arxiv\n var content = `citation_title=${ref.title};`;\n \n let name_strings = ref.author.split(\" and \").forEach(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1].trim();\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n content += `citation_author=${firsts} ${last};`;\n });\n \n if (\"year\" in ref) {\n content += `citation_publication_date=${ref.year};`;\n }\n \n var arxiv_id_search = /https?:\\/\\/arxiv\\.org\\/pdf\\/([0-9]*\\.[0-9]*)\\.pdf/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /https?:\\/\\/arxiv\\.org\\/abs\\/([0-9]*\\.[0-9]*)/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /arXiv preprint arXiv:([0-9]*\\.[0-9]*)/.exec(ref.journal);\n if (arxiv_id_search && arxiv_id_search[1]){\n content += `citation_arxiv_id=${arxiv_id_search[1]};`;\n return content;\n }\n if (\"journal\" in ref){\n content += `citation_journal_title=${ref.journal};`;\n }\n if (\"volume\" in ref) {\n content += `citation_volume=${ref.volume};`;\n }\n if (\"issue\" in ref || \"number\" in ref){\n content += `citation_number=${ref.issue || ref.number};`;\n }\n /*content += `citation_first_page=${};`;\n content += `citation_publication_date=${};`;*/\n return content;\n}\n","const html = `\n\n
    This article is a draft, awaiting review for publication in Distill
    \n`;\n\nexport default function(dom, data) {\n let banner = dom.createElement(\"dt-banner\");\n banner.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(banner, b.firstChild);\n banner.addEventListener(\"click\", function() {\n banner.style.display = \"none\";\n });\n}\n","import logo from \"./distill-logo.svg\";\n\nconst html = `\n\n\n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-header\");\n if(el) {\n el.innerHTML = html;\n } else {\n let header = dom.createElement(\"dt-header\");\n header.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(header, b.firstChild);\n }\n}\n","/*!\n * mustache.js - Logic-less {{mustache}} templates with JavaScript\n * http://github.com/janl/mustache.js\n */\n\n/*global define: false Mustache: true*/\n\n(function defineMustache (global, factory) {\n if (typeof exports === 'object' && exports && typeof exports.nodeName !== 'string') {\n factory(exports); // CommonJS\n } else if (typeof define === 'function' && define.amd) {\n define(['exports'], factory); // AMD\n } else {\n global.Mustache = {};\n factory(global.Mustache); // script, wsh, asp\n }\n}(this, function mustacheFactory (mustache) {\n\n var objectToString = Object.prototype.toString;\n var isArray = Array.isArray || function isArrayPolyfill (object) {\n return objectToString.call(object) === '[object Array]';\n };\n\n function isFunction (object) {\n return typeof object === 'function';\n }\n\n /**\n * More correct typeof string handling array\n * which normally returns typeof 'object'\n */\n function typeStr (obj) {\n return isArray(obj) ? 'array' : typeof obj;\n }\n\n function escapeRegExp (string) {\n return string.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n }\n\n /**\n * Null safe way of checking whether or not an object,\n * including its prototype, has a given property\n */\n function hasProperty (obj, propName) {\n return obj != null && typeof obj === 'object' && (propName in obj);\n }\n\n // Workaround for https://issues.apache.org/jira/browse/COUCHDB-577\n // See https://github.com/janl/mustache.js/issues/189\n var regExpTest = RegExp.prototype.test;\n function testRegExp (re, string) {\n return regExpTest.call(re, string);\n }\n\n var nonSpaceRe = /\\S/;\n function isWhitespace (string) {\n return !testRegExp(nonSpaceRe, string);\n }\n\n var entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n function escapeHtml (string) {\n return String(string).replace(/[&<>\"'`=\\/]/g, function fromEntityMap (s) {\n return entityMap[s];\n });\n }\n\n var whiteRe = /\\s*/;\n var spaceRe = /\\s+/;\n var equalsRe = /\\s*=/;\n var curlyRe = /\\s*\\}/;\n var tagRe = /#|\\^|\\/|>|\\{|&|=|!/;\n\n /**\n * Breaks up the given `template` string into a tree of tokens. If the `tags`\n * argument is given here it must be an array with two string values: the\n * opening and closing tags used in the template (e.g. [ \"<%\", \"%>\" ]). Of\n * course, the default is to use mustaches (i.e. mustache.tags).\n *\n * A token is an array with at least 4 elements. The first element is the\n * mustache symbol that was used inside the tag, e.g. \"#\" or \"&\". If the tag\n * did not contain a symbol (i.e. {{myValue}}) this element is \"name\". For\n * all text that appears outside a symbol this element is \"text\".\n *\n * The second element of a token is its \"value\". For mustache tags this is\n * whatever else was inside the tag besides the opening symbol. For text tokens\n * this is the text itself.\n *\n * The third and fourth elements of the token are the start and end indices,\n * respectively, of the token in the original template.\n *\n * Tokens that are the root node of a subtree contain two more elements: 1) an\n * array of tokens in the subtree and 2) the index in the original template at\n * which the closing tag for that section begins.\n */\n function parseTemplate (template, tags) {\n if (!template)\n return [];\n\n var sections = []; // Stack to hold section tokens\n var tokens = []; // Buffer to hold the tokens\n var spaces = []; // Indices of whitespace tokens on the current line\n var hasTag = false; // Is there a {{tag}} on the current line?\n var nonSpace = false; // Is there a non-space char on the current line?\n\n // Strips all whitespace tokens array for the current line\n // if there was a {{#tag}} on it and otherwise only space.\n function stripSpace () {\n if (hasTag && !nonSpace) {\n while (spaces.length)\n delete tokens[spaces.pop()];\n } else {\n spaces = [];\n }\n\n hasTag = false;\n nonSpace = false;\n }\n\n var openingTagRe, closingTagRe, closingCurlyRe;\n function compileTags (tagsToCompile) {\n if (typeof tagsToCompile === 'string')\n tagsToCompile = tagsToCompile.split(spaceRe, 2);\n\n if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)\n throw new Error('Invalid tags: ' + tagsToCompile);\n\n openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\\\s*');\n closingTagRe = new RegExp('\\\\s*' + escapeRegExp(tagsToCompile[1]));\n closingCurlyRe = new RegExp('\\\\s*' + escapeRegExp('}' + tagsToCompile[1]));\n }\n\n compileTags(tags || mustache.tags);\n\n var scanner = new Scanner(template);\n\n var start, type, value, chr, token, openSection;\n while (!scanner.eos()) {\n start = scanner.pos;\n\n // Match any text between tags.\n value = scanner.scanUntil(openingTagRe);\n\n if (value) {\n for (var i = 0, valueLength = value.length; i < valueLength; ++i) {\n chr = value.charAt(i);\n\n if (isWhitespace(chr)) {\n spaces.push(tokens.length);\n } else {\n nonSpace = true;\n }\n\n tokens.push([ 'text', chr, start, start + 1 ]);\n start += 1;\n\n // Check for whitespace on the current line.\n if (chr === '\\n')\n stripSpace();\n }\n }\n\n // Match the opening tag.\n if (!scanner.scan(openingTagRe))\n break;\n\n hasTag = true;\n\n // Get the tag type.\n type = scanner.scan(tagRe) || 'name';\n scanner.scan(whiteRe);\n\n // Get the tag value.\n if (type === '=') {\n value = scanner.scanUntil(equalsRe);\n scanner.scan(equalsRe);\n scanner.scanUntil(closingTagRe);\n } else if (type === '{') {\n value = scanner.scanUntil(closingCurlyRe);\n scanner.scan(curlyRe);\n scanner.scanUntil(closingTagRe);\n type = '&';\n } else {\n value = scanner.scanUntil(closingTagRe);\n }\n\n // Match the closing tag.\n if (!scanner.scan(closingTagRe))\n throw new Error('Unclosed tag at ' + scanner.pos);\n\n token = [ type, value, start, scanner.pos ];\n tokens.push(token);\n\n if (type === '#' || type === '^') {\n sections.push(token);\n } else if (type === '/') {\n // Check section nesting.\n openSection = sections.pop();\n\n if (!openSection)\n throw new Error('Unopened section \"' + value + '\" at ' + start);\n\n if (openSection[1] !== value)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + start);\n } else if (type === 'name' || type === '{' || type === '&') {\n nonSpace = true;\n } else if (type === '=') {\n // Set the tags for the next time around.\n compileTags(value);\n }\n }\n\n // Make sure there are no open sections when we're done.\n openSection = sections.pop();\n\n if (openSection)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + scanner.pos);\n\n return nestTokens(squashTokens(tokens));\n }\n\n /**\n * Combines the values of consecutive text tokens in the given `tokens` array\n * to a single token.\n */\n function squashTokens (tokens) {\n var squashedTokens = [];\n\n var token, lastToken;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n if (token) {\n if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {\n lastToken[1] += token[1];\n lastToken[3] = token[3];\n } else {\n squashedTokens.push(token);\n lastToken = token;\n }\n }\n }\n\n return squashedTokens;\n }\n\n /**\n * Forms the given array of `tokens` into a nested tree structure where\n * tokens that represent a section have two additional items: 1) an array of\n * all tokens that appear in that section and 2) the index in the original\n * template that represents the end of that section.\n */\n function nestTokens (tokens) {\n var nestedTokens = [];\n var collector = nestedTokens;\n var sections = [];\n\n var token, section;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n switch (token[0]) {\n case '#':\n case '^':\n collector.push(token);\n sections.push(token);\n collector = token[4] = [];\n break;\n case '/':\n section = sections.pop();\n section[5] = token[2];\n collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;\n break;\n default:\n collector.push(token);\n }\n }\n\n return nestedTokens;\n }\n\n /**\n * A simple string scanner that is used by the template parser to find\n * tokens in template strings.\n */\n function Scanner (string) {\n this.string = string;\n this.tail = string;\n this.pos = 0;\n }\n\n /**\n * Returns `true` if the tail is empty (end of string).\n */\n Scanner.prototype.eos = function eos () {\n return this.tail === '';\n };\n\n /**\n * Tries to match the given regular expression at the current position.\n * Returns the matched text if it can match, the empty string otherwise.\n */\n Scanner.prototype.scan = function scan (re) {\n var match = this.tail.match(re);\n\n if (!match || match.index !== 0)\n return '';\n\n var string = match[0];\n\n this.tail = this.tail.substring(string.length);\n this.pos += string.length;\n\n return string;\n };\n\n /**\n * Skips all text until the given regular expression can be matched. Returns\n * the skipped string, which is the entire tail if no match can be made.\n */\n Scanner.prototype.scanUntil = function scanUntil (re) {\n var index = this.tail.search(re), match;\n\n switch (index) {\n case -1:\n match = this.tail;\n this.tail = '';\n break;\n case 0:\n match = '';\n break;\n default:\n match = this.tail.substring(0, index);\n this.tail = this.tail.substring(index);\n }\n\n this.pos += match.length;\n\n return match;\n };\n\n /**\n * Represents a rendering context by wrapping a view object and\n * maintaining a reference to the parent context.\n */\n function Context (view, parentContext) {\n this.view = view;\n this.cache = { '.': this.view };\n this.parent = parentContext;\n }\n\n /**\n * Creates a new context using the given view with this context\n * as the parent.\n */\n Context.prototype.push = function push (view) {\n return new Context(view, this);\n };\n\n /**\n * Returns the value of the given name in this context, traversing\n * up the context hierarchy if the value is absent in this context's view.\n */\n Context.prototype.lookup = function lookup (name) {\n var cache = this.cache;\n\n var value;\n if (cache.hasOwnProperty(name)) {\n value = cache[name];\n } else {\n var context = this, names, index, lookupHit = false;\n\n while (context) {\n if (name.indexOf('.') > 0) {\n value = context.view;\n names = name.split('.');\n index = 0;\n\n /**\n * Using the dot notion path in `name`, we descend through the\n * nested objects.\n *\n * To be certain that the lookup has been successful, we have to\n * check if the last object in the path actually has the property\n * we are looking for. We store the result in `lookupHit`.\n *\n * This is specially necessary for when the value has been set to\n * `undefined` and we want to avoid looking up parent contexts.\n **/\n while (value != null && index < names.length) {\n if (index === names.length - 1)\n lookupHit = hasProperty(value, names[index]);\n\n value = value[names[index++]];\n }\n } else {\n value = context.view[name];\n lookupHit = hasProperty(context.view, name);\n }\n\n if (lookupHit)\n break;\n\n context = context.parent;\n }\n\n cache[name] = value;\n }\n\n if (isFunction(value))\n value = value.call(this.view);\n\n return value;\n };\n\n /**\n * A Writer knows how to take a stream of tokens and render them to a\n * string, given a context. It also maintains a cache of templates to\n * avoid the need to parse the same template twice.\n */\n function Writer () {\n this.cache = {};\n }\n\n /**\n * Clears all cached templates in this writer.\n */\n Writer.prototype.clearCache = function clearCache () {\n this.cache = {};\n };\n\n /**\n * Parses and caches the given `template` and returns the array of tokens\n * that is generated from the parse.\n */\n Writer.prototype.parse = function parse (template, tags) {\n var cache = this.cache;\n var tokens = cache[template];\n\n if (tokens == null)\n tokens = cache[template] = parseTemplate(template, tags);\n\n return tokens;\n };\n\n /**\n * High-level method that is used to render the given `template` with\n * the given `view`.\n *\n * The optional `partials` argument may be an object that contains the\n * names and templates of partials that are used in the template. It may\n * also be a function that is used to load partial templates on the fly\n * that takes a single argument: the name of the partial.\n */\n Writer.prototype.render = function render (template, view, partials) {\n var tokens = this.parse(template);\n var context = (view instanceof Context) ? view : new Context(view);\n return this.renderTokens(tokens, context, partials, template);\n };\n\n /**\n * Low-level method that renders the given array of `tokens` using\n * the given `context` and `partials`.\n *\n * Note: The `originalTemplate` is only ever used to extract the portion\n * of the original template that was contained in a higher-order section.\n * If the template doesn't use higher-order sections, this argument may\n * be omitted.\n */\n Writer.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate) {\n var buffer = '';\n\n var token, symbol, value;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n value = undefined;\n token = tokens[i];\n symbol = token[0];\n\n if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate);\n else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate);\n else if (symbol === '>') value = this.renderPartial(token, context, partials, originalTemplate);\n else if (symbol === '&') value = this.unescapedValue(token, context);\n else if (symbol === 'name') value = this.escapedValue(token, context);\n else if (symbol === 'text') value = this.rawValue(token);\n\n if (value !== undefined)\n buffer += value;\n }\n\n return buffer;\n };\n\n Writer.prototype.renderSection = function renderSection (token, context, partials, originalTemplate) {\n var self = this;\n var buffer = '';\n var value = context.lookup(token[1]);\n\n // This function is used to render an arbitrary template\n // in the current context by higher-order sections.\n function subRender (template) {\n return self.render(template, context, partials);\n }\n\n if (!value) return;\n\n if (isArray(value)) {\n for (var j = 0, valueLength = value.length; j < valueLength; ++j) {\n buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate);\n }\n } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {\n buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate);\n } else if (isFunction(value)) {\n if (typeof originalTemplate !== 'string')\n throw new Error('Cannot use higher-order sections without the original template');\n\n // Extract the portion of the original template that the section contains.\n value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);\n\n if (value != null)\n buffer += value;\n } else {\n buffer += this.renderTokens(token[4], context, partials, originalTemplate);\n }\n return buffer;\n };\n\n Writer.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate) {\n var value = context.lookup(token[1]);\n\n // Use JavaScript's definition of falsy. Include empty arrays.\n // See https://github.com/janl/mustache.js/issues/186\n if (!value || (isArray(value) && value.length === 0))\n return this.renderTokens(token[4], context, partials, originalTemplate);\n };\n\n Writer.prototype.renderPartial = function renderPartial (token, context, partials) {\n if (!partials) return;\n\n var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\n if (value != null)\n return this.renderTokens(this.parse(value), context, partials, value);\n };\n\n Writer.prototype.unescapedValue = function unescapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return value;\n };\n\n Writer.prototype.escapedValue = function escapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return mustache.escape(value);\n };\n\n Writer.prototype.rawValue = function rawValue (token) {\n return token[1];\n };\n\n mustache.name = 'mustache.js';\n mustache.version = '2.3.0';\n mustache.tags = [ '{{', '}}' ];\n\n // All high-level mustache.* functions use this writer.\n var defaultWriter = new Writer();\n\n /**\n * Clears all cached templates in the default writer.\n */\n mustache.clearCache = function clearCache () {\n return defaultWriter.clearCache();\n };\n\n /**\n * Parses and caches the given template in the default writer and returns the\n * array of tokens it contains. Doing this ahead of time avoids the need to\n * parse templates on the fly as they are rendered.\n */\n mustache.parse = function parse (template, tags) {\n return defaultWriter.parse(template, tags);\n };\n\n /**\n * Renders the `template` with the given `view` and `partials` using the\n * default writer.\n */\n mustache.render = function render (template, view, partials) {\n if (typeof template !== 'string') {\n throw new TypeError('Invalid template! Template should be a \"string\" ' +\n 'but \"' + typeStr(template) + '\" was given as the first ' +\n 'argument for mustache#render(template, view, partials)');\n }\n\n return defaultWriter.render(template, view, partials);\n };\n\n // This is here for backwards compatibility with 0.4.x.,\n /*eslint-disable */ // eslint wants camel cased function name\n mustache.to_html = function to_html (template, view, partials, send) {\n /*eslint-enable*/\n\n var result = mustache.render(template, view, partials);\n\n if (isFunction(send)) {\n send(result);\n } else {\n return result;\n }\n };\n\n // Export the escaping function so that the user may override it.\n // See https://github.com/janl/mustache.js/issues/244\n mustache.escape = escapeHtml;\n\n // Export these mainly for testing, but also for advanced usage.\n mustache.Scanner = Scanner;\n mustache.Context = Context;\n mustache.Writer = Writer;\n\n return mustache;\n}));\n","import mustache from \"mustache\";\n\nconst html = `\n\n\n`;\n\nconst template = `\n
    \n
    \n {{#authors}}\n
    \n {{#personalURL}}\n {{name}}\n {{/personalURL}}\n {{^personalURL}}\n
    {{name}}
    \n {{/personalURL}}\n {{#affiliation}}\n {{#affiliationURL}}\n {{affiliation}}\n {{/affiliationURL}}\n {{^affiliationURL}}\n
    {{affiliation}}
    \n {{/affiliationURL}}\n {{/affiliation}}\n
    \n {{/authors}}\n
    \n
    \n
    {{publishedMonth}}. {{publishedDay}}
    \n
    {{publishedYear}}
    \n
    \n \n
    Citation:
    \n
    {{concatenatedAuthors}}, {{publishedYear}}
    \n
    \n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-byline');\n if (el) {\n el.innerHTML = html + mustache.render(template, data);\n }\n}\n","const html = `\n\n\n
    \n

    References

    \n \n

    Errors, Reuse, and Citation

    \n

    If you see mistakes or want to suggest changes, please create an issue on GitHub.

    \n

    Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on GitHub. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: “Figure from …”.

    \n

    For attribution in academic contexts, please cite this work as

    \n
    \n  

    BibTeX citation

    \n
    \n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-appendix')\n if (el) {\n let oldHtml = el.innerHTML;\n el.innerHTML = html;\n let div = el.querySelector(\"div.l-body\")\n\n if (dom.querySelector(\"dt-fn\")) {\n div.innerHTML = `

    Footnotes

    ` + div.innerHTML;\n }\n\n div.innerHTML = oldHtml + div.innerHTML;\n if (data.githubCompareUpdatesUrl) {\n div.innerHTML = `

    Updates

    View all changes to this article since it was first published.

    ` + div.innerHTML;\n }\n\n el.querySelector(\"a.github\").setAttribute(\"href\", data.githubUrl);\n el.querySelector(\"a.github-issue\").setAttribute(\"href\", data.githubUrl + \"/issues/new\");\n el.querySelector(\".citation.short\").textContent = data.concatenatedAuthors + \", \" + '\"' + data.title + '\", Distill, ' + data.publishedYear + \".\";\n var bibtex = \"@article{\" + data.slug + \",\\n\";\n bibtex += \" author = {\" + data.bibtexAuthors + \"},\\n\";\n bibtex += \" title = {\" + data.title + \"},\\n\";\n bibtex += \" journal = {Distill},\\n\";\n bibtex += \" year = {\" + data.publishedYear + \"},\\n\";\n bibtex += \" note = {\" + data.url + \"}\\n\";\n bibtex += \"}\";\n el.querySelector(\".citation.long\").textContent = bibtex;\n }\n\n}\n","import logo from \"./distill-logo.svg\";\n\nlet html = `\n\n\n
    \n \n ${logo}\n Distill\n is dedicated to clear explanations of machine learning\n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-footer\");\n if(el) {\n el.innerHTML = html;\n } else {\n let footer = dom.createElement(\"dt-footer\");\n footer.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.appendChild(footer);\n }\n}\n","export default function(dom, data) {\n let css = `\n dt-cite {\n color: hsla(206, 90%, 20%, 0.7);\n }\n dt-cite .citation-number {\n cursor: default;\n white-space: nowrap;\n font-family: -apple-system, BlinkMacSystemFont, \"Roboto\", Helvetica, sans-serif;\n font-size: 75%;\n color: hsla(206, 90%, 20%, 0.7);\n display: inline-block;\n line-height: 1.1em;\n text-align: center;\n position: relative;\n top: -2px;\n margin: 0 2px;\n }\n figcaption dt-cite .citation-number {\n font-size: 11px;\n font-weight: normal;\n top: -2px;\n line-height: 1em;\n }\n `;\n\n let style = dom.createElement(\"style\");\n style.textContent = css;\n dom.querySelector(\"body\").appendChild(style);\n\n let citations = data.citations;\n /*if (data.citations) {\n citations = Object.keys(data.citations).map(c => data.citations[c]);\n citations.sort((a, b) => {\n return a.author.localeCompare(b.author);\n });\n }*/\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach((el,n) => {\n var key = el.getAttribute(\"key\");\n if (key) {\n var keys = key.split(\",\");\n var cite_string = inline_cite_short(keys);\n var cite_hover_str = \"\";\n keys.map((key,n) => {\n if (n>0) cite_hover_str += \"

    \";\n cite_hover_str += hover_cite(data.bibliography[key]);\n });\n cite_hover_str = cite_hover_str.replace(/\"/g, \"'\")\n var orig_string = el.innerHTML;\n if (orig_string != \"\") orig_string += \" \";\n el.innerHTML = `${orig_string}${cite_string}`;\n }\n });\n\n let bibEl = dom.querySelector(\"dt-bibliography\");\n if (bibEl) {\n let ol = dom.createElement(\"ol\");\n citations.forEach(key => {\n let el = dom.createElement(\"li\");\n el.innerHTML = bibliography_cite(data.bibliography[key]);\n ol.appendChild(el);\n })\n bibEl.appendChild(ol);\n }\n\n function inline_cite_short(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var n = data.citations.indexOf(key)+1;\n return \"\"+n;\n } else {\n return \"?\";\n }\n }\n return \"[\"+keys.map(cite_string).join(\", \")+\"]\";\n }\n\n function inline_cite_long(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var ent = data.bibliography[key];\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var year = ent.year;\n if (names.length == 1) return names[0] + \", \" + year;\n if (names.length == 2) return names[0] + \" & \" + names[1] + \", \" + year;\n if (names.length > 2) return names[0] + \", et al., \" + year;\n } else {\n return \"?\";\n }\n }\n return keys.map(cite_string).join(\", \");\n }\n\n function author_string(ent, template, sep, finalSep){\n var names = ent.author.split(\" and \");\n let name_strings = names.map(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1];\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n var initials = \"\";\n if (firsts != undefined) {\n initials = firsts.trim().split(\" \").map(s => s.trim()[0]);\n initials = initials.join(\".\")+\".\";\n }\n return template.replace(\"${F}\", firsts)\n .replace(\"${L}\", last)\n .replace(\"${I}\", initials);\n });\n if (names.length > 1) {\n var str = name_strings.slice(0, names.length-1).join(sep);\n str += (finalSep || sep) + name_strings[names.length-1];\n return str;\n } else {\n return name_strings[0];\n }\n }\n\n function venue_string(ent) {\n var cite = (ent.journal || ent.booktitle || \"\")\n if (\"volume\" in ent){\n var issue = ent.issue || ent.number;\n issue = (issue != undefined)? \"(\"+issue+\")\" : \"\";\n cite += \", Vol \" + ent.volume + issue;\n }\n if (\"pages\" in ent){\n cite += \", pp. \" + ent.pages\n }\n if (cite != \"\") cite += \". \"\n if (\"publisher\" in ent){\n cite += ent.publisher;\n if (cite[cite.length-1] != \".\") cite += \".\";\n }\n return cite;\n }\n\n function link_string(ent){\n if (\"url\" in ent){\n var url = ent.url;\n var arxiv_match = (/arxiv\\.org\\/abs\\/([0-9\\.]*)/).exec(url);\n if (arxiv_match != null){\n url = `http://arxiv.org/pdf/${arxiv_match[1]}.pdf`;\n }\n\n if (url.slice(-4) == \".pdf\"){\n var label = \"PDF\";\n } else if (url.slice(-5) == \".html\") {\n var label = \"HTML\";\n }\n return `  [${label||\"link\"}]`;\n }/* else if (\"doi\" in ent){\n return `  [DOI]`;\n }*/ else {\n return \"\";\n }\n }\n function doi_string(ent, new_line){\n if (\"doi\" in ent) {\n return `${new_line?\"
    \":\"\"} DOI: ${ent.doi}`;\n } else {\n return \"\";\n }\n }\n\n function bibliography_cite(ent, fancy){\n if (ent){\n var cite = \"\" + ent.title + \" \"\n cite += link_string(ent) + \"
    \";\n cite += author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += venue_string(ent);\n cite += doi_string(ent);\n return cite\n /*var cite = author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += \"\" + ent.title + \". \";\n cite += venue_string(ent);\n cite += doi_string(ent);\n cite += link_string(ent);\n return cite*/\n } else {\n return \"?\";\n }\n }\n\n function hover_cite(ent){\n if (ent){\n var cite = \"\";\n cite += \"\" + ent.title + \"\";\n cite += link_string(ent);\n cite += \"
    \"\n\n var a_str = author_string(ent, \"${I} ${L}\", \", \") + \".\";\n var v_str = venue_string(ent).trim() + \" \" + ent.year + \". \" + doi_string(ent, true);\n\n if ((a_str+v_str).length < Math.min(40, ent.title.length)) {\n cite += a_str + \" \" + v_str;\n } else {\n cite += a_str + \"
    \" + v_str;\n }\n return cite;\n } else {\n return \"?\";\n }\n }\n\n\n //https://scholar.google.com/scholar?q=allintitle%3ADocument+author%3Aolah\n function get_GS_URL(ent){\n if (ent){\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var title = ent.title.split(\" \")//.replace(/[,:]/, \"\")\n var url = \"http://search.labs.crossref.org/dois?\"//\"\"https://scholar.google.com/scholar?\"\n url += uris({q: names.join(\" \") + \" \" + title.join(\" \")})\n }\n\n }\n}\n","export default function(dom, data) {\n\n var fnTags = [].slice.apply(dom.querySelectorAll(\"dt-fn\"));\n var fnContent = [];\n fnTags.forEach((el,n) => {\n var content = el.innerHTML;\n fnContent.push(content);\n n = (n+1)+\"\";\n var key = \"fn-\"+n;\n var escaped_content = content.replace(/\"/g, \"'\");\n el.innerHTML = `${n}`;\n });\n\n let fnList = dom.querySelector(\"dt-fn-list\");\n if (fnList) {\n let ol = dom.createElement(\"ol\");\n fnContent.forEach(content => {\n let el = dom.createElement(\"li\");\n el.innerHTML = content;\n ol.appendChild(el);\n })\n fnList.appendChild(ol);\n }\n\n}\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n */\n\n;(function() {\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^( *[-*_]){3,} *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,\n nptable: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n blockquote: /^( *>[^\\n]+(\\n(?!def)[^\\n]+)*\\n*)+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n table: noop,\n paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,\n text: /^[^\\n]+/\n};\n\nblock.bullet = /(?:[*+-]|\\d+\\.)/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = replace(block.item, 'gm')\n (/bull/g, block.bullet)\n ();\n\nblock.list = replace(block.list)\n (/bull/g, block.bullet)\n ('hr', '\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))')\n ('def', '\\\\n+(?=' + block.def.source + ')')\n ();\n\nblock.blockquote = replace(block.blockquote)\n ('def', block.def)\n ();\n\nblock._tag = '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'\n + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'\n + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|[^\\\\w\\\\s@]*@)\\\\b';\n\nblock.html = replace(block.html)\n ('comment', //)\n ('closed', /<(tag)[\\s\\S]+?<\\/\\1>/)\n ('closing', /])*?>/)\n (/tag/g, block._tag)\n ();\n\nblock.paragraph = replace(block.paragraph)\n ('hr', block.hr)\n ('heading', block.heading)\n ('lheading', block.lheading)\n ('blockquote', block.blockquote)\n ('tag', '<' + block._tag)\n ('def', block.def)\n ();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]*?)\\s*\\1 *(?:\\n+|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = replace(block.paragraph)\n ('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n ();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top, bq) {\n var src = src.replace(/^ +$/gm, '')\n , next\n , loose\n , cap\n , bull\n , b\n , item\n , space\n , i\n , l;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic\n ? cap.replace(/\\n+$/, '')\n : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top, true);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n\n this.tokens.push({\n type: 'list_start',\n ordered: bull.length > 1\n });\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n this.tokens.push({\n type: loose\n ? 'loose_item_start'\n : 'list_item_start'\n });\n\n // Recurse.\n this.token(item, false, bq);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if ((!bq && top) && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.links[cap[1].toLowerCase()] = {\n href: cap[2],\n title: cap[3]\n };\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i]\n .replace(/^ *\\| *| *\\| *$/g, '')\n .split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n autolink: /^<([^ >]+(@|:\\/)[^ >]+)>/,\n url: noop,\n tag: /^|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^\\b_((?:[^_]|__)+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n code: /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n text: /^[\\s\\S]+?(?=[\\\\?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\ninline.link = replace(inline.link)\n ('inside', inline._inside)\n ('href', inline._href)\n ();\n\ninline.reflink = replace(inline.reflink)\n ('inside', inline._inside)\n ();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: replace(inline.escape)('])', '~|])')(),\n url: /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n text: replace(inline.text)\n (']|', '~]|')\n ('|', '|https?://|')\n ()\n});\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: replace(inline.br)('{2,}', '*')(),\n text: replace(inline.gfm.text)('{2,}', '*')()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer;\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new\n Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n var out = ''\n , link\n , text\n , href\n , cap;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += cap[1];\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = cap[1].charAt(6) === ':'\n ? this.mangle(cap[1].substring(7))\n : this.mangle(cap[1]);\n href = this.mangle('mailto:') + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n src = src.substring(cap[0].length);\n text = escape(cap[1]);\n href = text;\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^/i.test(cap[0])) {\n this.inLink = false;\n }\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0]\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out += this.outputLink(cap, {\n href: cap[2],\n title: cap[3]\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2], true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = escape(link.href)\n , title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = ''\n , l = text.length\n , i = 0\n , ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || {};\n}\n\nRenderer.prototype.code = function(code, lang, escaped) {\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '\\n
    ';\n }\n\n return '
    '\n    + (escaped ? code : escape(code, true))\n    + '\\n
    \\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '
    \\n' + quote + '
    \\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw) {\n return ''\n + text\n + '\\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n};\n\nRenderer.prototype.list = function(body, ordered) {\n var type = ordered ? 'ol' : 'ul';\n return '<' + type + '>\\n' + body + '\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '
  • ' + text + '
  • \\n';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '

    ' + text + '

    \\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + '\\n'\n + body\n + '\\n'\n + '
    \\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '\\n' + content + '\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' style=\"text-align:' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.em = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? '
    ' : '
    ';\n};\n\nRenderer.prototype.del = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n if (this.options.sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return '';\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0) {\n return '';\n }\n }\n var out = '
    ';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n var out = '\"'' : '>';\n return out;\n};\n\nRenderer.prototype.text = function(text) {\n return text;\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer;\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options, renderer) {\n var parser = new Parser(options, renderer);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options, this.renderer);\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n this.token.text);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = ''\n , body = ''\n , i\n , row\n , cell\n , flags\n , j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n flags = { header: true, align: this.token.align[i] };\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n var body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n var body = ''\n , ordered = this.token.ordered;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered);\n }\n case 'list_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'loose_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'html': {\n var html = !this.token.pre && !this.options.pedantic\n ? this.inline.output(this.token.text)\n : this.token.text;\n return this.renderer.html(html);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n }\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n return html\n .replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\nfunction unescape(html) {\n\t// explicitly match decimal, hex, and named HTML entities \n return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/g, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction replace(regex, opt) {\n regex = regex.source;\n opt = opt || '';\n return function self(name, val) {\n if (!name) return new RegExp(regex, opt);\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return self;\n };\n}\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1\n , target\n , key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n\n var highlight = opt.highlight\n , tokens\n , pending\n , i = 0;\n\n try {\n tokens = Lexer.lex(src, opt)\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/chjj/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occured:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n sanitizer: null,\n mangle: true,\n smartLists: false,\n silent: false,\n highlight: null,\n langPrefix: 'lang-',\n smartypants: false,\n headerPrefix: '',\n renderer: new Renderer,\n xhtml: false\n};\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.parse = marked;\n\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n this.marked = marked;\n}\n\n}).call(function() {\n return this || (typeof window !== 'undefined' ? window : global);\n}());\n","import marked from 'marked';\n\nmarked.setOptions({\n gfm: true,\n smartypants: true\n});\n\nexport default function(dom, data) {\n let markdownElements = [].slice.call(dom.querySelectorAll('[markdown]'));\n markdownElements.forEach(el => {\n let content = el.innerHTML;\n // Set default indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n\n el.innerHTML = marked(content);\n });\n}\n","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = _self.Prism = {\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/ text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\tbreak tokenloop;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t delNum = 1;\n\n\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t to = match.index + match[0].length,\n\t\t\t\t\t\t k = i,\n\t\t\t\t\t\t p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && p < to; ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t match = match[0].slice(lookbehindLength),\n\t\t\t\t\t to = from + match.length,\n\t\t\t\t\t before = str.slice(0, from),\n\t\t\t\t\t after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (env.type == 'comment') {\n\t\tenv.attributes['spellcheck'] = 'true';\n\t}\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n \t// In worker\n\t_self.addEventListener('message', function(evt) {\n\t\tvar message = JSON.parse(evt.data),\n\t\t lang = message.language,\n\t\t code = message.code,\n\t\t immediateClose = message.immediateClose;\n\n\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\tif (immediateClose) {\n\t\t\t_self.close();\n\t\t}\n\t}, false);\n\n\treturn _self.Prism;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (document.addEventListener && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': //,\n\t'prolog': /<\\?[\\w\\W]+?\\?>/,\n\t'doctype': //i,\n\t'cdata': //i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\w\\W])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:('|\")[\\w\\W]*?(\\1)|[^\\s>]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /[=>\"']/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\w\\W]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^\\{\\}\\s][^\\{\\};]*?(?=\\s*\\{)/,\n\t'string': {\n\t\tpattern: /(\"|')(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'property': /(\\b|\\B)[\\w-]+(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|').*?\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\w\\W]*?\\*\\//,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[a-z0-9_\\.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /(\\.|\\\\)/\n\t\t}\n\t},\n\t'keyword': /\\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(0x[\\dA-Fa-f]+|0b[01]+|0o[0-7]+|\\d*\\.?\\d+([Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*(?=\\()/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*\\*?|\\/|~|\\^|%|\\.{3}/\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[.+?]|\\\\.|[^/\\\\\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\\\\\|\\\\?[^\\\\])*?`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript'\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tif(Array.prototype.forEach) { // Check to prevent error in IE8\n\t\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\t\tvar language, parent = pre;\n\t\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\t\tparent = parent.parentNode;\n\t\t\t\t}\n\n\t\t\t\tif (parent) {\n\t\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t\t}\n\n\t\t\t\tif (!language) {\n\t\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t\t}\n\n\t\t\t\tvar code = document.createElement('code');\n\t\t\t\tcode.className = 'language-' + language;\n\n\t\t\t\tpre.textContent = '';\n\n\t\t\t\tcode.textContent = 'Loading…';\n\n\t\t\t\tpre.appendChild(code);\n\n\t\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\t\txhr.open('GET', src, true);\n\n\t\t\t\txhr.onreadystatechange = function () {\n\t\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\txhr.send(null);\n\t\t\t});\n\t\t}\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\n})();\n","import Prism from \"prismjs\";\n\nexport default function(dom, data) {\n let codeElements = [].slice.call(dom.querySelectorAll(\"dt-code\"));\n codeElements.forEach(el => {\n let content = el.textContent;\n el.innerHTML = \"\";\n let language = el.getAttribute(\"language\");\n let c = dom.createElement(\"code\");\n if (el.getAttribute(\"block\") === \"\") {\n // Let's normalize the tab indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n let p = dom.createElement(\"pre\");\n p.appendChild(c);\n el.appendChild(p);\n } else {\n el.appendChild(c);\n }\n let highlighted = content;\n if (Prism.languages[language]) {\n c.setAttribute(\"class\", \"language-\" + language);\n highlighted = Prism.highlight(content, Prism.languages[language]);\n }\n c.innerHTML = highlighted;\n });\n}\n","export default function(dom, data) {\n\n var textNodes = dom.createTreeWalker(\n dom.body,\n dom.defaultView.NodeFilter.SHOW_TEXT\n );\n while (textNodes.nextNode()) {\n var n = textNodes.currentNode,\n text = n.nodeValue;\n if (text && acceptNode(n)) {\n text = quotes(text);\n text = punctuation(text);\n n.nodeValue = text;\n }\n }\n}\n\nfunction acceptNode(node) {\n var parent = node.parentElement;\n var isMath = (parent && parent.getAttribute && parent.getAttribute(\"class\")) ? parent.getAttribute(\"class\").includes(\"katex\") || parent.getAttribute(\"class\").includes(\"MathJax\") : false;\n return parent &&\n parent.nodeName !== \"SCRIPT\" &&\n parent.nodeName !== \"STYLE\" &&\n parent.nodeName !== \"CODE\" &&\n parent.nodeName !== \"PRE\" &&\n parent.nodeName !== \"SPAN\" &&\n parent.nodeName !== \"DT-HEADER\" &&\n parent.nodeName !== \"DT-BYLINE\" &&\n parent.nodeName !== \"DT-MATH\" &&\n parent.nodeName !== \"DT-CODE\" &&\n parent.nodeName !== \"DT-BIBLIOGRAPHY\" &&\n parent.nodeName !== \"DT-FOOTER\" &&\n parent.nodeType !== 8 && //comment nodes\n !isMath;\n}\n\n\n/*!\n * typeset - Typesetting for the web\n * @version v0.1.6\n * @link https://github.com/davidmerfield/Typeset.js\n * @author David Merfield\n */\n // which has a CC0 license\n // http://creativecommons.org/publicdomain/zero/1.0/\n\n\nfunction punctuation(text){\n\n // Dashes\n text = text.replace(/--/g, '\\u2014');\n text = text.replace(/ \\u2014 /g,\"\\u2009\\u2014\\u2009\"); //this has thin spaces\n\n // Elipses\n text = text.replace(/\\.\\.\\./g,'…');\n\n // Nbsp for punc with spaces\n var NBSP = \"\\u00a0\";\n var NBSP_PUNCTUATION_START = /([«¿¡]) /g;\n var NBSP_PUNCTUATION_END = / ([\\!\\?:;\\.,‽»])/g;\n\n text = text.replace(NBSP_PUNCTUATION_START, '$1' + NBSP);\n text = text.replace(NBSP_PUNCTUATION_END, NBSP + '$1');\n\n return text;\n}\n\nfunction quotes(text) {\n\n text = text\n .replace(/(\\W|^)\"([^\\s\\!\\?:;\\.,‽»])/g, '$1\\u201c$2') // beginning \"\n .replace(/(\\u201c[^\"]*)\"([^\"]*$|[^\\u201c\"]*\\u201c)/g, '$1\\u201d$2') // ending \"\n .replace(/([^0-9])\"/g,'$1\\u201d') // remaining \" at end of word\n .replace(/(\\W|^)'(\\S)/g, '$1\\u2018$2') // beginning '\n .replace(/([a-z])'([a-z])/ig, '$1\\u2019$2') // conjunction's possession\n .replace(/((\\u2018[^']*)|[a-z])'([^0-9]|$)/ig, '$1\\u2019$3') // ending '\n .replace(/(\\u2018)([0-9]{2}[^\\u2019]*)(\\u2018([^0-9]|$)|$|\\u2019[a-z])/ig, '\\u2019$2$3') // abbrev. years like '93\n .replace(/(\\B|^)\\u2018(?=([^\\u2019]*\\u2019\\b)*([^\\u2019\\u2018]*\\W[\\u2019\\u2018]\\b|[^\\u2019\\u2018]*$))/ig, '$1\\u2019') // backwards apostrophe\n .replace(/'''/g, '\\u2034') // triple prime\n .replace(/(\"|'')/g, '\\u2033') // double prime\n .replace(/'/g, '\\u2032');\n\n // Allow escaped quotes\n text = text.replace(/\\\\“/, '\\\"');\n text = text.replace(/\\\\”/, '\\\"');\n text = text.replace(/\\\\’/, '\\'');\n text = text.replace(/\\\\‘/, '\\'');\n\n return text;\n}\n\nfunction ligatures(text){\n\n text = text.replace(/fi/g, 'fi');\n text = text.replace(/fl/g, 'fl');\n\n return text;\n};\n","import code from './hover-box.txt';\n\nexport default function(dom) {\n let s = dom.createElement(\"script\");\n s.textContent = code;\n dom.querySelector(\"body\").appendChild(s);\n}\n","//import xml from \"xml\";\n\nexport default function(data) {\n\n\n var date = data.publishedDate;\n\n var batch_timestamp = Math.floor(Date.now() / 1000);\n var batch_id = data.authors.length ? data.authors[0].lastName.toLowerCase().slice(0,20) : \"Anonymous\";\n batch_id += \"_\" + date.getFullYear();\n batch_id += \"_\" + data.title.split(\" \")[0].toLowerCase().slice(0,20) + \"_\" + batch_timestamp;\n // generate XML\n var crf_data =\n {doi_batch : [\n\n { _attr: {\n version: \"4.3.7\",\n xmlns: \"http://www.crossref.org/schema/4.3.7\",\n \"xmlns:xsi\": \"http://www.w3.org/2001/XMLSchema-instance\",\n \"xsi:schemaLocation\": \"http://www.crossref.org/schema/4.3.7 http://www.crossref.org/schemas/crossref4.3.7.xsd\",\n }},\n\n { head: [\n {doi_batch_id: batch_id},\n {timestamp: batch_timestamp},\n {depositor: [\n {depositor_name: data.journal.publisherName},\n {email_address: data.journal.publisherEmail},\n ]},\n {registrant: data.journal.publisherName},\n ]},\n\n {body: [\n {journal: [\n\n {journal_metadata: [\n {full_title: data.journal.full_title || data.journal.title},\n {abbrev_title: data.journal.abbrev_title || data.journal.title || data.journal.full_title},\n {issn: data.journal.issn},\n {doi_data: [\n {doi: data.journal.doi},\n {resource: data.journal.url},\n ]},\n ]},\n\n {journal_issue: [\n {publication_date: [\n {month: date.getMonth()+1},\n {year: date.getFullYear()},\n ]},\n {journal_volume: [\n {volume: data.volume},\n ]},\n {issue: data.issue},\n ]},\n\n {journal_article: [\n {titles: [\n {title: data.title},\n ]},\n { contributors:\n data.authors.map((author, ind) => (\n {person_name: [\n { _attr: {\n contributor_role: \"author\",\n sequence: (ind == 0)? \"first\" : \"additional\"\n }},\n {given_name: author.firstName},\n {surname: author.lastName},\n {affiliation: author.affiliation}\n // TODO: ORCID?\n ]}\n ))\n },\n {publication_date: [\n {month: date.getMonth()+1},\n {day: date.getDate()},\n {year: date.getFullYear()}\n ]},\n { publisher_item: [\n {item_number: data.doi}\n ]},\n {doi_data: [\n {doi: data.doi},\n //{timestamp: \"\"},\n {resource: data.url},\n ]},\n {citation_list:\n data.citations.map(key =>\n citation_xml(key, data.bibliography[key]))\n }\n\n ]},\n\n ]},\n ]},\n ]};\n\n return xml(crf_data);\n}\n\nfunction citation_xml(key, ent){\n if (ent == undefined) return {};\n var info = [];\n info.push({_attr: {key: key}});\n if (\"title\" in ent)\n info.push({article_title: ent.title});\n if (\"author\" in ent)\n info.push({author: ent.author.split(\" and \")[0].split(\",\")[0].trim()});\n if (\"journal\" in ent)\n info.push({journal_title: ent.journal});\n if (\"booktitle\" in ent)\n info.push({volume_title: ent.booktitle});\n if (\"volume\" in ent)\n info.push({volume: ent.volume});\n if (\"issue\" in ent)\n info.push({issue: ent.issue});\n if (\"doi\" in ent)\n info.push({doi: ent.doi});\n return {citation: info}\n}\n\nfunction xml(obj) {\n //console.log(typeof(obj), obj)\n if (typeof obj === 'string') return obj;\n if (typeof obj === 'number') return \"\"+obj;\n let keys = Object.keys(obj);\n if (keys.length != 1) console.error(\"can't interpret \", obj, \"as xml\");\n let name = keys[0];\n var full_content = obj[name];\n var attr = {};\n if (Array.isArray(full_content)){\n var content = [];\n for (var i in full_content) {\n var obj = full_content[i];\n var obj_name = Object.keys(obj)[0];\n if (\"_attr\" == obj_name) {\n attr = obj[\"_attr\"];\n } else {\n //console.log(Object.keys(obj)[0])\n content.push(obj);\n }\n }\n } else {\n content = full_content;\n }\n if (content == undefined){\n content = \"undefined\"\n }\n\n let attr_string = \"\";\n for (var k in attr) {\n attr_string += ` ${k}=\\\"${attr[k]}\\\"`\n }\n\n //console.log(typeof content, Array.isArray(content), content instanceof String, content)\n if (Array.isArray(content)){\n content = content.map(xml);\n content = content.join(\"\\n\").split(\"\\n\");\n content = content.map(s => \" \" + s).join(\"\\n\")\n var result = `<${name}${attr_string}>\\n${content}\\n`;\n } else {\n content = xml(content);\n var result = `<${name}${attr_string}>${content}`;\n }\n return result;\n}\n","import html from \"./components/html\";\nimport styles from \"./components/styles\";\nimport frontMatter from \"./components/front-matter\";\nimport bibliography from \"./components/bibliography\";\nimport expandData from \"./components/expand-data\";\nimport meta from \"./components/meta\";\nimport banner from \"./components/banner\";\nimport header from \"./components/header\";\nimport byline from \"./components/byline\";\nimport appendix from \"./components/appendix\";\nimport footer from \"./components/footer\";\nimport citation from \"./components/citation\";\nimport footnote from \"./components/footnote\";\nimport markdown from \"./components/markdown\";\nimport code from \"./components/code\";\nimport typeset from \"./components/typeset\";\nimport hoverBox from \"./components/hover-box-include\";\nimport generateCrossref from \"./components/generate-crossref\";\n\nfunction renderImmediately(dom) {\n html(dom);\n styles(dom);\n}\n\nfunction renderOnLoad(dom, data) {\n frontMatter(dom, data);\n bibliography(dom, data);\n expandData(dom, data);\n meta(dom, data);\n header(dom, data);\n byline(dom, data);\n appendix(dom, data);\n footer(dom, data);\n markdown(dom, data);\n code(dom, data);\n citation(dom, data);\n footnote(dom, data);\n typeset(dom, data);\n hoverBox(dom, data);\n}\n\n// If we are in a browser, render automatically...\nif(window && window.document) {\n let data = {};\n renderImmediately(window.document);\n window.document.addEventListener(\"DOMContentLoaded\", (event) => {\n renderOnLoad(window.document, data);\n // Add a banner if we're not on localhost.\n if (window.location.hostname !== \"localhost\" && window.location.origin !== \"file://\") {\n banner(window.document, data);\n }\n generateCrossref(data);\n });\n}\n\n// If we are in node...\nfunction render(dom, data) {\n renderImmediately(dom);\n renderOnLoad(dom, data);\n // Remove script tag so it doesn't run again in the client\n let s = dom.querySelector('script[src=\"http://distill.pub/template.js\"]');\n if (s) { s.parentElement.removeChild(s); };\n}\n\nexport {render as render};\nexport {generateCrossref as generateCrossref};\n"],"names":["let","meta","YAMLException","common","require$$0","Mark","this","Type","require$$1","require$$2","type","arguments","Schema","require$$3","require$$4","require$$5","require","_hasOwnProperty","_toString","require$$6","require$$7","_require","DEFAULT_SAFE_SCHEMA","DEFAULT_FULL_SCHEMA","loadAll","load","safeLoadAll","safeLoad","State","dump","safeDump","require$$8","require$$9","ymlParse","interval","day","timeDay","timeYear","timeSunday","timeMonday","locale","escape","const","html","define","global","Prism","code","render"],"mappings":"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"} \ No newline at end of file From 6721d1f2dbc44cfb50e8773e7babd1fd269b7d30 Mon Sep 17 00:00:00 2001 From: Shan Carter Date: Sat, 18 Mar 2017 19:35:58 -0700 Subject: [PATCH 05/42] Removing distill header from dev --- dist/template.js | 77 +++++++++++++++++++++++--------------------- dist/template.js.map | 2 +- index.js | 13 +++++--- 3 files changed, 51 insertions(+), 41 deletions(-) diff --git a/dist/template.js b/dist/template.js index 4633e78..cb35801 100644 --- a/dist/template.js +++ b/dist/template.js @@ -5335,22 +5335,6 @@ var banner = function(dom, data) { }); }; -var logo = "\n \n\n"; - -var html$2 = "\n\n\n
    \n"; - -var header = function(dom, data) { - var el = dom.querySelector("dt-header"); - if(el) { - el.innerHTML = html$2; - } else { - var header = dom.createElement("dt-header"); - header.innerHTML = html$2; - var b = dom.querySelector("body"); - b.insertBefore(header, b.firstChild); - } -}; - var mustache = createCommonjsModule(function (module, exports) { /*! * mustache.js - Logic-less {{mustache}} templates with JavaScript @@ -5988,24 +5972,24 @@ var mustache = createCommonjsModule(function (module, exports) { })); }); -var html$3 = "\n\n\n"; +var html$2 = "\n\n\n"; var template = "\n
    \n
    \n {{#authors}}\n
    \n {{#personalURL}}\n {{name}}\n {{/personalURL}}\n {{^personalURL}}\n
    {{name}}
    \n {{/personalURL}}\n {{#affiliation}}\n {{#affiliationURL}}\n {{affiliation}}\n {{/affiliationURL}}\n {{^affiliationURL}}\n
    {{affiliation}}
    \n {{/affiliationURL}}\n {{/affiliation}}\n
    \n {{/authors}}\n
    \n
    \n
    {{publishedMonth}}. {{publishedDay}}
    \n
    {{publishedYear}}
    \n
    \n \n
    Citation:
    \n
    {{concatenatedAuthors}}, {{publishedYear}}
    \n
    \n
    \n"; var byline = function(dom, data) { var el = dom.querySelector('dt-byline'); if (el) { - el.innerHTML = html$3 + mustache.render(template, data); + el.innerHTML = html$2 + mustache.render(template, data); } }; -var html$4 = "\n\n\n
    \n

    References

    \n \n

    Errors, Reuse, and Citation

    \n

    If you see mistakes or want to suggest changes, please create an issue on GitHub.

    \n

    Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on GitHub. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: “Figure from …”.

    \n

    For attribution in academic contexts, please cite this work as

    \n
    \n  

    BibTeX citation

    \n
    \n
    \n"; +var html$3 = "\n\n\n
    \n

    References

    \n \n

    Errors, Reuse, and Citation

    \n

    If you see mistakes or want to suggest changes, please create an issue on GitHub.

    \n

    Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on GitHub. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: “Figure from …”.

    \n

    For attribution in academic contexts, please cite this work as

    \n
    \n  

    BibTeX citation

    \n
    \n
    \n"; var appendix = function(dom, data) { var el = dom.querySelector('dt-appendix'); if (el) { var oldHtml = el.innerHTML; - el.innerHTML = html$4; + el.innerHTML = html$3; var div = el.querySelector("div.l-body"); if (dom.querySelector("dt-fn")) { @@ -6032,20 +6016,6 @@ var appendix = function(dom, data) { }; -var html$5 = "\n\n\n
    \n \n " + logo + "\n Distill\n is dedicated to clear explanations of machine learning\n
    \n"; - -var footer = function(dom, data) { - var el = dom.querySelector("dt-footer"); - if(el) { - el.innerHTML = html$5; - } else { - var footer = dom.createElement("dt-footer"); - footer.innerHTML = html$5; - var b = dom.querySelector("body"); - b.appendChild(footer); - } -}; - var citation = function(dom, data) { var css = "\n dt-cite {\n color: hsla(206, 90%, 20%, 0.7);\n }\n dt-cite .citation-number {\n cursor: default;\n white-space: nowrap;\n font-family: -apple-system, BlinkMacSystemFont, \"Roboto\", Helvetica, sans-serif;\n font-size: 75%;\n color: hsla(206, 90%, 20%, 0.7);\n display: inline-block;\n line-height: 1.1em;\n text-align: center;\n position: relative;\n top: -2px;\n margin: 0 2px;\n }\n figcaption dt-cite .citation-number {\n font-size: 11px;\n font-weight: normal;\n top: -2px;\n line-height: 1em;\n }\n "; @@ -8682,6 +8652,36 @@ function xml(obj) { return result; } +var logo = "\n \n\n"; + +var html$4 = "\n\n\n\n"; + +var header = function(dom, data) { + var el = dom.querySelector("dt-header"); + if(el) { + el.innerHTML = html$4; + } else { + var header = dom.createElement("dt-header"); + header.innerHTML = html$4; + var b = dom.querySelector("body"); + b.insertBefore(header, b.firstChild); + } +}; + +var html$5 = "\n\n\n
    \n \n " + logo + "\n Distill\n is dedicated to clear explanations of machine learning\n
    \n"; + +var footer = function(dom, data) { + var el = dom.querySelector("dt-footer"); + if(el) { + el.innerHTML = html$5; + } else { + var footer = dom.createElement("dt-footer"); + footer.innerHTML = html$5; + var b = dom.querySelector("body"); + b.appendChild(footer); + } +}; + function renderImmediately(dom) { html(dom); styles(dom); @@ -8692,10 +8692,8 @@ function renderOnLoad(dom, data) { bibliography(dom, data); expandData(dom, data); meta(dom, data); - header(dom, data); byline(dom, data); appendix(dom, data); - footer(dom, data); markdown(dom, data); code$1(dom, data); citation(dom, data); @@ -8727,7 +8725,14 @@ function render$1(dom, data) { if (s) { s.parentElement.removeChild(s); } } +// Distill specific rendering +function distillify(dom, data) { + header(dom, data); + footer(dom, data); +} + exports.render = render$1; +exports.distillify = distillify; exports.generateCrossref = generateCrossref; Object.defineProperty(exports, '__esModule', { value: true }); diff --git a/dist/template.js.map b/dist/template.js.map index cc60d69..8367396 100644 --- a/dist/template.js.map +++ b/dist/template.js.map @@ -1 +1 @@ -{"version":3,"file":null,"sources":["../components/html.js","../components/styles.js","../node_modules/js-yaml/lib/js-yaml/common.js","../node_modules/js-yaml/lib/js-yaml/exception.js","../node_modules/js-yaml/lib/js-yaml/mark.js","../node_modules/js-yaml/lib/js-yaml/type.js","../node_modules/js-yaml/lib/js-yaml/schema.js","../node_modules/js-yaml/lib/js-yaml/type/str.js","../node_modules/js-yaml/lib/js-yaml/type/seq.js","../node_modules/js-yaml/lib/js-yaml/type/map.js","../node_modules/js-yaml/lib/js-yaml/schema/failsafe.js","../node_modules/js-yaml/lib/js-yaml/type/null.js","../node_modules/js-yaml/lib/js-yaml/type/bool.js","../node_modules/js-yaml/lib/js-yaml/type/int.js","../node_modules/js-yaml/lib/js-yaml/type/float.js","../node_modules/js-yaml/lib/js-yaml/schema/json.js","../node_modules/js-yaml/lib/js-yaml/schema/core.js","../node_modules/js-yaml/lib/js-yaml/type/timestamp.js","../node_modules/js-yaml/lib/js-yaml/type/merge.js","../node_modules/js-yaml/lib/js-yaml/type/binary.js","../node_modules/js-yaml/lib/js-yaml/type/omap.js","../node_modules/js-yaml/lib/js-yaml/type/pairs.js","../node_modules/js-yaml/lib/js-yaml/type/set.js","../node_modules/js-yaml/lib/js-yaml/schema/default_safe.js","../node_modules/js-yaml/lib/js-yaml/type/js/undefined.js","../node_modules/js-yaml/lib/js-yaml/type/js/regexp.js","../node_modules/js-yaml/lib/js-yaml/type/js/function.js","../node_modules/js-yaml/lib/js-yaml/schema/default_full.js","../node_modules/js-yaml/lib/js-yaml/loader.js","../node_modules/js-yaml/lib/js-yaml/dumper.js","../node_modules/js-yaml/lib/js-yaml.js","../node_modules/js-yaml/index.js","../components/front-matter.js","../node_modules/bibtex-parse-js/bibtexParse.js","../components/bibliography.js","../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/utcMinute.js","../node_modules/d3-time/src/utcHour.js","../node_modules/d3-time/src/utcDay.js","../node_modules/d3-time/src/utcWeek.js","../node_modules/d3-time/src/utcMonth.js","../node_modules/d3-time/src/utcYear.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-time-format/src/isoFormat.js","../node_modules/d3-time-format/src/isoParse.js","../components/expand-data.js","../../node_modules/escape-html/index.js","../components/meta.js","../components/banner.js","../components/header.js","../node_modules/mustache/mustache.js","../components/byline.js","../components/appendix.js","../components/footer.js","../components/citation.js","../components/footnote.js","../node_modules/marked/lib/marked.js","../components/markdown.js","../node_modules/prismjs/prism.js","../components/code.js","../components/typeset.js","../components/hover-box-include.js","../components/generate-crossref.js","../index.js"],"sourcesContent":["export default function(dom) {\n if (!dom.querySelector(\"html\").getAttribute(\"lang\")) {\n dom.querySelector(\"html\").setAttribute(\"lang\", \"en\")\n }\n\n let head = dom.querySelector(\"head\");\n\n if (!dom.querySelector(\"meta[charset]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"charset\", \"utf-8\");\n head.appendChild(meta);\n }\n if (!dom.querySelector(\"meta[name=viewport]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"name\", \"viewport\");\n meta.setAttribute(\"content\", \"width=device-width, initial-scale=1\");\n head.appendChild(meta);\n }\n}\n","import base from './styles-base.css';\nimport layout from './styles-layout.css';\nimport article from './styles-article.css';\nimport code from './styles-code.css';\nimport print from './styles-print.css';\n\nexport default function(dom) {\n let s = dom.createElement(\"style\");\n s.textContent = base + layout + article + code + print;\n dom.querySelector(\"head\").appendChild(s);\n}\n","'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n var result = this.name + ': ';\n\n result += this.reason || '(unknown reason)';\n\n if (!compact && this.mark) {\n result += ' ' + this.mark.toString();\n }\n\n return result;\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n\nvar common = require('./common');\n\n\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\n\n\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head, start, tail, end, snippet;\n\n if (!this.buffer) return null;\n\n indent = indent || 4;\n maxLength = maxLength || 75;\n\n head = '';\n start = this.position;\n\n while (start > 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n\n tail = '';\n end = this.position;\n\n while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n\n snippet = this.buffer.slice(start, end);\n\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' +\n common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\n\nMark.prototype.toString = function toString(compact) {\n var snippet, where = '';\n\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n if (!compact) {\n snippet = this.getSnippet();\n\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n\n return where;\n};\n\n\nmodule.exports = Mark;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name, result) {\n var exclude = [];\n\n schema.include.forEach(function (includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n\n schema[name].forEach(function (currentType) {\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n exclude.push(previousIndex);\n }\n });\n\n result.push(currentType);\n });\n\n return result.filter(function (type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {}\n }, index, length;\n\n function collectType(type) {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n\n this.implicit.forEach(function (type) {\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n });\n\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\n\nSchema.DEFAULT = null;\n\n\nSchema.create = function createSchema() {\n var schemas, types;\n\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n\n if (!schemas.every(function (schema) { return schema instanceof Schema; })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n\n if (!types.every(function (type) { return type instanceof Type; })) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n return new Schema({\n include: schemas,\n explicit: types\n });\n};\n\n\nmodule.exports = Schema;\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 8\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 10 (except 0) or base 60\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch === ':') break;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n if (!hasDigits) return false;\n\n // if !base60 - done;\n if (ch !== ':') return true;\n\n // base60 almost not used, no needs to optimize\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch, base, digits = [];\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value, 16);\n return sign * parseInt(value, 8);\n }\n\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseInt(v, 10));\n });\n\n value = 0;\n base = 1;\n\n digits.forEach(function (d) {\n value += (d * base);\n base *= 60;\n });\n\n return sign * value;\n\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (object) { return '0b' + object.toString(2); },\n octal: function (object) { return '0' + object.toString(8); },\n decimal: function (object) { return object.toString(10); },\n hexadecimal: function (object) { return '0x' + object.toString(16).toUpperCase(); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n '^(?:[-+]?(?:[0-9][0-9_]*)\\\\.[0-9_]*(?:[eE][-+][0-9]+)?' +\n '|\\\\.[0-9_]+(?:[eE][-+][0-9]+)?' +\n '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' +\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data)) return false;\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign, base, digits;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n\n } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n\n value = 0.0;\n base = 1;\n\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n\n return sign * value;\n\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./failsafe')\n ],\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./json')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\nvar NodeBuffer;\n\ntry {\n // A trick for browserified version, to not include `Buffer` shim\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n // Wrap into Buffer for NodeJS and leave Array for browser\n if (NodeBuffer) return new NodeBuffer(result);\n\n return result;\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./core')\n ],\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n return true;\n}\n\nfunction constructJavascriptUndefined() {\n /*eslint-disable no-undefined*/\n return undefined;\n}\n\nfunction representJavascriptUndefined() {\n return '';\n}\n\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n if (data === null) return false;\n if (data.length === 0) return false;\n\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // if regexp starts with '/' it can have modifiers and must be properly closed\n // `/foo/gim` - modifiers tail can be maximum 3 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n\n if (modifiers.length > 3) return false;\n // if expression starts with /, is should be properly terminated\n if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n }\n\n return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // `/foo/gim` - tail can be maximum 4 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n\n return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object /*, style*/) {\n var result = '/' + object.source + '/';\n\n if (object.global) result += 'g';\n if (object.multiline) result += 'm';\n if (object.ignoreCase) result += 'i';\n\n return result;\n}\n\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n","'use strict';\n\nvar esprima;\n\n// Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n// If not found - try to fallback to window.esprima. If not\n// found too - then fail to parse.\n//\ntry {\n // workaround to exclude package from browserify list.\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n /*global window */\n if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n if (data === null) return false;\n\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true });\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction constructJavascriptFunction(data) {\n /*jslint evil:true*/\n\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true }),\n params = [],\n body;\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n throw new Error('Failed to resolve function');\n }\n\n ast.body[0].expression.params.forEach(function (param) {\n params.push(param.name);\n });\n\n body = ast.body[0].expression.body.range;\n\n // Esprima's ranges include the first '{' and the last '}' characters on\n // function expressions. So cut them out.\n /*eslint-disable no-new-func*/\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n}\n\nfunction representJavascriptFunction(object /*, style*/) {\n return object.toString();\n}\n\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n","// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [\n require('./default_safe')\n ],\n explicit: [\n require('../type/js/undefined'),\n require('../type/js/regexp'),\n require('../type/js/function')\n ]\n});\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00);\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n return new YAMLException(\n message,\n new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length;\n _position < _length;\n _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode) {\n var index, quantity;\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n throwError(state, 'duplicated mapping key');\n }\n _result[keyNode] = valueNode;\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else {\n break; // Reading is done. Go to the epilogue.\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if (state.lineIndent > nodeIndent && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!state.anchorMap.hasOwnProperty(alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag !== null && state.tag !== '!') {\n if (state.tag === '?') {\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length;\n typeIndex < typeQuantity;\n typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only assigned to plain scalars. So, it isn't\n // needed to check for 'kind' conformity.\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = {};\n state.anchorMap = {};\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n var documents = loadDocuments(input, options), index, length;\n\n for (index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nfunction safeLoadAll(input, output, options) {\n loadAll(input, output, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nfunction safeLoad(input, options) {\n return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// Simplified test for values allowed after the first character in plain style.\nfunction isPlainSafe(c) {\n // Uses a subset of nb-char - c-flow-indicator - \":\" - \"#\"\n // where nb-char ::= c-printable - b-char - c-byte-order-mark.\n return isPrintable(c) && c !== 0xFEFF\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // - \":\" - \"#\"\n && c !== CHAR_COLON\n && c !== CHAR_SHARP;\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n return isPrintable(c) && c !== 0xFEFF\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {\n var i;\n var char;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(string.charCodeAt(0))\n && !isWhitespace(string.charCodeAt(string.length - 1));\n\n if (singleLineOnly) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n return plain && !testAmbiguousType(string)\n ? STYLE_PLAIN : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (string[0] === ' ' && indentPerLevel > 9) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey) {\n state.dump = (function () {\n if (string.length === 0) {\n return \"''\";\n }\n if (!state.noCompatMode &&\n DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n return \"'\" + string + \"'\";\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = (string[0] === ' ') ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char;\n var escapeSeq;\n\n for (var i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n result += !escapeSeq && isPrintable(char)\n ? string[i]\n : escapeSeq || encodeHex(char);\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level, object[index], false, false)) {\n if (index !== 0) _result += ', ';\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || index !== 0) {\n _result += generateNextLine(state, level);\n }\n _result += '- ' + state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (index !== 0) pairBuffer += ', ';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + ': ';\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || index !== 0) {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n state.tag = explicit ? type.tag : '?';\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n writeBlockSequence(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey);\n }\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n state.dump = '!<' + state.tag + '> ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n if (writeNode(state, 0, input, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nfunction safeDump(input, options) {\n return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n","'use strict';\n\n\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\n\n\nfunction deprecated(name) {\n return function () {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\n\n\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\n\n// Deprecated schema names from JS-YAML 2.0.x\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\n\n// Deprecated functions from JS-YAML 1.x.x\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","'use strict';\n\n\nvar yaml = require('./lib/js-yaml.js');\n\n\nmodule.exports = yaml;\n","import ymlParse from \"js-yaml\";\n\nexport default function(dom, data) {\n let localData = {};\n let el = dom.querySelector('script[type=\"text/front-matter\"]');\n if (el) {\n let text = el.textContent;\n localData = ymlParse.safeLoad(text);\n }\n\n data.title = localData.title ? localData.title : \"Untitled\";\n data.description = localData.description ? localData.description : \"No description.\";\n\n data.authors = localData.authors ? localData.authors : [];\n\n data.authors = data.authors.map((author, i) =>{\n let a = {};\n let name = Object.keys(author)[0];\n if ((typeof author) === \"string\") {\n name = author;\n } else {\n a.personalURL = author[name];\n }\n let names = name.split(\" \");\n a.name = name;\n a.firstName = names.slice(0, names.length - 1).join(\" \");\n a.lastName = names[names.length -1];\n if(localData.affiliations[i]) {\n let affiliation = Object.keys(localData.affiliations[i])[0];\n if ((typeof localData.affiliations[i]) === \"string\") {\n affiliation = localData.affiliations[i]\n } else {\n a.affiliationURL = localData.affiliations[i][affiliation];\n }\n a.affiliation = affiliation;\n }\n return a;\n });\n \n\n}\n","/* start bibtexParse 0.0.22 */\n\n//Original work by Henrik Muehe (c) 2010\n//\n//CommonJS port by Mikola Lysenko 2013\n//\n//Port to Browser lib by ORCID / RCPETERS\n//\n//Issues:\n//no comment handling within strings\n//no string concatenation\n//no variable values yet\n//Grammar implemented here:\n//bibtex -> (string | preamble | comment | entry)*;\n//string -> '@STRING' '{' key_equals_value '}';\n//preamble -> '@PREAMBLE' '{' value '}';\n//comment -> '@COMMENT' '{' value '}';\n//entry -> '@' key '{' key ',' key_value_list '}';\n//key_value_list -> key_equals_value (',' key_equals_value)*;\n//key_equals_value -> key '=' value;\n//value -> value_quotes | value_braces | key;\n//value_quotes -> '\"' .*? '\"'; // not quite\n//value_braces -> '{' .*? '\"'; // not quite\n(function(exports) {\n\n function BibtexParser() {\n \n this.months = [\"jan\", \"feb\", \"mar\", \"apr\", \"may\", \"jun\", \"jul\", \"aug\", \"sep\", \"oct\", \"nov\", \"dec\"];\n this.notKey = [',','{','}',' ','='];\n this.pos = 0;\n this.input = \"\";\n this.entries = new Array();\n\n this.currentEntry = \"\";\n\n this.setInput = function(t) {\n this.input = t;\n };\n\n this.getEntries = function() {\n return this.entries;\n };\n\n this.isWhitespace = function(s) {\n return (s == ' ' || s == '\\r' || s == '\\t' || s == '\\n');\n };\n\n this.match = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n this.pos += s.length;\n } else {\n throw \"Token mismatch, expected \" + s + \", found \"\n + this.input.substring(this.pos);\n };\n this.skipWhitespace(canCommentOut);\n };\n\n this.tryMatch = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n return true;\n } else {\n return false;\n };\n this.skipWhitespace(canCommentOut);\n };\n\n /* when search for a match all text can be ignored, not just white space */\n this.matchAt = function() {\n while (this.input.length > this.pos && this.input[this.pos] != '@') {\n this.pos++;\n };\n\n if (this.input[this.pos] == '@') {\n return true;\n };\n return false;\n };\n\n this.skipWhitespace = function(canCommentOut) {\n while (this.isWhitespace(this.input[this.pos])) {\n this.pos++;\n };\n if (this.input[this.pos] == \"%\" && canCommentOut == true) {\n while (this.input[this.pos] != \"\\n\") {\n this.pos++;\n };\n this.skipWhitespace(canCommentOut);\n };\n };\n\n this.value_braces = function() {\n var bracecount = 0;\n this.match(\"{\", false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '}') {\n if (bracecount > 0) {\n bracecount--;\n } else {\n var end = this.pos;\n this.match(\"}\", false);\n return this.input.substring(start, end);\n };\n } else if (this.input[this.pos] == '{') {\n bracecount++;\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value\";\n };\n };\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.value_comment = function() {\n var str = '';\n var brcktCnt = 0;\n while (!(this.tryMatch(\"}\", false) && brcktCnt == 0)) {\n str = str + this.input[this.pos];\n if (this.input[this.pos] == '{')\n brcktCnt++;\n if (this.input[this.pos] == '}')\n brcktCnt--;\n if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n this.pos++;\n };\n return str;\n };\n\n this.value_quotes = function() {\n this.match('\"', false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '\"') {\n var end = this.pos;\n this.match('\"', false);\n return this.input.substring(start, end);\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n }\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.single_value = function() {\n var start = this.pos;\n if (this.tryMatch(\"{\")) {\n return this.value_braces();\n } else if (this.tryMatch('\"')) {\n return this.value_quotes();\n } else {\n var k = this.key();\n if (k.match(\"^[0-9]+$\"))\n return k;\n else if (this.months.indexOf(k.toLowerCase()) >= 0)\n return k.toLowerCase();\n else\n throw \"Value expected:\" + this.input.substring(start) + ' for key: ' + k;\n \n };\n };\n\n this.value = function() {\n var values = [];\n values.push(this.single_value());\n while (this.tryMatch(\"#\")) {\n this.match(\"#\");\n values.push(this.single_value());\n };\n return values.join(\"\");\n };\n\n this.key = function() {\n var start = this.pos;\n while (true) {\n if (this.pos >= this.input.length) {\n throw \"Runaway key\";\n };\n // а-яА-Я is Cyrillic\n //console.log(this.input[this.pos]);\n if (this.notKey.indexOf(this.input[this.pos]) >= 0) {\n return this.input.substring(start, this.pos);\n } else {\n this.pos++;\n \n };\n };\n };\n\n this.key_equals_value = function() {\n var key = this.key();\n if (this.tryMatch(\"=\")) {\n this.match(\"=\");\n var val = this.value();\n return [ key, val ];\n } else {\n throw \"... = value expected, equals sign missing:\"\n + this.input.substring(this.pos);\n };\n };\n\n this.key_value_list = function() {\n var kv = this.key_equals_value();\n this.currentEntry['entryTags'] = {};\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n while (this.tryMatch(\",\")) {\n this.match(\",\");\n // fixes problems with commas at the end of a list\n if (this.tryMatch(\"}\")) {\n break;\n }\n ;\n kv = this.key_equals_value();\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n };\n };\n\n this.entry_body = function(d) {\n this.currentEntry = {};\n this.currentEntry['citationKey'] = this.key();\n this.currentEntry['entryType'] = d.substring(1);\n this.match(\",\");\n this.key_value_list();\n this.entries.push(this.currentEntry);\n };\n\n this.directive = function() {\n this.match(\"@\");\n return \"@\" + this.key();\n };\n\n this.preamble = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'PREAMBLE';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.comment = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'COMMENT';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.entry = function(d) {\n this.entry_body(d);\n };\n\n this.bibtex = function() {\n while (this.matchAt()) {\n var d = this.directive();\n this.match(\"{\");\n if (d == \"@STRING\") {\n this.string();\n } else if (d == \"@PREAMBLE\") {\n this.preamble();\n } else if (d == \"@COMMENT\") {\n this.comment();\n } else {\n this.entry(d);\n }\n this.match(\"}\");\n };\n };\n };\n \n exports.toJSON = function(bibtex) {\n var b = new BibtexParser();\n b.setInput(bibtex);\n b.bibtex();\n return b.entries;\n };\n\n /* added during hackathon don't hate on me */\n exports.toBibtex = function(json) {\n var out = '';\n for ( var i in json) {\n out += \"@\" + json[i].entryType;\n out += '{';\n if (json[i].citationKey)\n out += json[i].citationKey + ', ';\n if (json[i].entry)\n out += json[i].entry ;\n if (json[i].entryTags) {\n var tags = '';\n for (var jdx in json[i].entryTags) {\n if (tags.length != 0)\n tags += ', ';\n tags += jdx + '= {' + json[i].entryTags[jdx] + '}';\n }\n out += tags;\n }\n out += '}\\n\\n';\n }\n return out;\n \n };\n\n})(typeof exports === 'undefined' ? this['bibtexParse'] = {} : exports);\n\n/* end bibtexParse */\n","import bibtexParse from \"bibtex-parse-js\";\n\nexport default function(dom, data) {\n let el = dom.querySelector('script[type=\"text/bibliography\"]');\n let citations = [];\n let bibliography = {};\n //TODO If we don't have a local element, make a request for the document.\n if (el) {\n let rawBib = el.textContent;\n let parsed = bibtexParse.toJSON(rawBib);\n if(parsed) {\n parsed.forEach(e => {\n for (var k in e.entryTags){\n var val = e.entryTags[k];\n val = val.replace(/[\\t\\n ]+/g, \" \");\n val = val.replace(/{\\\\[\"^`\\.'acu~Hvs]( )?([a-zA-Z])}/g,\n (full, x, char) => char);\n val = val.replace(/{\\\\([a-zA-Z])}/g,\n (full, char) => char);\n e.entryTags[k] = val;\n }\n bibliography[e.citationKey] = e.entryTags;\n bibliography[e.citationKey].type = e.entryType;\n });\n }\n\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach(el => {\n let key = el.getAttribute(\"key\");\n if (key) {\n let citationKeys = key.split(\",\");\n citationKeys.forEach(key => {\n if (citations.indexOf(key) == -1){\n citations.push(key);\n if (!(key in bibliography)){\n console.warn(\"No bibliography entry found for: \" + key);\n }\n }\n });\n }\n });\n }\n data.bibliography = bibliography;\n data.citations = citations;\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(new Date(+start)); while (offseti(start, step), floori(start), start < stop)\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) while (--step >= 0) while (offseti(date, 1), !test(date)) {} // eslint-disable-line no-empty\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(Math.floor(date / durationSecond) * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(Math.floor(date / durationMinute) * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute} from \"./duration\";\n\nvar hour = interval(function(date) {\n var offset = date.getTimezoneOffset() * durationMinute % durationHour;\n if (offset < 0) offset += durationHour;\n date.setTime(Math.floor((+date - offset) / durationHour) * durationHour + offset);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval\";\nimport {durationWeek} from \"./duration\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {timeDay, timeSunday, timeMonday, timeYear, utcDay, utcSunday, utcMonday, utcYear} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"S\": formatSeconds,\n \"U\": formatWeekNumberSunday,\n \"w\": formatWeekdayNumber,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"S\": formatUTCSeconds,\n \"U\": formatUTCWeekNumberSunday,\n \"w\": formatUTCWeekdayNumber,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"S\": parseSeconds,\n \"U\": parseWeekNumberSunday,\n \"w\": parseWeekdayNumber,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0);\n if (i != string.length) return null;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n var day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?:\\:?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekdayNumber(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekdayNumber(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {timeFormat} from \"d3-time-format\";\n\nexport default function(dom, data) {\n\n data.authors = data.authors || [];\n\n // paths\n data.url = \"http://distill.pub/\" + data.distillPath;\n data.githubUrl = \"https://github.com/\" + data.githubPath;\n\n // Homepage\n //data.homepage = !post.noHomepage;\n data.journal = data.journal || {};\n\n // Dates\n if (data.publishedDate){//} && data.journal) {\n data.volume = data.publishedDate.getFullYear() - 2015;\n data.issue = data.publishedDate.getMonth() + 1;\n }\n\n data.publishedDate = data.publishedDate ? data.publishedDate : new Date(\"Invalid\");\n data.updatedDate = data.updatedDate ? data.updatedDate : new Date(\"Invalid\");\n\n data.publishedDateRFC\n let RFC = timeFormat(\"%a, %d %b %Y %H:%M:%S %Z\");\n let months = [\"Jan\", \"Feb\", \"March\", \"April\", \"May\", \"June\", \"July\", \"Aug\", \"Sept\", \"Oct\", \"Nov\", \"Dec\"];\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n data.publishedDateRFC = RFC(data.publishedDate);\n data.publishedYear = data.publishedDate.getFullYear();\n data.publishedMonth = months[data.publishedDate.getMonth()];\n data.publishedDay = data.publishedDate.getDate();\n data.publishedMonthPadded = zeroPad(data.publishedDate.getMonth() + 1);\n data.publishedDayPadded = zeroPad(data.publishedDate.getDate());\n data.updatedDateRFC = RFC(data.updatedDate);\n\n if (data.authors.length > 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \", et al.\";\n } else if (data.authors.length === 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \" & \" + data.authors[1].lastName;\n } else if (data.authors.length === 1) {\n data.concatenatedAuthors = data.authors[0].lastName\n }\n\n data.bibtexAuthors = data.authors.map(function(author){\n return author.lastName + \", \" + author.firstName;\n }).join(\" and \");\n\n data.slug = data.authors.length ? data.authors[0].lastName.toLowerCase() + data.publishedYear + data.title.split(\" \")[0].toLowerCase() : \"Untitled\";\n\n}\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","import favicon from './distill-favicon.base64';\nimport escape from 'escape-html';\n\nexport default function(dom, data) {\n let head = dom.querySelector(\"head\");\n let appendHead = html => appendHtml(head, html);\n\n function meta(name, content, force) {\n if (content || force)\n appendHead(` \\n`);\n }\n\n appendHead(`\n \n \n \n \n ${data.title}\n `);\n\n appendHead(`\n \n \n \n `);\n data.authors.forEach((a) => {\n appendHtml(head, `\n `)\n });\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n // if this is a proprer article, generate Google Scholar meta data\n if (data.doiSuffix){\n appendHead(`\n \\n`);\n\n meta(\"citation_title\", data.title);\n //meta(\"citation_fulltext_html_url\", data.url);\n meta(\"citation_volume\", data.volume);\n meta(\"citation_issue\", data.issue);\n meta(\"citation_firstpage\", data.doiSuffix? `e${data.doiSuffix}` : undefined);\n meta(\"citation_doi\", data.doi);\n\n let journal = data.journal || {};\n meta(\"citation_journal_title\", journal.full_title || journal.title);\n meta(\"citation_journal_abbrev\", journal.abbrev_title);\n meta(\"citation_issn\", journal.issn);\n meta(\"citation_publisher\", journal.publisher);\n meta(\"citation_fulltext_world_readable\", \"\", true);\n\n if (data.publishedDate){\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n meta(\"citation_online_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n // Should we do something different here?\n meta(\"citation_publication_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n }\n\n (data.authors || []).forEach((a) => {\n meta(\"citation_author\", `${a.lastName}, ${a.firstName}`);\n meta(\"citation_author_institution\", a.affiliation);\n });\n\n if (data.citations) {\n data.citations.forEach(key => {\n let d = data.bibliography[key];\n if(!d) {\n console.warn(\"No bibliography data fround for \" + key)\n } else {\n meta(\"citation_reference\", citation_meta_content(data.bibliography[key]) )\n };\n });\n }\n }\n}\n\nfunction appendHtml(el, html) {\n el.innerHTML += html;\n}\n\nfunction citation_meta_content(ref){\n // Special test for arxiv\n var content = `citation_title=${ref.title};`;\n \n let name_strings = ref.author.split(\" and \").forEach(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1].trim();\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n content += `citation_author=${firsts} ${last};`;\n });\n \n if (\"year\" in ref) {\n content += `citation_publication_date=${ref.year};`;\n }\n \n var arxiv_id_search = /https?:\\/\\/arxiv\\.org\\/pdf\\/([0-9]*\\.[0-9]*)\\.pdf/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /https?:\\/\\/arxiv\\.org\\/abs\\/([0-9]*\\.[0-9]*)/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /arXiv preprint arXiv:([0-9]*\\.[0-9]*)/.exec(ref.journal);\n if (arxiv_id_search && arxiv_id_search[1]){\n content += `citation_arxiv_id=${arxiv_id_search[1]};`;\n return content;\n }\n if (\"journal\" in ref){\n content += `citation_journal_title=${ref.journal};`;\n }\n if (\"volume\" in ref) {\n content += `citation_volume=${ref.volume};`;\n }\n if (\"issue\" in ref || \"number\" in ref){\n content += `citation_number=${ref.issue || ref.number};`;\n }\n /*content += `citation_first_page=${};`;\n content += `citation_publication_date=${};`;*/\n return content;\n}\n","const html = `\n\n
    This article is a draft, awaiting review for publication in Distill
    \n`;\n\nexport default function(dom, data) {\n let banner = dom.createElement(\"dt-banner\");\n banner.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(banner, b.firstChild);\n banner.addEventListener(\"click\", function() {\n banner.style.display = \"none\";\n });\n}\n","import logo from \"./distill-logo.svg\";\n\nconst html = `\n\n\n\n`\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-header\");\n if(el) {\n el.innerHTML = html;\n } else {\n let header = dom.createElement(\"dt-header\");\n header.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(header, b.firstChild);\n }\n}\n","/*!\n * mustache.js - Logic-less {{mustache}} templates with JavaScript\n * http://github.com/janl/mustache.js\n */\n\n/*global define: false Mustache: true*/\n\n(function defineMustache (global, factory) {\n if (typeof exports === 'object' && exports && typeof exports.nodeName !== 'string') {\n factory(exports); // CommonJS\n } else if (typeof define === 'function' && define.amd) {\n define(['exports'], factory); // AMD\n } else {\n global.Mustache = {};\n factory(global.Mustache); // script, wsh, asp\n }\n}(this, function mustacheFactory (mustache) {\n\n var objectToString = Object.prototype.toString;\n var isArray = Array.isArray || function isArrayPolyfill (object) {\n return objectToString.call(object) === '[object Array]';\n };\n\n function isFunction (object) {\n return typeof object === 'function';\n }\n\n /**\n * More correct typeof string handling array\n * which normally returns typeof 'object'\n */\n function typeStr (obj) {\n return isArray(obj) ? 'array' : typeof obj;\n }\n\n function escapeRegExp (string) {\n return string.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n }\n\n /**\n * Null safe way of checking whether or not an object,\n * including its prototype, has a given property\n */\n function hasProperty (obj, propName) {\n return obj != null && typeof obj === 'object' && (propName in obj);\n }\n\n // Workaround for https://issues.apache.org/jira/browse/COUCHDB-577\n // See https://github.com/janl/mustache.js/issues/189\n var regExpTest = RegExp.prototype.test;\n function testRegExp (re, string) {\n return regExpTest.call(re, string);\n }\n\n var nonSpaceRe = /\\S/;\n function isWhitespace (string) {\n return !testRegExp(nonSpaceRe, string);\n }\n\n var entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n function escapeHtml (string) {\n return String(string).replace(/[&<>\"'`=\\/]/g, function fromEntityMap (s) {\n return entityMap[s];\n });\n }\n\n var whiteRe = /\\s*/;\n var spaceRe = /\\s+/;\n var equalsRe = /\\s*=/;\n var curlyRe = /\\s*\\}/;\n var tagRe = /#|\\^|\\/|>|\\{|&|=|!/;\n\n /**\n * Breaks up the given `template` string into a tree of tokens. If the `tags`\n * argument is given here it must be an array with two string values: the\n * opening and closing tags used in the template (e.g. [ \"<%\", \"%>\" ]). Of\n * course, the default is to use mustaches (i.e. mustache.tags).\n *\n * A token is an array with at least 4 elements. The first element is the\n * mustache symbol that was used inside the tag, e.g. \"#\" or \"&\". If the tag\n * did not contain a symbol (i.e. {{myValue}}) this element is \"name\". For\n * all text that appears outside a symbol this element is \"text\".\n *\n * The second element of a token is its \"value\". For mustache tags this is\n * whatever else was inside the tag besides the opening symbol. For text tokens\n * this is the text itself.\n *\n * The third and fourth elements of the token are the start and end indices,\n * respectively, of the token in the original template.\n *\n * Tokens that are the root node of a subtree contain two more elements: 1) an\n * array of tokens in the subtree and 2) the index in the original template at\n * which the closing tag for that section begins.\n */\n function parseTemplate (template, tags) {\n if (!template)\n return [];\n\n var sections = []; // Stack to hold section tokens\n var tokens = []; // Buffer to hold the tokens\n var spaces = []; // Indices of whitespace tokens on the current line\n var hasTag = false; // Is there a {{tag}} on the current line?\n var nonSpace = false; // Is there a non-space char on the current line?\n\n // Strips all whitespace tokens array for the current line\n // if there was a {{#tag}} on it and otherwise only space.\n function stripSpace () {\n if (hasTag && !nonSpace) {\n while (spaces.length)\n delete tokens[spaces.pop()];\n } else {\n spaces = [];\n }\n\n hasTag = false;\n nonSpace = false;\n }\n\n var openingTagRe, closingTagRe, closingCurlyRe;\n function compileTags (tagsToCompile) {\n if (typeof tagsToCompile === 'string')\n tagsToCompile = tagsToCompile.split(spaceRe, 2);\n\n if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)\n throw new Error('Invalid tags: ' + tagsToCompile);\n\n openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\\\s*');\n closingTagRe = new RegExp('\\\\s*' + escapeRegExp(tagsToCompile[1]));\n closingCurlyRe = new RegExp('\\\\s*' + escapeRegExp('}' + tagsToCompile[1]));\n }\n\n compileTags(tags || mustache.tags);\n\n var scanner = new Scanner(template);\n\n var start, type, value, chr, token, openSection;\n while (!scanner.eos()) {\n start = scanner.pos;\n\n // Match any text between tags.\n value = scanner.scanUntil(openingTagRe);\n\n if (value) {\n for (var i = 0, valueLength = value.length; i < valueLength; ++i) {\n chr = value.charAt(i);\n\n if (isWhitespace(chr)) {\n spaces.push(tokens.length);\n } else {\n nonSpace = true;\n }\n\n tokens.push([ 'text', chr, start, start + 1 ]);\n start += 1;\n\n // Check for whitespace on the current line.\n if (chr === '\\n')\n stripSpace();\n }\n }\n\n // Match the opening tag.\n if (!scanner.scan(openingTagRe))\n break;\n\n hasTag = true;\n\n // Get the tag type.\n type = scanner.scan(tagRe) || 'name';\n scanner.scan(whiteRe);\n\n // Get the tag value.\n if (type === '=') {\n value = scanner.scanUntil(equalsRe);\n scanner.scan(equalsRe);\n scanner.scanUntil(closingTagRe);\n } else if (type === '{') {\n value = scanner.scanUntil(closingCurlyRe);\n scanner.scan(curlyRe);\n scanner.scanUntil(closingTagRe);\n type = '&';\n } else {\n value = scanner.scanUntil(closingTagRe);\n }\n\n // Match the closing tag.\n if (!scanner.scan(closingTagRe))\n throw new Error('Unclosed tag at ' + scanner.pos);\n\n token = [ type, value, start, scanner.pos ];\n tokens.push(token);\n\n if (type === '#' || type === '^') {\n sections.push(token);\n } else if (type === '/') {\n // Check section nesting.\n openSection = sections.pop();\n\n if (!openSection)\n throw new Error('Unopened section \"' + value + '\" at ' + start);\n\n if (openSection[1] !== value)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + start);\n } else if (type === 'name' || type === '{' || type === '&') {\n nonSpace = true;\n } else if (type === '=') {\n // Set the tags for the next time around.\n compileTags(value);\n }\n }\n\n // Make sure there are no open sections when we're done.\n openSection = sections.pop();\n\n if (openSection)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + scanner.pos);\n\n return nestTokens(squashTokens(tokens));\n }\n\n /**\n * Combines the values of consecutive text tokens in the given `tokens` array\n * to a single token.\n */\n function squashTokens (tokens) {\n var squashedTokens = [];\n\n var token, lastToken;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n if (token) {\n if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {\n lastToken[1] += token[1];\n lastToken[3] = token[3];\n } else {\n squashedTokens.push(token);\n lastToken = token;\n }\n }\n }\n\n return squashedTokens;\n }\n\n /**\n * Forms the given array of `tokens` into a nested tree structure where\n * tokens that represent a section have two additional items: 1) an array of\n * all tokens that appear in that section and 2) the index in the original\n * template that represents the end of that section.\n */\n function nestTokens (tokens) {\n var nestedTokens = [];\n var collector = nestedTokens;\n var sections = [];\n\n var token, section;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n switch (token[0]) {\n case '#':\n case '^':\n collector.push(token);\n sections.push(token);\n collector = token[4] = [];\n break;\n case '/':\n section = sections.pop();\n section[5] = token[2];\n collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;\n break;\n default:\n collector.push(token);\n }\n }\n\n return nestedTokens;\n }\n\n /**\n * A simple string scanner that is used by the template parser to find\n * tokens in template strings.\n */\n function Scanner (string) {\n this.string = string;\n this.tail = string;\n this.pos = 0;\n }\n\n /**\n * Returns `true` if the tail is empty (end of string).\n */\n Scanner.prototype.eos = function eos () {\n return this.tail === '';\n };\n\n /**\n * Tries to match the given regular expression at the current position.\n * Returns the matched text if it can match, the empty string otherwise.\n */\n Scanner.prototype.scan = function scan (re) {\n var match = this.tail.match(re);\n\n if (!match || match.index !== 0)\n return '';\n\n var string = match[0];\n\n this.tail = this.tail.substring(string.length);\n this.pos += string.length;\n\n return string;\n };\n\n /**\n * Skips all text until the given regular expression can be matched. Returns\n * the skipped string, which is the entire tail if no match can be made.\n */\n Scanner.prototype.scanUntil = function scanUntil (re) {\n var index = this.tail.search(re), match;\n\n switch (index) {\n case -1:\n match = this.tail;\n this.tail = '';\n break;\n case 0:\n match = '';\n break;\n default:\n match = this.tail.substring(0, index);\n this.tail = this.tail.substring(index);\n }\n\n this.pos += match.length;\n\n return match;\n };\n\n /**\n * Represents a rendering context by wrapping a view object and\n * maintaining a reference to the parent context.\n */\n function Context (view, parentContext) {\n this.view = view;\n this.cache = { '.': this.view };\n this.parent = parentContext;\n }\n\n /**\n * Creates a new context using the given view with this context\n * as the parent.\n */\n Context.prototype.push = function push (view) {\n return new Context(view, this);\n };\n\n /**\n * Returns the value of the given name in this context, traversing\n * up the context hierarchy if the value is absent in this context's view.\n */\n Context.prototype.lookup = function lookup (name) {\n var cache = this.cache;\n\n var value;\n if (cache.hasOwnProperty(name)) {\n value = cache[name];\n } else {\n var context = this, names, index, lookupHit = false;\n\n while (context) {\n if (name.indexOf('.') > 0) {\n value = context.view;\n names = name.split('.');\n index = 0;\n\n /**\n * Using the dot notion path in `name`, we descend through the\n * nested objects.\n *\n * To be certain that the lookup has been successful, we have to\n * check if the last object in the path actually has the property\n * we are looking for. We store the result in `lookupHit`.\n *\n * This is specially necessary for when the value has been set to\n * `undefined` and we want to avoid looking up parent contexts.\n **/\n while (value != null && index < names.length) {\n if (index === names.length - 1)\n lookupHit = hasProperty(value, names[index]);\n\n value = value[names[index++]];\n }\n } else {\n value = context.view[name];\n lookupHit = hasProperty(context.view, name);\n }\n\n if (lookupHit)\n break;\n\n context = context.parent;\n }\n\n cache[name] = value;\n }\n\n if (isFunction(value))\n value = value.call(this.view);\n\n return value;\n };\n\n /**\n * A Writer knows how to take a stream of tokens and render them to a\n * string, given a context. It also maintains a cache of templates to\n * avoid the need to parse the same template twice.\n */\n function Writer () {\n this.cache = {};\n }\n\n /**\n * Clears all cached templates in this writer.\n */\n Writer.prototype.clearCache = function clearCache () {\n this.cache = {};\n };\n\n /**\n * Parses and caches the given `template` and returns the array of tokens\n * that is generated from the parse.\n */\n Writer.prototype.parse = function parse (template, tags) {\n var cache = this.cache;\n var tokens = cache[template];\n\n if (tokens == null)\n tokens = cache[template] = parseTemplate(template, tags);\n\n return tokens;\n };\n\n /**\n * High-level method that is used to render the given `template` with\n * the given `view`.\n *\n * The optional `partials` argument may be an object that contains the\n * names and templates of partials that are used in the template. It may\n * also be a function that is used to load partial templates on the fly\n * that takes a single argument: the name of the partial.\n */\n Writer.prototype.render = function render (template, view, partials) {\n var tokens = this.parse(template);\n var context = (view instanceof Context) ? view : new Context(view);\n return this.renderTokens(tokens, context, partials, template);\n };\n\n /**\n * Low-level method that renders the given array of `tokens` using\n * the given `context` and `partials`.\n *\n * Note: The `originalTemplate` is only ever used to extract the portion\n * of the original template that was contained in a higher-order section.\n * If the template doesn't use higher-order sections, this argument may\n * be omitted.\n */\n Writer.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate) {\n var buffer = '';\n\n var token, symbol, value;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n value = undefined;\n token = tokens[i];\n symbol = token[0];\n\n if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate);\n else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate);\n else if (symbol === '>') value = this.renderPartial(token, context, partials, originalTemplate);\n else if (symbol === '&') value = this.unescapedValue(token, context);\n else if (symbol === 'name') value = this.escapedValue(token, context);\n else if (symbol === 'text') value = this.rawValue(token);\n\n if (value !== undefined)\n buffer += value;\n }\n\n return buffer;\n };\n\n Writer.prototype.renderSection = function renderSection (token, context, partials, originalTemplate) {\n var self = this;\n var buffer = '';\n var value = context.lookup(token[1]);\n\n // This function is used to render an arbitrary template\n // in the current context by higher-order sections.\n function subRender (template) {\n return self.render(template, context, partials);\n }\n\n if (!value) return;\n\n if (isArray(value)) {\n for (var j = 0, valueLength = value.length; j < valueLength; ++j) {\n buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate);\n }\n } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {\n buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate);\n } else if (isFunction(value)) {\n if (typeof originalTemplate !== 'string')\n throw new Error('Cannot use higher-order sections without the original template');\n\n // Extract the portion of the original template that the section contains.\n value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);\n\n if (value != null)\n buffer += value;\n } else {\n buffer += this.renderTokens(token[4], context, partials, originalTemplate);\n }\n return buffer;\n };\n\n Writer.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate) {\n var value = context.lookup(token[1]);\n\n // Use JavaScript's definition of falsy. Include empty arrays.\n // See https://github.com/janl/mustache.js/issues/186\n if (!value || (isArray(value) && value.length === 0))\n return this.renderTokens(token[4], context, partials, originalTemplate);\n };\n\n Writer.prototype.renderPartial = function renderPartial (token, context, partials) {\n if (!partials) return;\n\n var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\n if (value != null)\n return this.renderTokens(this.parse(value), context, partials, value);\n };\n\n Writer.prototype.unescapedValue = function unescapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return value;\n };\n\n Writer.prototype.escapedValue = function escapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return mustache.escape(value);\n };\n\n Writer.prototype.rawValue = function rawValue (token) {\n return token[1];\n };\n\n mustache.name = 'mustache.js';\n mustache.version = '2.3.0';\n mustache.tags = [ '{{', '}}' ];\n\n // All high-level mustache.* functions use this writer.\n var defaultWriter = new Writer();\n\n /**\n * Clears all cached templates in the default writer.\n */\n mustache.clearCache = function clearCache () {\n return defaultWriter.clearCache();\n };\n\n /**\n * Parses and caches the given template in the default writer and returns the\n * array of tokens it contains. Doing this ahead of time avoids the need to\n * parse templates on the fly as they are rendered.\n */\n mustache.parse = function parse (template, tags) {\n return defaultWriter.parse(template, tags);\n };\n\n /**\n * Renders the `template` with the given `view` and `partials` using the\n * default writer.\n */\n mustache.render = function render (template, view, partials) {\n if (typeof template !== 'string') {\n throw new TypeError('Invalid template! Template should be a \"string\" ' +\n 'but \"' + typeStr(template) + '\" was given as the first ' +\n 'argument for mustache#render(template, view, partials)');\n }\n\n return defaultWriter.render(template, view, partials);\n };\n\n // This is here for backwards compatibility with 0.4.x.,\n /*eslint-disable */ // eslint wants camel cased function name\n mustache.to_html = function to_html (template, view, partials, send) {\n /*eslint-enable*/\n\n var result = mustache.render(template, view, partials);\n\n if (isFunction(send)) {\n send(result);\n } else {\n return result;\n }\n };\n\n // Export the escaping function so that the user may override it.\n // See https://github.com/janl/mustache.js/issues/244\n mustache.escape = escapeHtml;\n\n // Export these mainly for testing, but also for advanced usage.\n mustache.Scanner = Scanner;\n mustache.Context = Context;\n mustache.Writer = Writer;\n\n return mustache;\n}));\n","import mustache from \"mustache\";\n\nconst html = `\n\n\n`;\n\nconst template = `\n
    \n
    \n {{#authors}}\n
    \n {{#personalURL}}\n {{name}}\n {{/personalURL}}\n {{^personalURL}}\n
    {{name}}
    \n {{/personalURL}}\n {{#affiliation}}\n {{#affiliationURL}}\n {{affiliation}}\n {{/affiliationURL}}\n {{^affiliationURL}}\n
    {{affiliation}}
    \n {{/affiliationURL}}\n {{/affiliation}}\n
    \n {{/authors}}\n
    \n
    \n
    {{publishedMonth}}. {{publishedDay}}
    \n
    {{publishedYear}}
    \n
    \n \n
    Citation:
    \n
    {{concatenatedAuthors}}, {{publishedYear}}
    \n
    \n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-byline');\n if (el) {\n el.innerHTML = html + mustache.render(template, data);\n }\n}\n","const html = `\n\n\n
    \n

    References

    \n \n

    Errors, Reuse, and Citation

    \n

    If you see mistakes or want to suggest changes, please create an issue on GitHub.

    \n

    Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on GitHub. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: “Figure from …”.

    \n

    For attribution in academic contexts, please cite this work as

    \n
    \n  

    BibTeX citation

    \n
    \n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-appendix')\n if (el) {\n let oldHtml = el.innerHTML;\n el.innerHTML = html;\n let div = el.querySelector(\"div.l-body\")\n\n if (dom.querySelector(\"dt-fn\")) {\n div.innerHTML = `

    Footnotes

    ` + div.innerHTML;\n }\n\n div.innerHTML = oldHtml + div.innerHTML;\n if (data.githubCompareUpdatesUrl) {\n div.innerHTML = `

    Updates

    View all changes to this article since it was first published.

    ` + div.innerHTML;\n }\n\n el.querySelector(\"a.github\").setAttribute(\"href\", data.githubUrl);\n el.querySelector(\"a.github-issue\").setAttribute(\"href\", data.githubUrl + \"/issues/new\");\n el.querySelector(\".citation.short\").textContent = data.concatenatedAuthors + \", \" + '\"' + data.title + '\", Distill, ' + data.publishedYear + \".\";\n var bibtex = \"@article{\" + data.slug + \",\\n\";\n bibtex += \" author = {\" + data.bibtexAuthors + \"},\\n\";\n bibtex += \" title = {\" + data.title + \"},\\n\";\n bibtex += \" journal = {Distill},\\n\";\n bibtex += \" year = {\" + data.publishedYear + \"},\\n\";\n bibtex += \" note = {\" + data.url + \"}\\n\";\n bibtex += \"}\";\n el.querySelector(\".citation.long\").textContent = bibtex;\n }\n\n}\n","import logo from \"./distill-logo.svg\";\n\nlet html = `\n\n\n
    \n \n ${logo}\n Distill\n is dedicated to clear explanations of machine learning\n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-footer\");\n if(el) {\n el.innerHTML = html;\n } else {\n let footer = dom.createElement(\"dt-footer\");\n footer.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.appendChild(footer);\n }\n}\n","export default function(dom, data) {\n let css = `\n dt-cite {\n color: hsla(206, 90%, 20%, 0.7);\n }\n dt-cite .citation-number {\n cursor: default;\n white-space: nowrap;\n font-family: -apple-system, BlinkMacSystemFont, \"Roboto\", Helvetica, sans-serif;\n font-size: 75%;\n color: hsla(206, 90%, 20%, 0.7);\n display: inline-block;\n line-height: 1.1em;\n text-align: center;\n position: relative;\n top: -2px;\n margin: 0 2px;\n }\n figcaption dt-cite .citation-number {\n font-size: 11px;\n font-weight: normal;\n top: -2px;\n line-height: 1em;\n }\n `;\n\n let style = dom.createElement(\"style\");\n style.textContent = css;\n dom.querySelector(\"body\").appendChild(style);\n\n let citations = data.citations;\n /*if (data.citations) {\n citations = Object.keys(data.citations).map(c => data.citations[c]);\n citations.sort((a, b) => {\n return a.author.localeCompare(b.author);\n });\n }*/\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach((el,n) => {\n var key = el.getAttribute(\"key\");\n if (key) {\n var keys = key.split(\",\");\n var cite_string = inline_cite_short(keys);\n var cite_hover_str = \"\";\n keys.map((key,n) => {\n if (n>0) cite_hover_str += \"

    \";\n cite_hover_str += hover_cite(data.bibliography[key]);\n });\n cite_hover_str = cite_hover_str.replace(/\"/g, \"'\")\n var orig_string = el.innerHTML;\n if (orig_string != \"\") orig_string += \" \";\n el.innerHTML = `${orig_string}${cite_string}`;\n }\n });\n\n let bibEl = dom.querySelector(\"dt-bibliography\");\n if (bibEl) {\n let ol = dom.createElement(\"ol\");\n citations.forEach(key => {\n let el = dom.createElement(\"li\");\n el.innerHTML = bibliography_cite(data.bibliography[key]);\n ol.appendChild(el);\n })\n bibEl.appendChild(ol);\n }\n\n function inline_cite_short(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var n = data.citations.indexOf(key)+1;\n return \"\"+n;\n } else {\n return \"?\";\n }\n }\n return \"[\"+keys.map(cite_string).join(\", \")+\"]\";\n }\n\n function inline_cite_long(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var ent = data.bibliography[key];\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var year = ent.year;\n if (names.length == 1) return names[0] + \", \" + year;\n if (names.length == 2) return names[0] + \" & \" + names[1] + \", \" + year;\n if (names.length > 2) return names[0] + \", et al., \" + year;\n } else {\n return \"?\";\n }\n }\n return keys.map(cite_string).join(\", \");\n }\n\n function author_string(ent, template, sep, finalSep){\n var names = ent.author.split(\" and \");\n let name_strings = names.map(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1];\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n var initials = \"\";\n if (firsts != undefined) {\n initials = firsts.trim().split(\" \").map(s => s.trim()[0]);\n initials = initials.join(\".\")+\".\";\n }\n return template.replace(\"${F}\", firsts)\n .replace(\"${L}\", last)\n .replace(\"${I}\", initials);\n });\n if (names.length > 1) {\n var str = name_strings.slice(0, names.length-1).join(sep);\n str += (finalSep || sep) + name_strings[names.length-1];\n return str;\n } else {\n return name_strings[0];\n }\n }\n\n function venue_string(ent) {\n var cite = (ent.journal || ent.booktitle || \"\")\n if (\"volume\" in ent){\n var issue = ent.issue || ent.number;\n issue = (issue != undefined)? \"(\"+issue+\")\" : \"\";\n cite += \", Vol \" + ent.volume + issue;\n }\n if (\"pages\" in ent){\n cite += \", pp. \" + ent.pages\n }\n if (cite != \"\") cite += \". \"\n if (\"publisher\" in ent){\n cite += ent.publisher;\n if (cite[cite.length-1] != \".\") cite += \".\";\n }\n return cite;\n }\n\n function link_string(ent){\n if (\"url\" in ent){\n var url = ent.url;\n var arxiv_match = (/arxiv\\.org\\/abs\\/([0-9\\.]*)/).exec(url);\n if (arxiv_match != null){\n url = `http://arxiv.org/pdf/${arxiv_match[1]}.pdf`;\n }\n\n if (url.slice(-4) == \".pdf\"){\n var label = \"PDF\";\n } else if (url.slice(-5) == \".html\") {\n var label = \"HTML\";\n }\n return `  [${label||\"link\"}]`;\n }/* else if (\"doi\" in ent){\n return `  [DOI]`;\n }*/ else {\n return \"\";\n }\n }\n function doi_string(ent, new_line){\n if (\"doi\" in ent) {\n return `${new_line?\"
    \":\"\"} DOI: ${ent.doi}`;\n } else {\n return \"\";\n }\n }\n\n function bibliography_cite(ent, fancy){\n if (ent){\n var cite = \"\" + ent.title + \" \"\n cite += link_string(ent) + \"
    \";\n cite += author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += venue_string(ent);\n cite += doi_string(ent);\n return cite\n /*var cite = author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += \"\" + ent.title + \". \";\n cite += venue_string(ent);\n cite += doi_string(ent);\n cite += link_string(ent);\n return cite*/\n } else {\n return \"?\";\n }\n }\n\n function hover_cite(ent){\n if (ent){\n var cite = \"\";\n cite += \"\" + ent.title + \"\";\n cite += link_string(ent);\n cite += \"
    \"\n\n var a_str = author_string(ent, \"${I} ${L}\", \", \") + \".\";\n var v_str = venue_string(ent).trim() + \" \" + ent.year + \". \" + doi_string(ent, true);\n\n if ((a_str+v_str).length < Math.min(40, ent.title.length)) {\n cite += a_str + \" \" + v_str;\n } else {\n cite += a_str + \"
    \" + v_str;\n }\n return cite;\n } else {\n return \"?\";\n }\n }\n\n\n //https://scholar.google.com/scholar?q=allintitle%3ADocument+author%3Aolah\n function get_GS_URL(ent){\n if (ent){\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var title = ent.title.split(\" \")//.replace(/[,:]/, \"\")\n var url = \"http://search.labs.crossref.org/dois?\"//\"\"https://scholar.google.com/scholar?\"\n url += uris({q: names.join(\" \") + \" \" + title.join(\" \")})\n }\n\n }\n}\n","export default function(dom, data) {\n\n var fnTags = [].slice.apply(dom.querySelectorAll(\"dt-fn\"));\n var fnContent = [];\n fnTags.forEach((el,n) => {\n var content = el.innerHTML;\n fnContent.push(content);\n n = (n+1)+\"\";\n var key = \"fn-\"+n;\n var escaped_content = content.replace(/\"/g, \"'\");\n el.innerHTML = `${n}`;\n });\n\n let fnList = dom.querySelector(\"dt-fn-list\");\n if (fnList) {\n let ol = dom.createElement(\"ol\");\n fnContent.forEach(content => {\n let el = dom.createElement(\"li\");\n el.innerHTML = content;\n ol.appendChild(el);\n })\n fnList.appendChild(ol);\n }\n\n}\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n */\n\n;(function() {\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^( *[-*_]){3,} *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,\n nptable: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n blockquote: /^( *>[^\\n]+(\\n(?!def)[^\\n]+)*\\n*)+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n table: noop,\n paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,\n text: /^[^\\n]+/\n};\n\nblock.bullet = /(?:[*+-]|\\d+\\.)/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = replace(block.item, 'gm')\n (/bull/g, block.bullet)\n ();\n\nblock.list = replace(block.list)\n (/bull/g, block.bullet)\n ('hr', '\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))')\n ('def', '\\\\n+(?=' + block.def.source + ')')\n ();\n\nblock.blockquote = replace(block.blockquote)\n ('def', block.def)\n ();\n\nblock._tag = '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'\n + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'\n + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|[^\\\\w\\\\s@]*@)\\\\b';\n\nblock.html = replace(block.html)\n ('comment', //)\n ('closed', /<(tag)[\\s\\S]+?<\\/\\1>/)\n ('closing', /])*?>/)\n (/tag/g, block._tag)\n ();\n\nblock.paragraph = replace(block.paragraph)\n ('hr', block.hr)\n ('heading', block.heading)\n ('lheading', block.lheading)\n ('blockquote', block.blockquote)\n ('tag', '<' + block._tag)\n ('def', block.def)\n ();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]*?)\\s*\\1 *(?:\\n+|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = replace(block.paragraph)\n ('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n ();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top, bq) {\n var src = src.replace(/^ +$/gm, '')\n , next\n , loose\n , cap\n , bull\n , b\n , item\n , space\n , i\n , l;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic\n ? cap.replace(/\\n+$/, '')\n : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top, true);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n\n this.tokens.push({\n type: 'list_start',\n ordered: bull.length > 1\n });\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n this.tokens.push({\n type: loose\n ? 'loose_item_start'\n : 'list_item_start'\n });\n\n // Recurse.\n this.token(item, false, bq);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if ((!bq && top) && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.links[cap[1].toLowerCase()] = {\n href: cap[2],\n title: cap[3]\n };\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i]\n .replace(/^ *\\| *| *\\| *$/g, '')\n .split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n autolink: /^<([^ >]+(@|:\\/)[^ >]+)>/,\n url: noop,\n tag: /^|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^\\b_((?:[^_]|__)+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n code: /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n text: /^[\\s\\S]+?(?=[\\\\?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\ninline.link = replace(inline.link)\n ('inside', inline._inside)\n ('href', inline._href)\n ();\n\ninline.reflink = replace(inline.reflink)\n ('inside', inline._inside)\n ();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: replace(inline.escape)('])', '~|])')(),\n url: /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n text: replace(inline.text)\n (']|', '~]|')\n ('|', '|https?://|')\n ()\n});\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: replace(inline.br)('{2,}', '*')(),\n text: replace(inline.gfm.text)('{2,}', '*')()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer;\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new\n Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n var out = ''\n , link\n , text\n , href\n , cap;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += cap[1];\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = cap[1].charAt(6) === ':'\n ? this.mangle(cap[1].substring(7))\n : this.mangle(cap[1]);\n href = this.mangle('mailto:') + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n src = src.substring(cap[0].length);\n text = escape(cap[1]);\n href = text;\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^/i.test(cap[0])) {\n this.inLink = false;\n }\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0]\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out += this.outputLink(cap, {\n href: cap[2],\n title: cap[3]\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2], true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = escape(link.href)\n , title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = ''\n , l = text.length\n , i = 0\n , ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || {};\n}\n\nRenderer.prototype.code = function(code, lang, escaped) {\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '\\n
    ';\n }\n\n return '
    '\n    + (escaped ? code : escape(code, true))\n    + '\\n
    \\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '
    \\n' + quote + '
    \\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw) {\n return ''\n + text\n + '\\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n};\n\nRenderer.prototype.list = function(body, ordered) {\n var type = ordered ? 'ol' : 'ul';\n return '<' + type + '>\\n' + body + '\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '
  • ' + text + '
  • \\n';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '

    ' + text + '

    \\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + '\\n'\n + body\n + '\\n'\n + '
    \\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '\\n' + content + '\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' style=\"text-align:' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.em = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? '
    ' : '
    ';\n};\n\nRenderer.prototype.del = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n if (this.options.sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return '';\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0) {\n return '';\n }\n }\n var out = '
    ';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n var out = '\"'' : '>';\n return out;\n};\n\nRenderer.prototype.text = function(text) {\n return text;\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer;\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options, renderer) {\n var parser = new Parser(options, renderer);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options, this.renderer);\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n this.token.text);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = ''\n , body = ''\n , i\n , row\n , cell\n , flags\n , j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n flags = { header: true, align: this.token.align[i] };\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n var body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n var body = ''\n , ordered = this.token.ordered;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered);\n }\n case 'list_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'loose_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'html': {\n var html = !this.token.pre && !this.options.pedantic\n ? this.inline.output(this.token.text)\n : this.token.text;\n return this.renderer.html(html);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n }\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n return html\n .replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\nfunction unescape(html) {\n\t// explicitly match decimal, hex, and named HTML entities \n return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/g, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction replace(regex, opt) {\n regex = regex.source;\n opt = opt || '';\n return function self(name, val) {\n if (!name) return new RegExp(regex, opt);\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return self;\n };\n}\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1\n , target\n , key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n\n var highlight = opt.highlight\n , tokens\n , pending\n , i = 0;\n\n try {\n tokens = Lexer.lex(src, opt)\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/chjj/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occured:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n sanitizer: null,\n mangle: true,\n smartLists: false,\n silent: false,\n highlight: null,\n langPrefix: 'lang-',\n smartypants: false,\n headerPrefix: '',\n renderer: new Renderer,\n xhtml: false\n};\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.parse = marked;\n\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n this.marked = marked;\n}\n\n}).call(function() {\n return this || (typeof window !== 'undefined' ? window : global);\n}());\n","import marked from 'marked';\n\nmarked.setOptions({\n gfm: true,\n smartypants: true\n});\n\nexport default function(dom, data) {\n let markdownElements = [].slice.call(dom.querySelectorAll('[markdown]'));\n markdownElements.forEach(el => {\n let content = el.innerHTML;\n // Set default indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n\n el.innerHTML = marked(content);\n });\n}\n","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = _self.Prism = {\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/ text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\tbreak tokenloop;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t delNum = 1;\n\n\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t to = match.index + match[0].length,\n\t\t\t\t\t\t k = i,\n\t\t\t\t\t\t p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && p < to; ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t match = match[0].slice(lookbehindLength),\n\t\t\t\t\t to = from + match.length,\n\t\t\t\t\t before = str.slice(0, from),\n\t\t\t\t\t after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (env.type == 'comment') {\n\t\tenv.attributes['spellcheck'] = 'true';\n\t}\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n \t// In worker\n\t_self.addEventListener('message', function(evt) {\n\t\tvar message = JSON.parse(evt.data),\n\t\t lang = message.language,\n\t\t code = message.code,\n\t\t immediateClose = message.immediateClose;\n\n\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\tif (immediateClose) {\n\t\t\t_self.close();\n\t\t}\n\t}, false);\n\n\treturn _self.Prism;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (document.addEventListener && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': //,\n\t'prolog': /<\\?[\\w\\W]+?\\?>/,\n\t'doctype': //i,\n\t'cdata': //i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\w\\W])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:('|\")[\\w\\W]*?(\\1)|[^\\s>]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /[=>\"']/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\w\\W]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^\\{\\}\\s][^\\{\\};]*?(?=\\s*\\{)/,\n\t'string': {\n\t\tpattern: /(\"|')(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'property': /(\\b|\\B)[\\w-]+(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|').*?\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\w\\W]*?\\*\\//,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[a-z0-9_\\.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /(\\.|\\\\)/\n\t\t}\n\t},\n\t'keyword': /\\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(0x[\\dA-Fa-f]+|0b[01]+|0o[0-7]+|\\d*\\.?\\d+([Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*(?=\\()/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*\\*?|\\/|~|\\^|%|\\.{3}/\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[.+?]|\\\\.|[^/\\\\\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\\\\\|\\\\?[^\\\\])*?`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript'\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tif(Array.prototype.forEach) { // Check to prevent error in IE8\n\t\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\t\tvar language, parent = pre;\n\t\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\t\tparent = parent.parentNode;\n\t\t\t\t}\n\n\t\t\t\tif (parent) {\n\t\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t\t}\n\n\t\t\t\tif (!language) {\n\t\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t\t}\n\n\t\t\t\tvar code = document.createElement('code');\n\t\t\t\tcode.className = 'language-' + language;\n\n\t\t\t\tpre.textContent = '';\n\n\t\t\t\tcode.textContent = 'Loading…';\n\n\t\t\t\tpre.appendChild(code);\n\n\t\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\t\txhr.open('GET', src, true);\n\n\t\t\t\txhr.onreadystatechange = function () {\n\t\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\txhr.send(null);\n\t\t\t});\n\t\t}\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\n})();\n","import Prism from \"prismjs\";\n\nexport default function(dom, data) {\n let codeElements = [].slice.call(dom.querySelectorAll(\"dt-code\"));\n codeElements.forEach(el => {\n let content = el.textContent;\n el.innerHTML = \"\";\n let language = el.getAttribute(\"language\");\n let c = dom.createElement(\"code\");\n if (el.getAttribute(\"block\") === \"\") {\n // Let's normalize the tab indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n let p = dom.createElement(\"pre\");\n p.appendChild(c);\n el.appendChild(p);\n } else {\n el.appendChild(c);\n }\n let highlighted = content;\n if (Prism.languages[language]) {\n c.setAttribute(\"class\", \"language-\" + language);\n highlighted = Prism.highlight(content, Prism.languages[language]);\n }\n c.innerHTML = highlighted;\n });\n}\n","export default function(dom, data) {\n\n var textNodes = dom.createTreeWalker(\n dom.body,\n dom.defaultView.NodeFilter.SHOW_TEXT\n );\n while (textNodes.nextNode()) {\n var n = textNodes.currentNode,\n text = n.nodeValue;\n if (text && acceptNode(n)) {\n text = quotes(text);\n text = punctuation(text);\n n.nodeValue = text;\n }\n }\n}\n\nfunction acceptNode(node) {\n var parent = node.parentElement;\n var isMath = (parent && parent.getAttribute && parent.getAttribute(\"class\")) ? parent.getAttribute(\"class\").includes(\"katex\") || parent.getAttribute(\"class\").includes(\"MathJax\") : false;\n return parent &&\n parent.nodeName !== \"SCRIPT\" &&\n parent.nodeName !== \"STYLE\" &&\n parent.nodeName !== \"CODE\" &&\n parent.nodeName !== \"PRE\" &&\n parent.nodeName !== \"SPAN\" &&\n parent.nodeName !== \"DT-HEADER\" &&\n parent.nodeName !== \"DT-BYLINE\" &&\n parent.nodeName !== \"DT-MATH\" &&\n parent.nodeName !== \"DT-CODE\" &&\n parent.nodeName !== \"DT-BIBLIOGRAPHY\" &&\n parent.nodeName !== \"DT-FOOTER\" &&\n parent.nodeType !== 8 && //comment nodes\n !isMath;\n}\n\n\n/*!\n * typeset - Typesetting for the web\n * @version v0.1.6\n * @link https://github.com/davidmerfield/Typeset.js\n * @author David Merfield\n */\n // which has a CC0 license\n // http://creativecommons.org/publicdomain/zero/1.0/\n\n\nfunction punctuation(text){\n\n // Dashes\n text = text.replace(/--/g, '\\u2014');\n text = text.replace(/ \\u2014 /g,\"\\u2009\\u2014\\u2009\"); //this has thin spaces\n\n // Elipses\n text = text.replace(/\\.\\.\\./g,'…');\n\n // Nbsp for punc with spaces\n var NBSP = \"\\u00a0\";\n var NBSP_PUNCTUATION_START = /([«¿¡]) /g;\n var NBSP_PUNCTUATION_END = / ([\\!\\?:;\\.,‽»])/g;\n\n text = text.replace(NBSP_PUNCTUATION_START, '$1' + NBSP);\n text = text.replace(NBSP_PUNCTUATION_END, NBSP + '$1');\n\n return text;\n}\n\nfunction quotes(text) {\n\n text = text\n .replace(/(\\W|^)\"([^\\s\\!\\?:;\\.,‽»])/g, '$1\\u201c$2') // beginning \"\n .replace(/(\\u201c[^\"]*)\"([^\"]*$|[^\\u201c\"]*\\u201c)/g, '$1\\u201d$2') // ending \"\n .replace(/([^0-9])\"/g,'$1\\u201d') // remaining \" at end of word\n .replace(/(\\W|^)'(\\S)/g, '$1\\u2018$2') // beginning '\n .replace(/([a-z])'([a-z])/ig, '$1\\u2019$2') // conjunction's possession\n .replace(/((\\u2018[^']*)|[a-z])'([^0-9]|$)/ig, '$1\\u2019$3') // ending '\n .replace(/(\\u2018)([0-9]{2}[^\\u2019]*)(\\u2018([^0-9]|$)|$|\\u2019[a-z])/ig, '\\u2019$2$3') // abbrev. years like '93\n .replace(/(\\B|^)\\u2018(?=([^\\u2019]*\\u2019\\b)*([^\\u2019\\u2018]*\\W[\\u2019\\u2018]\\b|[^\\u2019\\u2018]*$))/ig, '$1\\u2019') // backwards apostrophe\n .replace(/'''/g, '\\u2034') // triple prime\n .replace(/(\"|'')/g, '\\u2033') // double prime\n .replace(/'/g, '\\u2032');\n\n // Allow escaped quotes\n text = text.replace(/\\\\“/, '\\\"');\n text = text.replace(/\\\\”/, '\\\"');\n text = text.replace(/\\\\’/, '\\'');\n text = text.replace(/\\\\‘/, '\\'');\n\n return text;\n}\n\nfunction ligatures(text){\n\n text = text.replace(/fi/g, 'fi');\n text = text.replace(/fl/g, 'fl');\n\n return text;\n};\n","import code from './hover-box.txt';\n\nexport default function(dom) {\n let s = dom.createElement(\"script\");\n s.textContent = code;\n dom.querySelector(\"body\").appendChild(s);\n}\n","//import xml from \"xml\";\n\nexport default function(data) {\n\n\n var date = data.publishedDate;\n\n var batch_timestamp = Math.floor(Date.now() / 1000);\n var batch_id = data.authors.length ? data.authors[0].lastName.toLowerCase().slice(0,20) : \"Anonymous\";\n batch_id += \"_\" + date.getFullYear();\n batch_id += \"_\" + data.title.split(\" \")[0].toLowerCase().slice(0,20) + \"_\" + batch_timestamp;\n // generate XML\n var crf_data =\n {doi_batch : [\n\n { _attr: {\n version: \"4.3.7\",\n xmlns: \"http://www.crossref.org/schema/4.3.7\",\n \"xmlns:xsi\": \"http://www.w3.org/2001/XMLSchema-instance\",\n \"xsi:schemaLocation\": \"http://www.crossref.org/schema/4.3.7 http://www.crossref.org/schemas/crossref4.3.7.xsd\",\n }},\n\n { head: [\n {doi_batch_id: batch_id},\n {timestamp: batch_timestamp},\n {depositor: [\n {depositor_name: data.journal.publisherName},\n {email_address: data.journal.publisherEmail},\n ]},\n {registrant: data.journal.publisherName},\n ]},\n\n {body: [\n {journal: [\n\n {journal_metadata: [\n {full_title: data.journal.full_title || data.journal.title},\n {abbrev_title: data.journal.abbrev_title || data.journal.title || data.journal.full_title},\n {issn: data.journal.issn},\n {doi_data: [\n {doi: data.journal.doi},\n {resource: data.journal.url},\n ]},\n ]},\n\n {journal_issue: [\n {publication_date: [\n {month: date.getMonth()+1},\n {year: date.getFullYear()},\n ]},\n {journal_volume: [\n {volume: data.volume},\n ]},\n {issue: data.issue},\n ]},\n\n {journal_article: [\n {titles: [\n {title: data.title},\n ]},\n { contributors:\n data.authors.map((author, ind) => (\n {person_name: [\n { _attr: {\n contributor_role: \"author\",\n sequence: (ind == 0)? \"first\" : \"additional\"\n }},\n {given_name: author.firstName},\n {surname: author.lastName},\n {affiliation: author.affiliation}\n // TODO: ORCID?\n ]}\n ))\n },\n {publication_date: [\n {month: date.getMonth()+1},\n {day: date.getDate()},\n {year: date.getFullYear()}\n ]},\n { publisher_item: [\n {item_number: data.doi}\n ]},\n {doi_data: [\n {doi: data.doi},\n //{timestamp: \"\"},\n {resource: data.url},\n ]},\n {citation_list:\n data.citations.map(key =>\n citation_xml(key, data.bibliography[key]))\n }\n\n ]},\n\n ]},\n ]},\n ]};\n\n return xml(crf_data);\n}\n\nfunction citation_xml(key, ent){\n if (ent == undefined) return {};\n var info = [];\n info.push({_attr: {key: key}});\n if (\"title\" in ent)\n info.push({article_title: ent.title});\n if (\"author\" in ent)\n info.push({author: ent.author.split(\" and \")[0].split(\",\")[0].trim()});\n if (\"journal\" in ent)\n info.push({journal_title: ent.journal});\n if (\"booktitle\" in ent)\n info.push({volume_title: ent.booktitle});\n if (\"volume\" in ent)\n info.push({volume: ent.volume});\n if (\"issue\" in ent)\n info.push({issue: ent.issue});\n if (\"doi\" in ent)\n info.push({doi: ent.doi});\n return {citation: info}\n}\n\nfunction xml(obj) {\n //console.log(typeof(obj), obj)\n if (typeof obj === 'string') return obj;\n if (typeof obj === 'number') return \"\"+obj;\n let keys = Object.keys(obj);\n if (keys.length != 1) console.error(\"can't interpret \", obj, \"as xml\");\n let name = keys[0];\n var full_content = obj[name];\n var attr = {};\n if (Array.isArray(full_content)){\n var content = [];\n for (var i in full_content) {\n var obj = full_content[i];\n var obj_name = Object.keys(obj)[0];\n if (\"_attr\" == obj_name) {\n attr = obj[\"_attr\"];\n } else {\n //console.log(Object.keys(obj)[0])\n content.push(obj);\n }\n }\n } else {\n content = full_content;\n }\n if (content == undefined){\n content = \"undefined\"\n }\n\n let attr_string = \"\";\n for (var k in attr) {\n attr_string += ` ${k}=\\\"${attr[k]}\\\"`\n }\n\n //console.log(typeof content, Array.isArray(content), content instanceof String, content)\n if (Array.isArray(content)){\n content = content.map(xml);\n content = content.join(\"\\n\").split(\"\\n\");\n content = content.map(s => \" \" + s).join(\"\\n\")\n var result = `<${name}${attr_string}>\\n${content}\\n`;\n } else {\n content = xml(content);\n var result = `<${name}${attr_string}>${content}`;\n }\n return result;\n}\n","import html from \"./components/html\";\nimport styles from \"./components/styles\";\nimport frontMatter from \"./components/front-matter\";\nimport bibliography from \"./components/bibliography\";\nimport expandData from \"./components/expand-data\";\nimport meta from \"./components/meta\";\nimport banner from \"./components/banner\";\nimport header from \"./components/header\";\nimport byline from \"./components/byline\";\nimport appendix from \"./components/appendix\";\nimport footer from \"./components/footer\";\nimport citation from \"./components/citation\";\nimport footnote from \"./components/footnote\";\nimport markdown from \"./components/markdown\";\nimport code from \"./components/code\";\nimport typeset from \"./components/typeset\";\nimport hoverBox from \"./components/hover-box-include\";\nimport generateCrossref from \"./components/generate-crossref\";\n\nfunction renderImmediately(dom) {\n html(dom);\n styles(dom);\n}\n\nfunction renderOnLoad(dom, data) {\n frontMatter(dom, data);\n bibliography(dom, data);\n expandData(dom, data);\n meta(dom, data);\n header(dom, data);\n byline(dom, data);\n appendix(dom, data);\n footer(dom, data);\n markdown(dom, data);\n code(dom, data);\n citation(dom, data);\n footnote(dom, data);\n typeset(dom, data);\n hoverBox(dom, data);\n}\n\n// If we are in a browser, render automatically...\nif(window && window.document) {\n let data = {};\n renderImmediately(window.document);\n window.document.addEventListener(\"DOMContentLoaded\", (event) => {\n renderOnLoad(window.document, data);\n // Add a banner if we're not on localhost.\n if (window.location.hostname !== \"localhost\" && window.location.origin !== \"file://\") {\n banner(window.document, data);\n }\n generateCrossref(data);\n });\n}\n\n// If we are in node...\nfunction render(dom, data) {\n renderImmediately(dom);\n renderOnLoad(dom, data);\n // Remove script tag so it doesn't run again in the client\n let s = dom.querySelector('script[src=\"http://distill.pub/template.js\"]');\n if (s) { s.parentElement.removeChild(s); };\n}\n\nexport {render as render};\nexport {generateCrossref as generateCrossref};\n"],"names":["let","meta","YAMLException","common","require$$0","Mark","this","Type","require$$1","require$$2","type","arguments","Schema","require$$3","require$$4","require$$5","require","_hasOwnProperty","_toString","require$$6","require$$7","_require","DEFAULT_SAFE_SCHEMA","DEFAULT_FULL_SCHEMA","loadAll","load","safeLoadAll","safeLoad","State","dump","safeDump","require$$8","require$$9","ymlParse","interval","day","timeDay","timeYear","timeSunday","timeMonday","locale","escape","const","html","define","global","Prism","code","render"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":null,"sources":["../components/html.js","../components/styles.js","../node_modules/js-yaml/lib/js-yaml/common.js","../node_modules/js-yaml/lib/js-yaml/exception.js","../node_modules/js-yaml/lib/js-yaml/mark.js","../node_modules/js-yaml/lib/js-yaml/type.js","../node_modules/js-yaml/lib/js-yaml/schema.js","../node_modules/js-yaml/lib/js-yaml/type/str.js","../node_modules/js-yaml/lib/js-yaml/type/seq.js","../node_modules/js-yaml/lib/js-yaml/type/map.js","../node_modules/js-yaml/lib/js-yaml/schema/failsafe.js","../node_modules/js-yaml/lib/js-yaml/type/null.js","../node_modules/js-yaml/lib/js-yaml/type/bool.js","../node_modules/js-yaml/lib/js-yaml/type/int.js","../node_modules/js-yaml/lib/js-yaml/type/float.js","../node_modules/js-yaml/lib/js-yaml/schema/json.js","../node_modules/js-yaml/lib/js-yaml/schema/core.js","../node_modules/js-yaml/lib/js-yaml/type/timestamp.js","../node_modules/js-yaml/lib/js-yaml/type/merge.js","../node_modules/js-yaml/lib/js-yaml/type/binary.js","../node_modules/js-yaml/lib/js-yaml/type/omap.js","../node_modules/js-yaml/lib/js-yaml/type/pairs.js","../node_modules/js-yaml/lib/js-yaml/type/set.js","../node_modules/js-yaml/lib/js-yaml/schema/default_safe.js","../node_modules/js-yaml/lib/js-yaml/type/js/undefined.js","../node_modules/js-yaml/lib/js-yaml/type/js/regexp.js","../node_modules/js-yaml/lib/js-yaml/type/js/function.js","../node_modules/js-yaml/lib/js-yaml/schema/default_full.js","../node_modules/js-yaml/lib/js-yaml/loader.js","../node_modules/js-yaml/lib/js-yaml/dumper.js","../node_modules/js-yaml/lib/js-yaml.js","../node_modules/js-yaml/index.js","../components/front-matter.js","../node_modules/bibtex-parse-js/bibtexParse.js","../components/bibliography.js","../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/utcMinute.js","../node_modules/d3-time/src/utcHour.js","../node_modules/d3-time/src/utcDay.js","../node_modules/d3-time/src/utcWeek.js","../node_modules/d3-time/src/utcMonth.js","../node_modules/d3-time/src/utcYear.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-time-format/src/isoFormat.js","../node_modules/d3-time-format/src/isoParse.js","../components/expand-data.js","../../node_modules/escape-html/index.js","../components/meta.js","../components/banner.js","../node_modules/mustache/mustache.js","../components/byline.js","../components/appendix.js","../components/citation.js","../components/footnote.js","../node_modules/marked/lib/marked.js","../components/markdown.js","../node_modules/prismjs/prism.js","../components/code.js","../components/typeset.js","../components/hover-box-include.js","../components/generate-crossref.js","../components/header.js","../components/footer.js","../index.js"],"sourcesContent":["export default function(dom) {\n if (!dom.querySelector(\"html\").getAttribute(\"lang\")) {\n dom.querySelector(\"html\").setAttribute(\"lang\", \"en\")\n }\n\n let head = dom.querySelector(\"head\");\n\n if (!dom.querySelector(\"meta[charset]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"charset\", \"utf-8\");\n head.appendChild(meta);\n }\n if (!dom.querySelector(\"meta[name=viewport]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"name\", \"viewport\");\n meta.setAttribute(\"content\", \"width=device-width, initial-scale=1\");\n head.appendChild(meta);\n }\n}\n","import base from './styles-base.css';\nimport layout from './styles-layout.css';\nimport article from './styles-article.css';\nimport code from './styles-code.css';\nimport print from './styles-print.css';\n\nexport default function(dom) {\n let s = dom.createElement(\"style\");\n s.textContent = base + layout + article + code + print;\n dom.querySelector(\"head\").appendChild(s);\n}\n","'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n var result = this.name + ': ';\n\n result += this.reason || '(unknown reason)';\n\n if (!compact && this.mark) {\n result += ' ' + this.mark.toString();\n }\n\n return result;\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n\nvar common = require('./common');\n\n\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\n\n\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head, start, tail, end, snippet;\n\n if (!this.buffer) return null;\n\n indent = indent || 4;\n maxLength = maxLength || 75;\n\n head = '';\n start = this.position;\n\n while (start > 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n\n tail = '';\n end = this.position;\n\n while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n\n snippet = this.buffer.slice(start, end);\n\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' +\n common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\n\nMark.prototype.toString = function toString(compact) {\n var snippet, where = '';\n\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n if (!compact) {\n snippet = this.getSnippet();\n\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n\n return where;\n};\n\n\nmodule.exports = Mark;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name, result) {\n var exclude = [];\n\n schema.include.forEach(function (includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n\n schema[name].forEach(function (currentType) {\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n exclude.push(previousIndex);\n }\n });\n\n result.push(currentType);\n });\n\n return result.filter(function (type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {}\n }, index, length;\n\n function collectType(type) {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n\n this.implicit.forEach(function (type) {\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n });\n\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\n\nSchema.DEFAULT = null;\n\n\nSchema.create = function createSchema() {\n var schemas, types;\n\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n\n if (!schemas.every(function (schema) { return schema instanceof Schema; })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n\n if (!types.every(function (type) { return type instanceof Type; })) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n return new Schema({\n include: schemas,\n explicit: types\n });\n};\n\n\nmodule.exports = Schema;\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 8\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 10 (except 0) or base 60\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch === ':') break;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n if (!hasDigits) return false;\n\n // if !base60 - done;\n if (ch !== ':') return true;\n\n // base60 almost not used, no needs to optimize\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch, base, digits = [];\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value, 16);\n return sign * parseInt(value, 8);\n }\n\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseInt(v, 10));\n });\n\n value = 0;\n base = 1;\n\n digits.forEach(function (d) {\n value += (d * base);\n base *= 60;\n });\n\n return sign * value;\n\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (object) { return '0b' + object.toString(2); },\n octal: function (object) { return '0' + object.toString(8); },\n decimal: function (object) { return object.toString(10); },\n hexadecimal: function (object) { return '0x' + object.toString(16).toUpperCase(); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n '^(?:[-+]?(?:[0-9][0-9_]*)\\\\.[0-9_]*(?:[eE][-+][0-9]+)?' +\n '|\\\\.[0-9_]+(?:[eE][-+][0-9]+)?' +\n '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' +\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data)) return false;\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign, base, digits;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n\n } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n\n value = 0.0;\n base = 1;\n\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n\n return sign * value;\n\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./failsafe')\n ],\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./json')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\nvar NodeBuffer;\n\ntry {\n // A trick for browserified version, to not include `Buffer` shim\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n // Wrap into Buffer for NodeJS and leave Array for browser\n if (NodeBuffer) return new NodeBuffer(result);\n\n return result;\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./core')\n ],\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n return true;\n}\n\nfunction constructJavascriptUndefined() {\n /*eslint-disable no-undefined*/\n return undefined;\n}\n\nfunction representJavascriptUndefined() {\n return '';\n}\n\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n if (data === null) return false;\n if (data.length === 0) return false;\n\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // if regexp starts with '/' it can have modifiers and must be properly closed\n // `/foo/gim` - modifiers tail can be maximum 3 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n\n if (modifiers.length > 3) return false;\n // if expression starts with /, is should be properly terminated\n if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n }\n\n return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // `/foo/gim` - tail can be maximum 4 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n\n return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object /*, style*/) {\n var result = '/' + object.source + '/';\n\n if (object.global) result += 'g';\n if (object.multiline) result += 'm';\n if (object.ignoreCase) result += 'i';\n\n return result;\n}\n\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n","'use strict';\n\nvar esprima;\n\n// Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n// If not found - try to fallback to window.esprima. If not\n// found too - then fail to parse.\n//\ntry {\n // workaround to exclude package from browserify list.\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n /*global window */\n if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n if (data === null) return false;\n\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true });\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction constructJavascriptFunction(data) {\n /*jslint evil:true*/\n\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true }),\n params = [],\n body;\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n throw new Error('Failed to resolve function');\n }\n\n ast.body[0].expression.params.forEach(function (param) {\n params.push(param.name);\n });\n\n body = ast.body[0].expression.body.range;\n\n // Esprima's ranges include the first '{' and the last '}' characters on\n // function expressions. So cut them out.\n /*eslint-disable no-new-func*/\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n}\n\nfunction representJavascriptFunction(object /*, style*/) {\n return object.toString();\n}\n\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n","// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [\n require('./default_safe')\n ],\n explicit: [\n require('../type/js/undefined'),\n require('../type/js/regexp'),\n require('../type/js/function')\n ]\n});\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00);\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n return new YAMLException(\n message,\n new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length;\n _position < _length;\n _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode) {\n var index, quantity;\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n throwError(state, 'duplicated mapping key');\n }\n _result[keyNode] = valueNode;\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else {\n break; // Reading is done. Go to the epilogue.\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if (state.lineIndent > nodeIndent && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!state.anchorMap.hasOwnProperty(alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag !== null && state.tag !== '!') {\n if (state.tag === '?') {\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length;\n typeIndex < typeQuantity;\n typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only assigned to plain scalars. So, it isn't\n // needed to check for 'kind' conformity.\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = {};\n state.anchorMap = {};\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n var documents = loadDocuments(input, options), index, length;\n\n for (index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nfunction safeLoadAll(input, output, options) {\n loadAll(input, output, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nfunction safeLoad(input, options) {\n return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// Simplified test for values allowed after the first character in plain style.\nfunction isPlainSafe(c) {\n // Uses a subset of nb-char - c-flow-indicator - \":\" - \"#\"\n // where nb-char ::= c-printable - b-char - c-byte-order-mark.\n return isPrintable(c) && c !== 0xFEFF\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // - \":\" - \"#\"\n && c !== CHAR_COLON\n && c !== CHAR_SHARP;\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n return isPrintable(c) && c !== 0xFEFF\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {\n var i;\n var char;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(string.charCodeAt(0))\n && !isWhitespace(string.charCodeAt(string.length - 1));\n\n if (singleLineOnly) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n return plain && !testAmbiguousType(string)\n ? STYLE_PLAIN : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (string[0] === ' ' && indentPerLevel > 9) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey) {\n state.dump = (function () {\n if (string.length === 0) {\n return \"''\";\n }\n if (!state.noCompatMode &&\n DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n return \"'\" + string + \"'\";\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = (string[0] === ' ') ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char;\n var escapeSeq;\n\n for (var i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n result += !escapeSeq && isPrintable(char)\n ? string[i]\n : escapeSeq || encodeHex(char);\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level, object[index], false, false)) {\n if (index !== 0) _result += ', ';\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || index !== 0) {\n _result += generateNextLine(state, level);\n }\n _result += '- ' + state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (index !== 0) pairBuffer += ', ';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + ': ';\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || index !== 0) {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n state.tag = explicit ? type.tag : '?';\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n writeBlockSequence(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey);\n }\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n state.dump = '!<' + state.tag + '> ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n if (writeNode(state, 0, input, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nfunction safeDump(input, options) {\n return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n","'use strict';\n\n\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\n\n\nfunction deprecated(name) {\n return function () {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\n\n\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\n\n// Deprecated schema names from JS-YAML 2.0.x\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\n\n// Deprecated functions from JS-YAML 1.x.x\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","'use strict';\n\n\nvar yaml = require('./lib/js-yaml.js');\n\n\nmodule.exports = yaml;\n","import ymlParse from \"js-yaml\";\n\nexport default function(dom, data) {\n let localData = {};\n let el = dom.querySelector('script[type=\"text/front-matter\"]');\n if (el) {\n let text = el.textContent;\n localData = ymlParse.safeLoad(text);\n }\n\n data.title = localData.title ? localData.title : \"Untitled\";\n data.description = localData.description ? localData.description : \"No description.\";\n\n data.authors = localData.authors ? localData.authors : [];\n\n data.authors = data.authors.map((author, i) =>{\n let a = {};\n let name = Object.keys(author)[0];\n if ((typeof author) === \"string\") {\n name = author;\n } else {\n a.personalURL = author[name];\n }\n let names = name.split(\" \");\n a.name = name;\n a.firstName = names.slice(0, names.length - 1).join(\" \");\n a.lastName = names[names.length -1];\n if(localData.affiliations[i]) {\n let affiliation = Object.keys(localData.affiliations[i])[0];\n if ((typeof localData.affiliations[i]) === \"string\") {\n affiliation = localData.affiliations[i]\n } else {\n a.affiliationURL = localData.affiliations[i][affiliation];\n }\n a.affiliation = affiliation;\n }\n return a;\n });\n \n\n}\n","/* start bibtexParse 0.0.22 */\n\n//Original work by Henrik Muehe (c) 2010\n//\n//CommonJS port by Mikola Lysenko 2013\n//\n//Port to Browser lib by ORCID / RCPETERS\n//\n//Issues:\n//no comment handling within strings\n//no string concatenation\n//no variable values yet\n//Grammar implemented here:\n//bibtex -> (string | preamble | comment | entry)*;\n//string -> '@STRING' '{' key_equals_value '}';\n//preamble -> '@PREAMBLE' '{' value '}';\n//comment -> '@COMMENT' '{' value '}';\n//entry -> '@' key '{' key ',' key_value_list '}';\n//key_value_list -> key_equals_value (',' key_equals_value)*;\n//key_equals_value -> key '=' value;\n//value -> value_quotes | value_braces | key;\n//value_quotes -> '\"' .*? '\"'; // not quite\n//value_braces -> '{' .*? '\"'; // not quite\n(function(exports) {\n\n function BibtexParser() {\n \n this.months = [\"jan\", \"feb\", \"mar\", \"apr\", \"may\", \"jun\", \"jul\", \"aug\", \"sep\", \"oct\", \"nov\", \"dec\"];\n this.notKey = [',','{','}',' ','='];\n this.pos = 0;\n this.input = \"\";\n this.entries = new Array();\n\n this.currentEntry = \"\";\n\n this.setInput = function(t) {\n this.input = t;\n };\n\n this.getEntries = function() {\n return this.entries;\n };\n\n this.isWhitespace = function(s) {\n return (s == ' ' || s == '\\r' || s == '\\t' || s == '\\n');\n };\n\n this.match = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n this.pos += s.length;\n } else {\n throw \"Token mismatch, expected \" + s + \", found \"\n + this.input.substring(this.pos);\n };\n this.skipWhitespace(canCommentOut);\n };\n\n this.tryMatch = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n return true;\n } else {\n return false;\n };\n this.skipWhitespace(canCommentOut);\n };\n\n /* when search for a match all text can be ignored, not just white space */\n this.matchAt = function() {\n while (this.input.length > this.pos && this.input[this.pos] != '@') {\n this.pos++;\n };\n\n if (this.input[this.pos] == '@') {\n return true;\n };\n return false;\n };\n\n this.skipWhitespace = function(canCommentOut) {\n while (this.isWhitespace(this.input[this.pos])) {\n this.pos++;\n };\n if (this.input[this.pos] == \"%\" && canCommentOut == true) {\n while (this.input[this.pos] != \"\\n\") {\n this.pos++;\n };\n this.skipWhitespace(canCommentOut);\n };\n };\n\n this.value_braces = function() {\n var bracecount = 0;\n this.match(\"{\", false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '}') {\n if (bracecount > 0) {\n bracecount--;\n } else {\n var end = this.pos;\n this.match(\"}\", false);\n return this.input.substring(start, end);\n };\n } else if (this.input[this.pos] == '{') {\n bracecount++;\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value\";\n };\n };\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.value_comment = function() {\n var str = '';\n var brcktCnt = 0;\n while (!(this.tryMatch(\"}\", false) && brcktCnt == 0)) {\n str = str + this.input[this.pos];\n if (this.input[this.pos] == '{')\n brcktCnt++;\n if (this.input[this.pos] == '}')\n brcktCnt--;\n if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n this.pos++;\n };\n return str;\n };\n\n this.value_quotes = function() {\n this.match('\"', false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '\"') {\n var end = this.pos;\n this.match('\"', false);\n return this.input.substring(start, end);\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n }\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.single_value = function() {\n var start = this.pos;\n if (this.tryMatch(\"{\")) {\n return this.value_braces();\n } else if (this.tryMatch('\"')) {\n return this.value_quotes();\n } else {\n var k = this.key();\n if (k.match(\"^[0-9]+$\"))\n return k;\n else if (this.months.indexOf(k.toLowerCase()) >= 0)\n return k.toLowerCase();\n else\n throw \"Value expected:\" + this.input.substring(start) + ' for key: ' + k;\n \n };\n };\n\n this.value = function() {\n var values = [];\n values.push(this.single_value());\n while (this.tryMatch(\"#\")) {\n this.match(\"#\");\n values.push(this.single_value());\n };\n return values.join(\"\");\n };\n\n this.key = function() {\n var start = this.pos;\n while (true) {\n if (this.pos >= this.input.length) {\n throw \"Runaway key\";\n };\n // а-яА-Я is Cyrillic\n //console.log(this.input[this.pos]);\n if (this.notKey.indexOf(this.input[this.pos]) >= 0) {\n return this.input.substring(start, this.pos);\n } else {\n this.pos++;\n \n };\n };\n };\n\n this.key_equals_value = function() {\n var key = this.key();\n if (this.tryMatch(\"=\")) {\n this.match(\"=\");\n var val = this.value();\n return [ key, val ];\n } else {\n throw \"... = value expected, equals sign missing:\"\n + this.input.substring(this.pos);\n };\n };\n\n this.key_value_list = function() {\n var kv = this.key_equals_value();\n this.currentEntry['entryTags'] = {};\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n while (this.tryMatch(\",\")) {\n this.match(\",\");\n // fixes problems with commas at the end of a list\n if (this.tryMatch(\"}\")) {\n break;\n }\n ;\n kv = this.key_equals_value();\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n };\n };\n\n this.entry_body = function(d) {\n this.currentEntry = {};\n this.currentEntry['citationKey'] = this.key();\n this.currentEntry['entryType'] = d.substring(1);\n this.match(\",\");\n this.key_value_list();\n this.entries.push(this.currentEntry);\n };\n\n this.directive = function() {\n this.match(\"@\");\n return \"@\" + this.key();\n };\n\n this.preamble = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'PREAMBLE';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.comment = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'COMMENT';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.entry = function(d) {\n this.entry_body(d);\n };\n\n this.bibtex = function() {\n while (this.matchAt()) {\n var d = this.directive();\n this.match(\"{\");\n if (d == \"@STRING\") {\n this.string();\n } else if (d == \"@PREAMBLE\") {\n this.preamble();\n } else if (d == \"@COMMENT\") {\n this.comment();\n } else {\n this.entry(d);\n }\n this.match(\"}\");\n };\n };\n };\n \n exports.toJSON = function(bibtex) {\n var b = new BibtexParser();\n b.setInput(bibtex);\n b.bibtex();\n return b.entries;\n };\n\n /* added during hackathon don't hate on me */\n exports.toBibtex = function(json) {\n var out = '';\n for ( var i in json) {\n out += \"@\" + json[i].entryType;\n out += '{';\n if (json[i].citationKey)\n out += json[i].citationKey + ', ';\n if (json[i].entry)\n out += json[i].entry ;\n if (json[i].entryTags) {\n var tags = '';\n for (var jdx in json[i].entryTags) {\n if (tags.length != 0)\n tags += ', ';\n tags += jdx + '= {' + json[i].entryTags[jdx] + '}';\n }\n out += tags;\n }\n out += '}\\n\\n';\n }\n return out;\n \n };\n\n})(typeof exports === 'undefined' ? this['bibtexParse'] = {} : exports);\n\n/* end bibtexParse */\n","import bibtexParse from \"bibtex-parse-js\";\n\nexport default function(dom, data) {\n let el = dom.querySelector('script[type=\"text/bibliography\"]');\n let citations = [];\n let bibliography = {};\n //TODO If we don't have a local element, make a request for the document.\n if (el) {\n let rawBib = el.textContent;\n let parsed = bibtexParse.toJSON(rawBib);\n if(parsed) {\n parsed.forEach(e => {\n for (var k in e.entryTags){\n var val = e.entryTags[k];\n val = val.replace(/[\\t\\n ]+/g, \" \");\n val = val.replace(/{\\\\[\"^`\\.'acu~Hvs]( )?([a-zA-Z])}/g,\n (full, x, char) => char);\n val = val.replace(/{\\\\([a-zA-Z])}/g,\n (full, char) => char);\n e.entryTags[k] = val;\n }\n bibliography[e.citationKey] = e.entryTags;\n bibliography[e.citationKey].type = e.entryType;\n });\n }\n\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach(el => {\n let key = el.getAttribute(\"key\");\n if (key) {\n let citationKeys = key.split(\",\");\n citationKeys.forEach(key => {\n if (citations.indexOf(key) == -1){\n citations.push(key);\n if (!(key in bibliography)){\n console.warn(\"No bibliography entry found for: \" + key);\n }\n }\n });\n }\n });\n }\n data.bibliography = bibliography;\n data.citations = citations;\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(new Date(+start)); while (offseti(start, step), floori(start), start < stop)\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) while (--step >= 0) while (offseti(date, 1), !test(date)) {} // eslint-disable-line no-empty\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(Math.floor(date / durationSecond) * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(Math.floor(date / durationMinute) * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute} from \"./duration\";\n\nvar hour = interval(function(date) {\n var offset = date.getTimezoneOffset() * durationMinute % durationHour;\n if (offset < 0) offset += durationHour;\n date.setTime(Math.floor((+date - offset) / durationHour) * durationHour + offset);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval\";\nimport {durationWeek} from \"./duration\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {timeDay, timeSunday, timeMonday, timeYear, utcDay, utcSunday, utcMonday, utcYear} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"S\": formatSeconds,\n \"U\": formatWeekNumberSunday,\n \"w\": formatWeekdayNumber,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"S\": formatUTCSeconds,\n \"U\": formatUTCWeekNumberSunday,\n \"w\": formatUTCWeekdayNumber,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"S\": parseSeconds,\n \"U\": parseWeekNumberSunday,\n \"w\": parseWeekdayNumber,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0);\n if (i != string.length) return null;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n var day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?:\\:?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekdayNumber(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekdayNumber(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {timeFormat} from \"d3-time-format\";\n\nexport default function(dom, data) {\n\n data.authors = data.authors || [];\n\n // paths\n data.url = \"http://distill.pub/\" + data.distillPath;\n data.githubUrl = \"https://github.com/\" + data.githubPath;\n\n // Homepage\n //data.homepage = !post.noHomepage;\n data.journal = data.journal || {};\n\n // Dates\n if (data.publishedDate){//} && data.journal) {\n data.volume = data.publishedDate.getFullYear() - 2015;\n data.issue = data.publishedDate.getMonth() + 1;\n }\n\n data.publishedDate = data.publishedDate ? data.publishedDate : new Date(\"Invalid\");\n data.updatedDate = data.updatedDate ? data.updatedDate : new Date(\"Invalid\");\n\n data.publishedDateRFC\n let RFC = timeFormat(\"%a, %d %b %Y %H:%M:%S %Z\");\n let months = [\"Jan\", \"Feb\", \"March\", \"April\", \"May\", \"June\", \"July\", \"Aug\", \"Sept\", \"Oct\", \"Nov\", \"Dec\"];\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n data.publishedDateRFC = RFC(data.publishedDate);\n data.publishedYear = data.publishedDate.getFullYear();\n data.publishedMonth = months[data.publishedDate.getMonth()];\n data.publishedDay = data.publishedDate.getDate();\n data.publishedMonthPadded = zeroPad(data.publishedDate.getMonth() + 1);\n data.publishedDayPadded = zeroPad(data.publishedDate.getDate());\n data.updatedDateRFC = RFC(data.updatedDate);\n\n if (data.authors.length > 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \", et al.\";\n } else if (data.authors.length === 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \" & \" + data.authors[1].lastName;\n } else if (data.authors.length === 1) {\n data.concatenatedAuthors = data.authors[0].lastName\n }\n\n data.bibtexAuthors = data.authors.map(function(author){\n return author.lastName + \", \" + author.firstName;\n }).join(\" and \");\n\n data.slug = data.authors.length ? data.authors[0].lastName.toLowerCase() + data.publishedYear + data.title.split(\" \")[0].toLowerCase() : \"Untitled\";\n\n}\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","import favicon from './distill-favicon.base64';\nimport escape from 'escape-html';\n\nexport default function(dom, data) {\n let head = dom.querySelector(\"head\");\n let appendHead = html => appendHtml(head, html);\n\n function meta(name, content, force) {\n if (content || force)\n appendHead(` \\n`);\n }\n\n appendHead(`\n \n \n \n \n ${data.title}\n `);\n\n appendHead(`\n \n \n \n `);\n data.authors.forEach((a) => {\n appendHtml(head, `\n `)\n });\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n // if this is a proprer article, generate Google Scholar meta data\n if (data.doiSuffix){\n appendHead(`\n \\n`);\n\n meta(\"citation_title\", data.title);\n //meta(\"citation_fulltext_html_url\", data.url);\n meta(\"citation_volume\", data.volume);\n meta(\"citation_issue\", data.issue);\n meta(\"citation_firstpage\", data.doiSuffix? `e${data.doiSuffix}` : undefined);\n meta(\"citation_doi\", data.doi);\n\n let journal = data.journal || {};\n meta(\"citation_journal_title\", journal.full_title || journal.title);\n meta(\"citation_journal_abbrev\", journal.abbrev_title);\n meta(\"citation_issn\", journal.issn);\n meta(\"citation_publisher\", journal.publisher);\n meta(\"citation_fulltext_world_readable\", \"\", true);\n\n if (data.publishedDate){\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n meta(\"citation_online_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n // Should we do something different here?\n meta(\"citation_publication_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n }\n\n (data.authors || []).forEach((a) => {\n meta(\"citation_author\", `${a.lastName}, ${a.firstName}`);\n meta(\"citation_author_institution\", a.affiliation);\n });\n\n if (data.citations) {\n data.citations.forEach(key => {\n let d = data.bibliography[key];\n if(!d) {\n console.warn(\"No bibliography data fround for \" + key)\n } else {\n meta(\"citation_reference\", citation_meta_content(data.bibliography[key]) )\n };\n });\n }\n }\n}\n\nfunction appendHtml(el, html) {\n el.innerHTML += html;\n}\n\nfunction citation_meta_content(ref){\n // Special test for arxiv\n var content = `citation_title=${ref.title};`;\n \n let name_strings = ref.author.split(\" and \").forEach(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1].trim();\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n content += `citation_author=${firsts} ${last};`;\n });\n \n if (\"year\" in ref) {\n content += `citation_publication_date=${ref.year};`;\n }\n \n var arxiv_id_search = /https?:\\/\\/arxiv\\.org\\/pdf\\/([0-9]*\\.[0-9]*)\\.pdf/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /https?:\\/\\/arxiv\\.org\\/abs\\/([0-9]*\\.[0-9]*)/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /arXiv preprint arXiv:([0-9]*\\.[0-9]*)/.exec(ref.journal);\n if (arxiv_id_search && arxiv_id_search[1]){\n content += `citation_arxiv_id=${arxiv_id_search[1]};`;\n return content;\n }\n if (\"journal\" in ref){\n content += `citation_journal_title=${ref.journal};`;\n }\n if (\"volume\" in ref) {\n content += `citation_volume=${ref.volume};`;\n }\n if (\"issue\" in ref || \"number\" in ref){\n content += `citation_number=${ref.issue || ref.number};`;\n }\n /*content += `citation_first_page=${};`;\n content += `citation_publication_date=${};`;*/\n return content;\n}\n","const html = `\n\n
    This article is a draft, awaiting review for publication in Distill
    \n`;\n\nexport default function(dom, data) {\n let banner = dom.createElement(\"dt-banner\");\n banner.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(banner, b.firstChild);\n banner.addEventListener(\"click\", function() {\n banner.style.display = \"none\";\n });\n}\n","/*!\n * mustache.js - Logic-less {{mustache}} templates with JavaScript\n * http://github.com/janl/mustache.js\n */\n\n/*global define: false Mustache: true*/\n\n(function defineMustache (global, factory) {\n if (typeof exports === 'object' && exports && typeof exports.nodeName !== 'string') {\n factory(exports); // CommonJS\n } else if (typeof define === 'function' && define.amd) {\n define(['exports'], factory); // AMD\n } else {\n global.Mustache = {};\n factory(global.Mustache); // script, wsh, asp\n }\n}(this, function mustacheFactory (mustache) {\n\n var objectToString = Object.prototype.toString;\n var isArray = Array.isArray || function isArrayPolyfill (object) {\n return objectToString.call(object) === '[object Array]';\n };\n\n function isFunction (object) {\n return typeof object === 'function';\n }\n\n /**\n * More correct typeof string handling array\n * which normally returns typeof 'object'\n */\n function typeStr (obj) {\n return isArray(obj) ? 'array' : typeof obj;\n }\n\n function escapeRegExp (string) {\n return string.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n }\n\n /**\n * Null safe way of checking whether or not an object,\n * including its prototype, has a given property\n */\n function hasProperty (obj, propName) {\n return obj != null && typeof obj === 'object' && (propName in obj);\n }\n\n // Workaround for https://issues.apache.org/jira/browse/COUCHDB-577\n // See https://github.com/janl/mustache.js/issues/189\n var regExpTest = RegExp.prototype.test;\n function testRegExp (re, string) {\n return regExpTest.call(re, string);\n }\n\n var nonSpaceRe = /\\S/;\n function isWhitespace (string) {\n return !testRegExp(nonSpaceRe, string);\n }\n\n var entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n function escapeHtml (string) {\n return String(string).replace(/[&<>\"'`=\\/]/g, function fromEntityMap (s) {\n return entityMap[s];\n });\n }\n\n var whiteRe = /\\s*/;\n var spaceRe = /\\s+/;\n var equalsRe = /\\s*=/;\n var curlyRe = /\\s*\\}/;\n var tagRe = /#|\\^|\\/|>|\\{|&|=|!/;\n\n /**\n * Breaks up the given `template` string into a tree of tokens. If the `tags`\n * argument is given here it must be an array with two string values: the\n * opening and closing tags used in the template (e.g. [ \"<%\", \"%>\" ]). Of\n * course, the default is to use mustaches (i.e. mustache.tags).\n *\n * A token is an array with at least 4 elements. The first element is the\n * mustache symbol that was used inside the tag, e.g. \"#\" or \"&\". If the tag\n * did not contain a symbol (i.e. {{myValue}}) this element is \"name\". For\n * all text that appears outside a symbol this element is \"text\".\n *\n * The second element of a token is its \"value\". For mustache tags this is\n * whatever else was inside the tag besides the opening symbol. For text tokens\n * this is the text itself.\n *\n * The third and fourth elements of the token are the start and end indices,\n * respectively, of the token in the original template.\n *\n * Tokens that are the root node of a subtree contain two more elements: 1) an\n * array of tokens in the subtree and 2) the index in the original template at\n * which the closing tag for that section begins.\n */\n function parseTemplate (template, tags) {\n if (!template)\n return [];\n\n var sections = []; // Stack to hold section tokens\n var tokens = []; // Buffer to hold the tokens\n var spaces = []; // Indices of whitespace tokens on the current line\n var hasTag = false; // Is there a {{tag}} on the current line?\n var nonSpace = false; // Is there a non-space char on the current line?\n\n // Strips all whitespace tokens array for the current line\n // if there was a {{#tag}} on it and otherwise only space.\n function stripSpace () {\n if (hasTag && !nonSpace) {\n while (spaces.length)\n delete tokens[spaces.pop()];\n } else {\n spaces = [];\n }\n\n hasTag = false;\n nonSpace = false;\n }\n\n var openingTagRe, closingTagRe, closingCurlyRe;\n function compileTags (tagsToCompile) {\n if (typeof tagsToCompile === 'string')\n tagsToCompile = tagsToCompile.split(spaceRe, 2);\n\n if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)\n throw new Error('Invalid tags: ' + tagsToCompile);\n\n openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\\\s*');\n closingTagRe = new RegExp('\\\\s*' + escapeRegExp(tagsToCompile[1]));\n closingCurlyRe = new RegExp('\\\\s*' + escapeRegExp('}' + tagsToCompile[1]));\n }\n\n compileTags(tags || mustache.tags);\n\n var scanner = new Scanner(template);\n\n var start, type, value, chr, token, openSection;\n while (!scanner.eos()) {\n start = scanner.pos;\n\n // Match any text between tags.\n value = scanner.scanUntil(openingTagRe);\n\n if (value) {\n for (var i = 0, valueLength = value.length; i < valueLength; ++i) {\n chr = value.charAt(i);\n\n if (isWhitespace(chr)) {\n spaces.push(tokens.length);\n } else {\n nonSpace = true;\n }\n\n tokens.push([ 'text', chr, start, start + 1 ]);\n start += 1;\n\n // Check for whitespace on the current line.\n if (chr === '\\n')\n stripSpace();\n }\n }\n\n // Match the opening tag.\n if (!scanner.scan(openingTagRe))\n break;\n\n hasTag = true;\n\n // Get the tag type.\n type = scanner.scan(tagRe) || 'name';\n scanner.scan(whiteRe);\n\n // Get the tag value.\n if (type === '=') {\n value = scanner.scanUntil(equalsRe);\n scanner.scan(equalsRe);\n scanner.scanUntil(closingTagRe);\n } else if (type === '{') {\n value = scanner.scanUntil(closingCurlyRe);\n scanner.scan(curlyRe);\n scanner.scanUntil(closingTagRe);\n type = '&';\n } else {\n value = scanner.scanUntil(closingTagRe);\n }\n\n // Match the closing tag.\n if (!scanner.scan(closingTagRe))\n throw new Error('Unclosed tag at ' + scanner.pos);\n\n token = [ type, value, start, scanner.pos ];\n tokens.push(token);\n\n if (type === '#' || type === '^') {\n sections.push(token);\n } else if (type === '/') {\n // Check section nesting.\n openSection = sections.pop();\n\n if (!openSection)\n throw new Error('Unopened section \"' + value + '\" at ' + start);\n\n if (openSection[1] !== value)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + start);\n } else if (type === 'name' || type === '{' || type === '&') {\n nonSpace = true;\n } else if (type === '=') {\n // Set the tags for the next time around.\n compileTags(value);\n }\n }\n\n // Make sure there are no open sections when we're done.\n openSection = sections.pop();\n\n if (openSection)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + scanner.pos);\n\n return nestTokens(squashTokens(tokens));\n }\n\n /**\n * Combines the values of consecutive text tokens in the given `tokens` array\n * to a single token.\n */\n function squashTokens (tokens) {\n var squashedTokens = [];\n\n var token, lastToken;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n if (token) {\n if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {\n lastToken[1] += token[1];\n lastToken[3] = token[3];\n } else {\n squashedTokens.push(token);\n lastToken = token;\n }\n }\n }\n\n return squashedTokens;\n }\n\n /**\n * Forms the given array of `tokens` into a nested tree structure where\n * tokens that represent a section have two additional items: 1) an array of\n * all tokens that appear in that section and 2) the index in the original\n * template that represents the end of that section.\n */\n function nestTokens (tokens) {\n var nestedTokens = [];\n var collector = nestedTokens;\n var sections = [];\n\n var token, section;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n switch (token[0]) {\n case '#':\n case '^':\n collector.push(token);\n sections.push(token);\n collector = token[4] = [];\n break;\n case '/':\n section = sections.pop();\n section[5] = token[2];\n collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;\n break;\n default:\n collector.push(token);\n }\n }\n\n return nestedTokens;\n }\n\n /**\n * A simple string scanner that is used by the template parser to find\n * tokens in template strings.\n */\n function Scanner (string) {\n this.string = string;\n this.tail = string;\n this.pos = 0;\n }\n\n /**\n * Returns `true` if the tail is empty (end of string).\n */\n Scanner.prototype.eos = function eos () {\n return this.tail === '';\n };\n\n /**\n * Tries to match the given regular expression at the current position.\n * Returns the matched text if it can match, the empty string otherwise.\n */\n Scanner.prototype.scan = function scan (re) {\n var match = this.tail.match(re);\n\n if (!match || match.index !== 0)\n return '';\n\n var string = match[0];\n\n this.tail = this.tail.substring(string.length);\n this.pos += string.length;\n\n return string;\n };\n\n /**\n * Skips all text until the given regular expression can be matched. Returns\n * the skipped string, which is the entire tail if no match can be made.\n */\n Scanner.prototype.scanUntil = function scanUntil (re) {\n var index = this.tail.search(re), match;\n\n switch (index) {\n case -1:\n match = this.tail;\n this.tail = '';\n break;\n case 0:\n match = '';\n break;\n default:\n match = this.tail.substring(0, index);\n this.tail = this.tail.substring(index);\n }\n\n this.pos += match.length;\n\n return match;\n };\n\n /**\n * Represents a rendering context by wrapping a view object and\n * maintaining a reference to the parent context.\n */\n function Context (view, parentContext) {\n this.view = view;\n this.cache = { '.': this.view };\n this.parent = parentContext;\n }\n\n /**\n * Creates a new context using the given view with this context\n * as the parent.\n */\n Context.prototype.push = function push (view) {\n return new Context(view, this);\n };\n\n /**\n * Returns the value of the given name in this context, traversing\n * up the context hierarchy if the value is absent in this context's view.\n */\n Context.prototype.lookup = function lookup (name) {\n var cache = this.cache;\n\n var value;\n if (cache.hasOwnProperty(name)) {\n value = cache[name];\n } else {\n var context = this, names, index, lookupHit = false;\n\n while (context) {\n if (name.indexOf('.') > 0) {\n value = context.view;\n names = name.split('.');\n index = 0;\n\n /**\n * Using the dot notion path in `name`, we descend through the\n * nested objects.\n *\n * To be certain that the lookup has been successful, we have to\n * check if the last object in the path actually has the property\n * we are looking for. We store the result in `lookupHit`.\n *\n * This is specially necessary for when the value has been set to\n * `undefined` and we want to avoid looking up parent contexts.\n **/\n while (value != null && index < names.length) {\n if (index === names.length - 1)\n lookupHit = hasProperty(value, names[index]);\n\n value = value[names[index++]];\n }\n } else {\n value = context.view[name];\n lookupHit = hasProperty(context.view, name);\n }\n\n if (lookupHit)\n break;\n\n context = context.parent;\n }\n\n cache[name] = value;\n }\n\n if (isFunction(value))\n value = value.call(this.view);\n\n return value;\n };\n\n /**\n * A Writer knows how to take a stream of tokens and render them to a\n * string, given a context. It also maintains a cache of templates to\n * avoid the need to parse the same template twice.\n */\n function Writer () {\n this.cache = {};\n }\n\n /**\n * Clears all cached templates in this writer.\n */\n Writer.prototype.clearCache = function clearCache () {\n this.cache = {};\n };\n\n /**\n * Parses and caches the given `template` and returns the array of tokens\n * that is generated from the parse.\n */\n Writer.prototype.parse = function parse (template, tags) {\n var cache = this.cache;\n var tokens = cache[template];\n\n if (tokens == null)\n tokens = cache[template] = parseTemplate(template, tags);\n\n return tokens;\n };\n\n /**\n * High-level method that is used to render the given `template` with\n * the given `view`.\n *\n * The optional `partials` argument may be an object that contains the\n * names and templates of partials that are used in the template. It may\n * also be a function that is used to load partial templates on the fly\n * that takes a single argument: the name of the partial.\n */\n Writer.prototype.render = function render (template, view, partials) {\n var tokens = this.parse(template);\n var context = (view instanceof Context) ? view : new Context(view);\n return this.renderTokens(tokens, context, partials, template);\n };\n\n /**\n * Low-level method that renders the given array of `tokens` using\n * the given `context` and `partials`.\n *\n * Note: The `originalTemplate` is only ever used to extract the portion\n * of the original template that was contained in a higher-order section.\n * If the template doesn't use higher-order sections, this argument may\n * be omitted.\n */\n Writer.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate) {\n var buffer = '';\n\n var token, symbol, value;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n value = undefined;\n token = tokens[i];\n symbol = token[0];\n\n if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate);\n else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate);\n else if (symbol === '>') value = this.renderPartial(token, context, partials, originalTemplate);\n else if (symbol === '&') value = this.unescapedValue(token, context);\n else if (symbol === 'name') value = this.escapedValue(token, context);\n else if (symbol === 'text') value = this.rawValue(token);\n\n if (value !== undefined)\n buffer += value;\n }\n\n return buffer;\n };\n\n Writer.prototype.renderSection = function renderSection (token, context, partials, originalTemplate) {\n var self = this;\n var buffer = '';\n var value = context.lookup(token[1]);\n\n // This function is used to render an arbitrary template\n // in the current context by higher-order sections.\n function subRender (template) {\n return self.render(template, context, partials);\n }\n\n if (!value) return;\n\n if (isArray(value)) {\n for (var j = 0, valueLength = value.length; j < valueLength; ++j) {\n buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate);\n }\n } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {\n buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate);\n } else if (isFunction(value)) {\n if (typeof originalTemplate !== 'string')\n throw new Error('Cannot use higher-order sections without the original template');\n\n // Extract the portion of the original template that the section contains.\n value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);\n\n if (value != null)\n buffer += value;\n } else {\n buffer += this.renderTokens(token[4], context, partials, originalTemplate);\n }\n return buffer;\n };\n\n Writer.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate) {\n var value = context.lookup(token[1]);\n\n // Use JavaScript's definition of falsy. Include empty arrays.\n // See https://github.com/janl/mustache.js/issues/186\n if (!value || (isArray(value) && value.length === 0))\n return this.renderTokens(token[4], context, partials, originalTemplate);\n };\n\n Writer.prototype.renderPartial = function renderPartial (token, context, partials) {\n if (!partials) return;\n\n var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\n if (value != null)\n return this.renderTokens(this.parse(value), context, partials, value);\n };\n\n Writer.prototype.unescapedValue = function unescapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return value;\n };\n\n Writer.prototype.escapedValue = function escapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return mustache.escape(value);\n };\n\n Writer.prototype.rawValue = function rawValue (token) {\n return token[1];\n };\n\n mustache.name = 'mustache.js';\n mustache.version = '2.3.0';\n mustache.tags = [ '{{', '}}' ];\n\n // All high-level mustache.* functions use this writer.\n var defaultWriter = new Writer();\n\n /**\n * Clears all cached templates in the default writer.\n */\n mustache.clearCache = function clearCache () {\n return defaultWriter.clearCache();\n };\n\n /**\n * Parses and caches the given template in the default writer and returns the\n * array of tokens it contains. Doing this ahead of time avoids the need to\n * parse templates on the fly as they are rendered.\n */\n mustache.parse = function parse (template, tags) {\n return defaultWriter.parse(template, tags);\n };\n\n /**\n * Renders the `template` with the given `view` and `partials` using the\n * default writer.\n */\n mustache.render = function render (template, view, partials) {\n if (typeof template !== 'string') {\n throw new TypeError('Invalid template! Template should be a \"string\" ' +\n 'but \"' + typeStr(template) + '\" was given as the first ' +\n 'argument for mustache#render(template, view, partials)');\n }\n\n return defaultWriter.render(template, view, partials);\n };\n\n // This is here for backwards compatibility with 0.4.x.,\n /*eslint-disable */ // eslint wants camel cased function name\n mustache.to_html = function to_html (template, view, partials, send) {\n /*eslint-enable*/\n\n var result = mustache.render(template, view, partials);\n\n if (isFunction(send)) {\n send(result);\n } else {\n return result;\n }\n };\n\n // Export the escaping function so that the user may override it.\n // See https://github.com/janl/mustache.js/issues/244\n mustache.escape = escapeHtml;\n\n // Export these mainly for testing, but also for advanced usage.\n mustache.Scanner = Scanner;\n mustache.Context = Context;\n mustache.Writer = Writer;\n\n return mustache;\n}));\n","import mustache from \"mustache\";\n\nconst html = `\n\n\n`;\n\nconst template = `\n
    \n
    \n {{#authors}}\n
    \n {{#personalURL}}\n {{name}}\n {{/personalURL}}\n {{^personalURL}}\n
    {{name}}
    \n {{/personalURL}}\n {{#affiliation}}\n {{#affiliationURL}}\n {{affiliation}}\n {{/affiliationURL}}\n {{^affiliationURL}}\n
    {{affiliation}}
    \n {{/affiliationURL}}\n {{/affiliation}}\n
    \n {{/authors}}\n
    \n
    \n
    {{publishedMonth}}. {{publishedDay}}
    \n
    {{publishedYear}}
    \n
    \n \n
    Citation:
    \n
    {{concatenatedAuthors}}, {{publishedYear}}
    \n
    \n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-byline');\n if (el) {\n el.innerHTML = html + mustache.render(template, data);\n }\n}\n","const html = `\n\n\n
    \n

    References

    \n \n

    Errors, Reuse, and Citation

    \n

    If you see mistakes or want to suggest changes, please create an issue on GitHub.

    \n

    Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on GitHub. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: “Figure from …”.

    \n

    For attribution in academic contexts, please cite this work as

    \n
    \n  

    BibTeX citation

    \n
    \n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-appendix')\n if (el) {\n let oldHtml = el.innerHTML;\n el.innerHTML = html;\n let div = el.querySelector(\"div.l-body\")\n\n if (dom.querySelector(\"dt-fn\")) {\n div.innerHTML = `

    Footnotes

    ` + div.innerHTML;\n }\n\n div.innerHTML = oldHtml + div.innerHTML;\n if (data.githubCompareUpdatesUrl) {\n div.innerHTML = `

    Updates

    View all changes to this article since it was first published.

    ` + div.innerHTML;\n }\n\n el.querySelector(\"a.github\").setAttribute(\"href\", data.githubUrl);\n el.querySelector(\"a.github-issue\").setAttribute(\"href\", data.githubUrl + \"/issues/new\");\n el.querySelector(\".citation.short\").textContent = data.concatenatedAuthors + \", \" + '\"' + data.title + '\", Distill, ' + data.publishedYear + \".\";\n var bibtex = \"@article{\" + data.slug + \",\\n\";\n bibtex += \" author = {\" + data.bibtexAuthors + \"},\\n\";\n bibtex += \" title = {\" + data.title + \"},\\n\";\n bibtex += \" journal = {Distill},\\n\";\n bibtex += \" year = {\" + data.publishedYear + \"},\\n\";\n bibtex += \" note = {\" + data.url + \"}\\n\";\n bibtex += \"}\";\n el.querySelector(\".citation.long\").textContent = bibtex;\n }\n\n}\n","export default function(dom, data) {\n let css = `\n dt-cite {\n color: hsla(206, 90%, 20%, 0.7);\n }\n dt-cite .citation-number {\n cursor: default;\n white-space: nowrap;\n font-family: -apple-system, BlinkMacSystemFont, \"Roboto\", Helvetica, sans-serif;\n font-size: 75%;\n color: hsla(206, 90%, 20%, 0.7);\n display: inline-block;\n line-height: 1.1em;\n text-align: center;\n position: relative;\n top: -2px;\n margin: 0 2px;\n }\n figcaption dt-cite .citation-number {\n font-size: 11px;\n font-weight: normal;\n top: -2px;\n line-height: 1em;\n }\n `;\n\n let style = dom.createElement(\"style\");\n style.textContent = css;\n dom.querySelector(\"body\").appendChild(style);\n\n let citations = data.citations;\n /*if (data.citations) {\n citations = Object.keys(data.citations).map(c => data.citations[c]);\n citations.sort((a, b) => {\n return a.author.localeCompare(b.author);\n });\n }*/\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach((el,n) => {\n var key = el.getAttribute(\"key\");\n if (key) {\n var keys = key.split(\",\");\n var cite_string = inline_cite_short(keys);\n var cite_hover_str = \"\";\n keys.map((key,n) => {\n if (n>0) cite_hover_str += \"

    \";\n cite_hover_str += hover_cite(data.bibliography[key]);\n });\n cite_hover_str = cite_hover_str.replace(/\"/g, \"'\")\n var orig_string = el.innerHTML;\n if (orig_string != \"\") orig_string += \" \";\n el.innerHTML = `${orig_string}${cite_string}`;\n }\n });\n\n let bibEl = dom.querySelector(\"dt-bibliography\");\n if (bibEl) {\n let ol = dom.createElement(\"ol\");\n citations.forEach(key => {\n let el = dom.createElement(\"li\");\n el.innerHTML = bibliography_cite(data.bibliography[key]);\n ol.appendChild(el);\n })\n bibEl.appendChild(ol);\n }\n\n function inline_cite_short(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var n = data.citations.indexOf(key)+1;\n return \"\"+n;\n } else {\n return \"?\";\n }\n }\n return \"[\"+keys.map(cite_string).join(\", \")+\"]\";\n }\n\n function inline_cite_long(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var ent = data.bibliography[key];\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var year = ent.year;\n if (names.length == 1) return names[0] + \", \" + year;\n if (names.length == 2) return names[0] + \" & \" + names[1] + \", \" + year;\n if (names.length > 2) return names[0] + \", et al., \" + year;\n } else {\n return \"?\";\n }\n }\n return keys.map(cite_string).join(\", \");\n }\n\n function author_string(ent, template, sep, finalSep){\n var names = ent.author.split(\" and \");\n let name_strings = names.map(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1];\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n var initials = \"\";\n if (firsts != undefined) {\n initials = firsts.trim().split(\" \").map(s => s.trim()[0]);\n initials = initials.join(\".\")+\".\";\n }\n return template.replace(\"${F}\", firsts)\n .replace(\"${L}\", last)\n .replace(\"${I}\", initials);\n });\n if (names.length > 1) {\n var str = name_strings.slice(0, names.length-1).join(sep);\n str += (finalSep || sep) + name_strings[names.length-1];\n return str;\n } else {\n return name_strings[0];\n }\n }\n\n function venue_string(ent) {\n var cite = (ent.journal || ent.booktitle || \"\")\n if (\"volume\" in ent){\n var issue = ent.issue || ent.number;\n issue = (issue != undefined)? \"(\"+issue+\")\" : \"\";\n cite += \", Vol \" + ent.volume + issue;\n }\n if (\"pages\" in ent){\n cite += \", pp. \" + ent.pages\n }\n if (cite != \"\") cite += \". \"\n if (\"publisher\" in ent){\n cite += ent.publisher;\n if (cite[cite.length-1] != \".\") cite += \".\";\n }\n return cite;\n }\n\n function link_string(ent){\n if (\"url\" in ent){\n var url = ent.url;\n var arxiv_match = (/arxiv\\.org\\/abs\\/([0-9\\.]*)/).exec(url);\n if (arxiv_match != null){\n url = `http://arxiv.org/pdf/${arxiv_match[1]}.pdf`;\n }\n\n if (url.slice(-4) == \".pdf\"){\n var label = \"PDF\";\n } else if (url.slice(-5) == \".html\") {\n var label = \"HTML\";\n }\n return `  [${label||\"link\"}]`;\n }/* else if (\"doi\" in ent){\n return `  [DOI]`;\n }*/ else {\n return \"\";\n }\n }\n function doi_string(ent, new_line){\n if (\"doi\" in ent) {\n return `${new_line?\"
    \":\"\"} DOI: ${ent.doi}`;\n } else {\n return \"\";\n }\n }\n\n function bibliography_cite(ent, fancy){\n if (ent){\n var cite = \"\" + ent.title + \" \"\n cite += link_string(ent) + \"
    \";\n cite += author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += venue_string(ent);\n cite += doi_string(ent);\n return cite\n /*var cite = author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += \"\" + ent.title + \". \";\n cite += venue_string(ent);\n cite += doi_string(ent);\n cite += link_string(ent);\n return cite*/\n } else {\n return \"?\";\n }\n }\n\n function hover_cite(ent){\n if (ent){\n var cite = \"\";\n cite += \"\" + ent.title + \"\";\n cite += link_string(ent);\n cite += \"
    \"\n\n var a_str = author_string(ent, \"${I} ${L}\", \", \") + \".\";\n var v_str = venue_string(ent).trim() + \" \" + ent.year + \". \" + doi_string(ent, true);\n\n if ((a_str+v_str).length < Math.min(40, ent.title.length)) {\n cite += a_str + \" \" + v_str;\n } else {\n cite += a_str + \"
    \" + v_str;\n }\n return cite;\n } else {\n return \"?\";\n }\n }\n\n\n //https://scholar.google.com/scholar?q=allintitle%3ADocument+author%3Aolah\n function get_GS_URL(ent){\n if (ent){\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var title = ent.title.split(\" \")//.replace(/[,:]/, \"\")\n var url = \"http://search.labs.crossref.org/dois?\"//\"\"https://scholar.google.com/scholar?\"\n url += uris({q: names.join(\" \") + \" \" + title.join(\" \")})\n }\n\n }\n}\n","export default function(dom, data) {\n\n var fnTags = [].slice.apply(dom.querySelectorAll(\"dt-fn\"));\n var fnContent = [];\n fnTags.forEach((el,n) => {\n var content = el.innerHTML;\n fnContent.push(content);\n n = (n+1)+\"\";\n var key = \"fn-\"+n;\n var escaped_content = content.replace(/\"/g, \"'\");\n el.innerHTML = `${n}`;\n });\n\n let fnList = dom.querySelector(\"dt-fn-list\");\n if (fnList) {\n let ol = dom.createElement(\"ol\");\n fnContent.forEach(content => {\n let el = dom.createElement(\"li\");\n el.innerHTML = content;\n ol.appendChild(el);\n })\n fnList.appendChild(ol);\n }\n\n}\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n */\n\n;(function() {\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^( *[-*_]){3,} *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,\n nptable: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n blockquote: /^( *>[^\\n]+(\\n(?!def)[^\\n]+)*\\n*)+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n table: noop,\n paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,\n text: /^[^\\n]+/\n};\n\nblock.bullet = /(?:[*+-]|\\d+\\.)/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = replace(block.item, 'gm')\n (/bull/g, block.bullet)\n ();\n\nblock.list = replace(block.list)\n (/bull/g, block.bullet)\n ('hr', '\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))')\n ('def', '\\\\n+(?=' + block.def.source + ')')\n ();\n\nblock.blockquote = replace(block.blockquote)\n ('def', block.def)\n ();\n\nblock._tag = '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'\n + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'\n + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|[^\\\\w\\\\s@]*@)\\\\b';\n\nblock.html = replace(block.html)\n ('comment', //)\n ('closed', /<(tag)[\\s\\S]+?<\\/\\1>/)\n ('closing', /])*?>/)\n (/tag/g, block._tag)\n ();\n\nblock.paragraph = replace(block.paragraph)\n ('hr', block.hr)\n ('heading', block.heading)\n ('lheading', block.lheading)\n ('blockquote', block.blockquote)\n ('tag', '<' + block._tag)\n ('def', block.def)\n ();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]*?)\\s*\\1 *(?:\\n+|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = replace(block.paragraph)\n ('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n ();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top, bq) {\n var src = src.replace(/^ +$/gm, '')\n , next\n , loose\n , cap\n , bull\n , b\n , item\n , space\n , i\n , l;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic\n ? cap.replace(/\\n+$/, '')\n : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top, true);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n\n this.tokens.push({\n type: 'list_start',\n ordered: bull.length > 1\n });\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n this.tokens.push({\n type: loose\n ? 'loose_item_start'\n : 'list_item_start'\n });\n\n // Recurse.\n this.token(item, false, bq);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if ((!bq && top) && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.links[cap[1].toLowerCase()] = {\n href: cap[2],\n title: cap[3]\n };\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i]\n .replace(/^ *\\| *| *\\| *$/g, '')\n .split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n autolink: /^<([^ >]+(@|:\\/)[^ >]+)>/,\n url: noop,\n tag: /^|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^\\b_((?:[^_]|__)+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n code: /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n text: /^[\\s\\S]+?(?=[\\\\?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\ninline.link = replace(inline.link)\n ('inside', inline._inside)\n ('href', inline._href)\n ();\n\ninline.reflink = replace(inline.reflink)\n ('inside', inline._inside)\n ();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: replace(inline.escape)('])', '~|])')(),\n url: /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n text: replace(inline.text)\n (']|', '~]|')\n ('|', '|https?://|')\n ()\n});\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: replace(inline.br)('{2,}', '*')(),\n text: replace(inline.gfm.text)('{2,}', '*')()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer;\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new\n Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n var out = ''\n , link\n , text\n , href\n , cap;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += cap[1];\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = cap[1].charAt(6) === ':'\n ? this.mangle(cap[1].substring(7))\n : this.mangle(cap[1]);\n href = this.mangle('mailto:') + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n src = src.substring(cap[0].length);\n text = escape(cap[1]);\n href = text;\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^/i.test(cap[0])) {\n this.inLink = false;\n }\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0]\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out += this.outputLink(cap, {\n href: cap[2],\n title: cap[3]\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2], true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = escape(link.href)\n , title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = ''\n , l = text.length\n , i = 0\n , ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || {};\n}\n\nRenderer.prototype.code = function(code, lang, escaped) {\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '\\n
    ';\n }\n\n return '
    '\n    + (escaped ? code : escape(code, true))\n    + '\\n
    \\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '
    \\n' + quote + '
    \\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw) {\n return ''\n + text\n + '\\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n};\n\nRenderer.prototype.list = function(body, ordered) {\n var type = ordered ? 'ol' : 'ul';\n return '<' + type + '>\\n' + body + '\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '
  • ' + text + '
  • \\n';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '

    ' + text + '

    \\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + '\\n'\n + body\n + '\\n'\n + '
    \\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '\\n' + content + '\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' style=\"text-align:' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.em = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? '
    ' : '
    ';\n};\n\nRenderer.prototype.del = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n if (this.options.sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return '';\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0) {\n return '';\n }\n }\n var out = '
    ';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n var out = '\"'' : '>';\n return out;\n};\n\nRenderer.prototype.text = function(text) {\n return text;\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer;\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options, renderer) {\n var parser = new Parser(options, renderer);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options, this.renderer);\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n this.token.text);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = ''\n , body = ''\n , i\n , row\n , cell\n , flags\n , j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n flags = { header: true, align: this.token.align[i] };\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n var body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n var body = ''\n , ordered = this.token.ordered;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered);\n }\n case 'list_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'loose_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'html': {\n var html = !this.token.pre && !this.options.pedantic\n ? this.inline.output(this.token.text)\n : this.token.text;\n return this.renderer.html(html);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n }\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n return html\n .replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\nfunction unescape(html) {\n\t// explicitly match decimal, hex, and named HTML entities \n return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/g, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction replace(regex, opt) {\n regex = regex.source;\n opt = opt || '';\n return function self(name, val) {\n if (!name) return new RegExp(regex, opt);\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return self;\n };\n}\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1\n , target\n , key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n\n var highlight = opt.highlight\n , tokens\n , pending\n , i = 0;\n\n try {\n tokens = Lexer.lex(src, opt)\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/chjj/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occured:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n sanitizer: null,\n mangle: true,\n smartLists: false,\n silent: false,\n highlight: null,\n langPrefix: 'lang-',\n smartypants: false,\n headerPrefix: '',\n renderer: new Renderer,\n xhtml: false\n};\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.parse = marked;\n\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n this.marked = marked;\n}\n\n}).call(function() {\n return this || (typeof window !== 'undefined' ? window : global);\n}());\n","import marked from 'marked';\n\nmarked.setOptions({\n gfm: true,\n smartypants: true\n});\n\nexport default function(dom, data) {\n let markdownElements = [].slice.call(dom.querySelectorAll('[markdown]'));\n markdownElements.forEach(el => {\n let content = el.innerHTML;\n // Set default indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n\n el.innerHTML = marked(content);\n });\n}\n","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = _self.Prism = {\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/ text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\tbreak tokenloop;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t delNum = 1;\n\n\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t to = match.index + match[0].length,\n\t\t\t\t\t\t k = i,\n\t\t\t\t\t\t p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && p < to; ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t match = match[0].slice(lookbehindLength),\n\t\t\t\t\t to = from + match.length,\n\t\t\t\t\t before = str.slice(0, from),\n\t\t\t\t\t after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (env.type == 'comment') {\n\t\tenv.attributes['spellcheck'] = 'true';\n\t}\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n \t// In worker\n\t_self.addEventListener('message', function(evt) {\n\t\tvar message = JSON.parse(evt.data),\n\t\t lang = message.language,\n\t\t code = message.code,\n\t\t immediateClose = message.immediateClose;\n\n\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\tif (immediateClose) {\n\t\t\t_self.close();\n\t\t}\n\t}, false);\n\n\treturn _self.Prism;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (document.addEventListener && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': //,\n\t'prolog': /<\\?[\\w\\W]+?\\?>/,\n\t'doctype': //i,\n\t'cdata': //i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\w\\W])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:('|\")[\\w\\W]*?(\\1)|[^\\s>]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /[=>\"']/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\w\\W]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^\\{\\}\\s][^\\{\\};]*?(?=\\s*\\{)/,\n\t'string': {\n\t\tpattern: /(\"|')(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'property': /(\\b|\\B)[\\w-]+(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|').*?\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\w\\W]*?\\*\\//,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[a-z0-9_\\.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /(\\.|\\\\)/\n\t\t}\n\t},\n\t'keyword': /\\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(0x[\\dA-Fa-f]+|0b[01]+|0o[0-7]+|\\d*\\.?\\d+([Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*(?=\\()/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*\\*?|\\/|~|\\^|%|\\.{3}/\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[.+?]|\\\\.|[^/\\\\\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\\\\\|\\\\?[^\\\\])*?`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript'\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tif(Array.prototype.forEach) { // Check to prevent error in IE8\n\t\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\t\tvar language, parent = pre;\n\t\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\t\tparent = parent.parentNode;\n\t\t\t\t}\n\n\t\t\t\tif (parent) {\n\t\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t\t}\n\n\t\t\t\tif (!language) {\n\t\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t\t}\n\n\t\t\t\tvar code = document.createElement('code');\n\t\t\t\tcode.className = 'language-' + language;\n\n\t\t\t\tpre.textContent = '';\n\n\t\t\t\tcode.textContent = 'Loading…';\n\n\t\t\t\tpre.appendChild(code);\n\n\t\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\t\txhr.open('GET', src, true);\n\n\t\t\t\txhr.onreadystatechange = function () {\n\t\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\txhr.send(null);\n\t\t\t});\n\t\t}\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\n})();\n","import Prism from \"prismjs\";\n\nexport default function(dom, data) {\n let codeElements = [].slice.call(dom.querySelectorAll(\"dt-code\"));\n codeElements.forEach(el => {\n let content = el.textContent;\n el.innerHTML = \"\";\n let language = el.getAttribute(\"language\");\n let c = dom.createElement(\"code\");\n if (el.getAttribute(\"block\") === \"\") {\n // Let's normalize the tab indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n let p = dom.createElement(\"pre\");\n p.appendChild(c);\n el.appendChild(p);\n } else {\n el.appendChild(c);\n }\n let highlighted = content;\n if (Prism.languages[language]) {\n c.setAttribute(\"class\", \"language-\" + language);\n highlighted = Prism.highlight(content, Prism.languages[language]);\n }\n c.innerHTML = highlighted;\n });\n}\n","export default function(dom, data) {\n\n var textNodes = dom.createTreeWalker(\n dom.body,\n dom.defaultView.NodeFilter.SHOW_TEXT\n );\n while (textNodes.nextNode()) {\n var n = textNodes.currentNode,\n text = n.nodeValue;\n if (text && acceptNode(n)) {\n text = quotes(text);\n text = punctuation(text);\n n.nodeValue = text;\n }\n }\n}\n\nfunction acceptNode(node) {\n var parent = node.parentElement;\n var isMath = (parent && parent.getAttribute && parent.getAttribute(\"class\")) ? parent.getAttribute(\"class\").includes(\"katex\") || parent.getAttribute(\"class\").includes(\"MathJax\") : false;\n return parent &&\n parent.nodeName !== \"SCRIPT\" &&\n parent.nodeName !== \"STYLE\" &&\n parent.nodeName !== \"CODE\" &&\n parent.nodeName !== \"PRE\" &&\n parent.nodeName !== \"SPAN\" &&\n parent.nodeName !== \"DT-HEADER\" &&\n parent.nodeName !== \"DT-BYLINE\" &&\n parent.nodeName !== \"DT-MATH\" &&\n parent.nodeName !== \"DT-CODE\" &&\n parent.nodeName !== \"DT-BIBLIOGRAPHY\" &&\n parent.nodeName !== \"DT-FOOTER\" &&\n parent.nodeType !== 8 && //comment nodes\n !isMath;\n}\n\n\n/*!\n * typeset - Typesetting for the web\n * @version v0.1.6\n * @link https://github.com/davidmerfield/Typeset.js\n * @author David Merfield\n */\n // which has a CC0 license\n // http://creativecommons.org/publicdomain/zero/1.0/\n\n\nfunction punctuation(text){\n\n // Dashes\n text = text.replace(/--/g, '\\u2014');\n text = text.replace(/ \\u2014 /g,\"\\u2009\\u2014\\u2009\"); //this has thin spaces\n\n // Elipses\n text = text.replace(/\\.\\.\\./g,'…');\n\n // Nbsp for punc with spaces\n var NBSP = \"\\u00a0\";\n var NBSP_PUNCTUATION_START = /([«¿¡]) /g;\n var NBSP_PUNCTUATION_END = / ([\\!\\?:;\\.,‽»])/g;\n\n text = text.replace(NBSP_PUNCTUATION_START, '$1' + NBSP);\n text = text.replace(NBSP_PUNCTUATION_END, NBSP + '$1');\n\n return text;\n}\n\nfunction quotes(text) {\n\n text = text\n .replace(/(\\W|^)\"([^\\s\\!\\?:;\\.,‽»])/g, '$1\\u201c$2') // beginning \"\n .replace(/(\\u201c[^\"]*)\"([^\"]*$|[^\\u201c\"]*\\u201c)/g, '$1\\u201d$2') // ending \"\n .replace(/([^0-9])\"/g,'$1\\u201d') // remaining \" at end of word\n .replace(/(\\W|^)'(\\S)/g, '$1\\u2018$2') // beginning '\n .replace(/([a-z])'([a-z])/ig, '$1\\u2019$2') // conjunction's possession\n .replace(/((\\u2018[^']*)|[a-z])'([^0-9]|$)/ig, '$1\\u2019$3') // ending '\n .replace(/(\\u2018)([0-9]{2}[^\\u2019]*)(\\u2018([^0-9]|$)|$|\\u2019[a-z])/ig, '\\u2019$2$3') // abbrev. years like '93\n .replace(/(\\B|^)\\u2018(?=([^\\u2019]*\\u2019\\b)*([^\\u2019\\u2018]*\\W[\\u2019\\u2018]\\b|[^\\u2019\\u2018]*$))/ig, '$1\\u2019') // backwards apostrophe\n .replace(/'''/g, '\\u2034') // triple prime\n .replace(/(\"|'')/g, '\\u2033') // double prime\n .replace(/'/g, '\\u2032');\n\n // Allow escaped quotes\n text = text.replace(/\\\\“/, '\\\"');\n text = text.replace(/\\\\”/, '\\\"');\n text = text.replace(/\\\\’/, '\\'');\n text = text.replace(/\\\\‘/, '\\'');\n\n return text;\n}\n\nfunction ligatures(text){\n\n text = text.replace(/fi/g, 'fi');\n text = text.replace(/fl/g, 'fl');\n\n return text;\n};\n","import code from './hover-box.txt';\n\nexport default function(dom) {\n let s = dom.createElement(\"script\");\n s.textContent = code;\n dom.querySelector(\"body\").appendChild(s);\n}\n","//import xml from \"xml\";\n\nexport default function(data) {\n\n\n var date = data.publishedDate;\n\n var batch_timestamp = Math.floor(Date.now() / 1000);\n var batch_id = data.authors.length ? data.authors[0].lastName.toLowerCase().slice(0,20) : \"Anonymous\";\n batch_id += \"_\" + date.getFullYear();\n batch_id += \"_\" + data.title.split(\" \")[0].toLowerCase().slice(0,20) + \"_\" + batch_timestamp;\n // generate XML\n var crf_data =\n {doi_batch : [\n\n { _attr: {\n version: \"4.3.7\",\n xmlns: \"http://www.crossref.org/schema/4.3.7\",\n \"xmlns:xsi\": \"http://www.w3.org/2001/XMLSchema-instance\",\n \"xsi:schemaLocation\": \"http://www.crossref.org/schema/4.3.7 http://www.crossref.org/schemas/crossref4.3.7.xsd\",\n }},\n\n { head: [\n {doi_batch_id: batch_id},\n {timestamp: batch_timestamp},\n {depositor: [\n {depositor_name: data.journal.publisherName},\n {email_address: data.journal.publisherEmail},\n ]},\n {registrant: data.journal.publisherName},\n ]},\n\n {body: [\n {journal: [\n\n {journal_metadata: [\n {full_title: data.journal.full_title || data.journal.title},\n {abbrev_title: data.journal.abbrev_title || data.journal.title || data.journal.full_title},\n {issn: data.journal.issn},\n {doi_data: [\n {doi: data.journal.doi},\n {resource: data.journal.url},\n ]},\n ]},\n\n {journal_issue: [\n {publication_date: [\n {month: date.getMonth()+1},\n {year: date.getFullYear()},\n ]},\n {journal_volume: [\n {volume: data.volume},\n ]},\n {issue: data.issue},\n ]},\n\n {journal_article: [\n {titles: [\n {title: data.title},\n ]},\n { contributors:\n data.authors.map((author, ind) => (\n {person_name: [\n { _attr: {\n contributor_role: \"author\",\n sequence: (ind == 0)? \"first\" : \"additional\"\n }},\n {given_name: author.firstName},\n {surname: author.lastName},\n {affiliation: author.affiliation}\n // TODO: ORCID?\n ]}\n ))\n },\n {publication_date: [\n {month: date.getMonth()+1},\n {day: date.getDate()},\n {year: date.getFullYear()}\n ]},\n { publisher_item: [\n {item_number: data.doi}\n ]},\n {doi_data: [\n {doi: data.doi},\n //{timestamp: \"\"},\n {resource: data.url},\n ]},\n {citation_list:\n data.citations.map(key =>\n citation_xml(key, data.bibliography[key]))\n }\n\n ]},\n\n ]},\n ]},\n ]};\n\n return xml(crf_data);\n}\n\nfunction citation_xml(key, ent){\n if (ent == undefined) return {};\n var info = [];\n info.push({_attr: {key: key}});\n if (\"title\" in ent)\n info.push({article_title: ent.title});\n if (\"author\" in ent)\n info.push({author: ent.author.split(\" and \")[0].split(\",\")[0].trim()});\n if (\"journal\" in ent)\n info.push({journal_title: ent.journal});\n if (\"booktitle\" in ent)\n info.push({volume_title: ent.booktitle});\n if (\"volume\" in ent)\n info.push({volume: ent.volume});\n if (\"issue\" in ent)\n info.push({issue: ent.issue});\n if (\"doi\" in ent)\n info.push({doi: ent.doi});\n return {citation: info}\n}\n\nfunction xml(obj) {\n //console.log(typeof(obj), obj)\n if (typeof obj === 'string') return obj;\n if (typeof obj === 'number') return \"\"+obj;\n let keys = Object.keys(obj);\n if (keys.length != 1) console.error(\"can't interpret \", obj, \"as xml\");\n let name = keys[0];\n var full_content = obj[name];\n var attr = {};\n if (Array.isArray(full_content)){\n var content = [];\n for (var i in full_content) {\n var obj = full_content[i];\n var obj_name = Object.keys(obj)[0];\n if (\"_attr\" == obj_name) {\n attr = obj[\"_attr\"];\n } else {\n //console.log(Object.keys(obj)[0])\n content.push(obj);\n }\n }\n } else {\n content = full_content;\n }\n if (content == undefined){\n content = \"undefined\"\n }\n\n let attr_string = \"\";\n for (var k in attr) {\n attr_string += ` ${k}=\\\"${attr[k]}\\\"`\n }\n\n //console.log(typeof content, Array.isArray(content), content instanceof String, content)\n if (Array.isArray(content)){\n content = content.map(xml);\n content = content.join(\"\\n\").split(\"\\n\");\n content = content.map(s => \" \" + s).join(\"\\n\")\n var result = `<${name}${attr_string}>\\n${content}\\n`;\n } else {\n content = xml(content);\n var result = `<${name}${attr_string}>${content}`;\n }\n return result;\n}\n","import logo from \"./distill-logo.svg\";\n\nconst html = `\n\n\n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-header\");\n if(el) {\n el.innerHTML = html;\n } else {\n let header = dom.createElement(\"dt-header\");\n header.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(header, b.firstChild);\n }\n}\n","import logo from \"./distill-logo.svg\";\n\nlet html = `\n\n\n
    \n \n ${logo}\n Distill\n is dedicated to clear explanations of machine learning\n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-footer\");\n if(el) {\n el.innerHTML = html;\n } else {\n let footer = dom.createElement(\"dt-footer\");\n footer.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.appendChild(footer);\n }\n}\n","import html from \"./components/html\";\nimport styles from \"./components/styles\";\nimport frontMatter from \"./components/front-matter\";\nimport bibliography from \"./components/bibliography\";\nimport expandData from \"./components/expand-data\";\nimport meta from \"./components/meta\";\nimport banner from \"./components/banner\";\nimport byline from \"./components/byline\";\nimport appendix from \"./components/appendix\";\nimport citation from \"./components/citation\";\nimport footnote from \"./components/footnote\";\nimport markdown from \"./components/markdown\";\nimport code from \"./components/code\";\nimport typeset from \"./components/typeset\";\nimport hoverBox from \"./components/hover-box-include\";\nimport generateCrossref from \"./components/generate-crossref\";\nimport header from \"./components/header\";\nimport footer from \"./components/footer\";\n\nfunction renderImmediately(dom) {\n html(dom);\n styles(dom);\n}\n\nfunction renderOnLoad(dom, data) {\n frontMatter(dom, data);\n bibliography(dom, data);\n expandData(dom, data);\n meta(dom, data);\n byline(dom, data);\n appendix(dom, data);\n markdown(dom, data);\n code(dom, data);\n citation(dom, data);\n footnote(dom, data);\n typeset(dom, data);\n hoverBox(dom, data);\n}\n\n// If we are in a browser, render automatically...\nif(window && window.document) {\n let data = {};\n renderImmediately(window.document);\n window.document.addEventListener(\"DOMContentLoaded\", (event) => {\n renderOnLoad(window.document, data);\n // Add a banner if we're not on localhost.\n if (window.location.hostname !== \"localhost\" && window.location.origin !== \"file://\") {\n banner(window.document, data);\n }\n generateCrossref(data);\n });\n}\n\n// If we are in node...\nfunction render(dom, data) {\n renderImmediately(dom);\n renderOnLoad(dom, data);\n // Remove script tag so it doesn't run again in the client\n let s = dom.querySelector('script[src=\"http://distill.pub/template.js\"]');\n if (s) { s.parentElement.removeChild(s); };\n}\n\n// Distill specific rendering\nfunction distillify(dom, data) {\n header(dom, data);\n footer(dom, data);\n}\n\nexport {render as render};\nexport {distillify as distillify};\nexport {generateCrossref as generateCrossref};\n"],"names":["let","meta","YAMLException","common","require$$0","Mark","this","Type","require$$1","require$$2","type","arguments","Schema","require$$3","require$$4","require$$5","require","_hasOwnProperty","_toString","require$$6","require$$7","_require","DEFAULT_SAFE_SCHEMA","DEFAULT_FULL_SCHEMA","loadAll","load","safeLoadAll","safeLoad","State","dump","safeDump","require$$8","require$$9","ymlParse","interval","day","timeDay","timeYear","timeSunday","timeMonday","locale","escape","const","html","define","global","Prism","code","render"],"mappings":"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"} \ No newline at end of file diff --git a/index.js b/index.js index c2a18eb..6dac36c 100644 --- a/index.js +++ b/index.js @@ -5,10 +5,8 @@ import bibliography from "./components/bibliography"; import expandData from "./components/expand-data"; import meta from "./components/meta"; import banner from "./components/banner"; -import header from "./components/header"; import byline from "./components/byline"; import appendix from "./components/appendix"; -import footer from "./components/footer"; import citation from "./components/citation"; import footnote from "./components/footnote"; import markdown from "./components/markdown"; @@ -16,6 +14,8 @@ import code from "./components/code"; import typeset from "./components/typeset"; import hoverBox from "./components/hover-box-include"; import generateCrossref from "./components/generate-crossref"; +import header from "./components/header"; +import footer from "./components/footer"; function renderImmediately(dom) { html(dom); @@ -27,10 +27,8 @@ function renderOnLoad(dom, data) { bibliography(dom, data); expandData(dom, data); meta(dom, data); - header(dom, data); byline(dom, data); appendix(dom, data); - footer(dom, data); markdown(dom, data); code(dom, data); citation(dom, data); @@ -62,5 +60,12 @@ function render(dom, data) { if (s) { s.parentElement.removeChild(s); }; } +// Distill specific rendering +function distillify(dom, data) { + header(dom, data); + footer(dom, data); +} + export {render as render}; +export {distillify as distillify}; export {generateCrossref as generateCrossref}; From eb8bc670c9e4fe2ac13bf113f582285a733174b0 Mon Sep 17 00:00:00 2001 From: Shan Carter Date: Mon, 20 Mar 2017 08:44:40 -0700 Subject: [PATCH 06/42] Fixing links --- components/header.js | 6 +++--- dist/template.js | 4 ++-- dist/template.js.map | 2 +- index.js | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/components/header.js b/components/header.js index 2b2d831..03645f8 100644 --- a/components/header.js +++ b/components/header.js @@ -72,9 +72,9 @@ dt-header .nav a { Distill ` diff --git a/dist/template.js b/dist/template.js index cb35801..d53dccd 100644 --- a/dist/template.js +++ b/dist/template.js @@ -8654,7 +8654,7 @@ function xml(obj) { var logo = "\n \n\n"; -var html$4 = "\n\n\n\n"; +var html$4 = "\n\n\n\n"; var header = function(dom, data) { var el = dom.querySelector("dt-header"); @@ -8721,7 +8721,7 @@ function render$1(dom, data) { renderImmediately(dom); renderOnLoad(dom, data); // Remove script tag so it doesn't run again in the client - var s = dom.querySelector('script[src="http://distill.pub/template.js"]'); + var s = dom.querySelector('script[src*="distill.pub/template"]'); if (s) { s.parentElement.removeChild(s); } } diff --git a/dist/template.js.map b/dist/template.js.map index 8367396..d8dc4fa 100644 --- a/dist/template.js.map +++ b/dist/template.js.map @@ -1 +1 @@ -{"version":3,"file":null,"sources":["../components/html.js","../components/styles.js","../node_modules/js-yaml/lib/js-yaml/common.js","../node_modules/js-yaml/lib/js-yaml/exception.js","../node_modules/js-yaml/lib/js-yaml/mark.js","../node_modules/js-yaml/lib/js-yaml/type.js","../node_modules/js-yaml/lib/js-yaml/schema.js","../node_modules/js-yaml/lib/js-yaml/type/str.js","../node_modules/js-yaml/lib/js-yaml/type/seq.js","../node_modules/js-yaml/lib/js-yaml/type/map.js","../node_modules/js-yaml/lib/js-yaml/schema/failsafe.js","../node_modules/js-yaml/lib/js-yaml/type/null.js","../node_modules/js-yaml/lib/js-yaml/type/bool.js","../node_modules/js-yaml/lib/js-yaml/type/int.js","../node_modules/js-yaml/lib/js-yaml/type/float.js","../node_modules/js-yaml/lib/js-yaml/schema/json.js","../node_modules/js-yaml/lib/js-yaml/schema/core.js","../node_modules/js-yaml/lib/js-yaml/type/timestamp.js","../node_modules/js-yaml/lib/js-yaml/type/merge.js","../node_modules/js-yaml/lib/js-yaml/type/binary.js","../node_modules/js-yaml/lib/js-yaml/type/omap.js","../node_modules/js-yaml/lib/js-yaml/type/pairs.js","../node_modules/js-yaml/lib/js-yaml/type/set.js","../node_modules/js-yaml/lib/js-yaml/schema/default_safe.js","../node_modules/js-yaml/lib/js-yaml/type/js/undefined.js","../node_modules/js-yaml/lib/js-yaml/type/js/regexp.js","../node_modules/js-yaml/lib/js-yaml/type/js/function.js","../node_modules/js-yaml/lib/js-yaml/schema/default_full.js","../node_modules/js-yaml/lib/js-yaml/loader.js","../node_modules/js-yaml/lib/js-yaml/dumper.js","../node_modules/js-yaml/lib/js-yaml.js","../node_modules/js-yaml/index.js","../components/front-matter.js","../node_modules/bibtex-parse-js/bibtexParse.js","../components/bibliography.js","../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/utcMinute.js","../node_modules/d3-time/src/utcHour.js","../node_modules/d3-time/src/utcDay.js","../node_modules/d3-time/src/utcWeek.js","../node_modules/d3-time/src/utcMonth.js","../node_modules/d3-time/src/utcYear.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-time-format/src/isoFormat.js","../node_modules/d3-time-format/src/isoParse.js","../components/expand-data.js","../../node_modules/escape-html/index.js","../components/meta.js","../components/banner.js","../node_modules/mustache/mustache.js","../components/byline.js","../components/appendix.js","../components/citation.js","../components/footnote.js","../node_modules/marked/lib/marked.js","../components/markdown.js","../node_modules/prismjs/prism.js","../components/code.js","../components/typeset.js","../components/hover-box-include.js","../components/generate-crossref.js","../components/header.js","../components/footer.js","../index.js"],"sourcesContent":["export default function(dom) {\n if (!dom.querySelector(\"html\").getAttribute(\"lang\")) {\n dom.querySelector(\"html\").setAttribute(\"lang\", \"en\")\n }\n\n let head = dom.querySelector(\"head\");\n\n if (!dom.querySelector(\"meta[charset]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"charset\", \"utf-8\");\n head.appendChild(meta);\n }\n if (!dom.querySelector(\"meta[name=viewport]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"name\", \"viewport\");\n meta.setAttribute(\"content\", \"width=device-width, initial-scale=1\");\n head.appendChild(meta);\n }\n}\n","import base from './styles-base.css';\nimport layout from './styles-layout.css';\nimport article from './styles-article.css';\nimport code from './styles-code.css';\nimport print from './styles-print.css';\n\nexport default function(dom) {\n let s = dom.createElement(\"style\");\n s.textContent = base + layout + article + code + print;\n dom.querySelector(\"head\").appendChild(s);\n}\n","'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n var result = this.name + ': ';\n\n result += this.reason || '(unknown reason)';\n\n if (!compact && this.mark) {\n result += ' ' + this.mark.toString();\n }\n\n return result;\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n\nvar common = require('./common');\n\n\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\n\n\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head, start, tail, end, snippet;\n\n if (!this.buffer) return null;\n\n indent = indent || 4;\n maxLength = maxLength || 75;\n\n head = '';\n start = this.position;\n\n while (start > 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n\n tail = '';\n end = this.position;\n\n while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n\n snippet = this.buffer.slice(start, end);\n\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' +\n common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\n\nMark.prototype.toString = function toString(compact) {\n var snippet, where = '';\n\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n if (!compact) {\n snippet = this.getSnippet();\n\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n\n return where;\n};\n\n\nmodule.exports = Mark;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name, result) {\n var exclude = [];\n\n schema.include.forEach(function (includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n\n schema[name].forEach(function (currentType) {\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n exclude.push(previousIndex);\n }\n });\n\n result.push(currentType);\n });\n\n return result.filter(function (type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {}\n }, index, length;\n\n function collectType(type) {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n\n this.implicit.forEach(function (type) {\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n });\n\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\n\nSchema.DEFAULT = null;\n\n\nSchema.create = function createSchema() {\n var schemas, types;\n\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n\n if (!schemas.every(function (schema) { return schema instanceof Schema; })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n\n if (!types.every(function (type) { return type instanceof Type; })) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n return new Schema({\n include: schemas,\n explicit: types\n });\n};\n\n\nmodule.exports = Schema;\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 8\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 10 (except 0) or base 60\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch === ':') break;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n if (!hasDigits) return false;\n\n // if !base60 - done;\n if (ch !== ':') return true;\n\n // base60 almost not used, no needs to optimize\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch, base, digits = [];\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value, 16);\n return sign * parseInt(value, 8);\n }\n\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseInt(v, 10));\n });\n\n value = 0;\n base = 1;\n\n digits.forEach(function (d) {\n value += (d * base);\n base *= 60;\n });\n\n return sign * value;\n\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (object) { return '0b' + object.toString(2); },\n octal: function (object) { return '0' + object.toString(8); },\n decimal: function (object) { return object.toString(10); },\n hexadecimal: function (object) { return '0x' + object.toString(16).toUpperCase(); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n '^(?:[-+]?(?:[0-9][0-9_]*)\\\\.[0-9_]*(?:[eE][-+][0-9]+)?' +\n '|\\\\.[0-9_]+(?:[eE][-+][0-9]+)?' +\n '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' +\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data)) return false;\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign, base, digits;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n\n } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n\n value = 0.0;\n base = 1;\n\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n\n return sign * value;\n\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./failsafe')\n ],\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./json')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\nvar NodeBuffer;\n\ntry {\n // A trick for browserified version, to not include `Buffer` shim\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n // Wrap into Buffer for NodeJS and leave Array for browser\n if (NodeBuffer) return new NodeBuffer(result);\n\n return result;\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./core')\n ],\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n return true;\n}\n\nfunction constructJavascriptUndefined() {\n /*eslint-disable no-undefined*/\n return undefined;\n}\n\nfunction representJavascriptUndefined() {\n return '';\n}\n\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n if (data === null) return false;\n if (data.length === 0) return false;\n\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // if regexp starts with '/' it can have modifiers and must be properly closed\n // `/foo/gim` - modifiers tail can be maximum 3 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n\n if (modifiers.length > 3) return false;\n // if expression starts with /, is should be properly terminated\n if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n }\n\n return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // `/foo/gim` - tail can be maximum 4 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n\n return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object /*, style*/) {\n var result = '/' + object.source + '/';\n\n if (object.global) result += 'g';\n if (object.multiline) result += 'm';\n if (object.ignoreCase) result += 'i';\n\n return result;\n}\n\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n","'use strict';\n\nvar esprima;\n\n// Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n// If not found - try to fallback to window.esprima. If not\n// found too - then fail to parse.\n//\ntry {\n // workaround to exclude package from browserify list.\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n /*global window */\n if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n if (data === null) return false;\n\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true });\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction constructJavascriptFunction(data) {\n /*jslint evil:true*/\n\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true }),\n params = [],\n body;\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n throw new Error('Failed to resolve function');\n }\n\n ast.body[0].expression.params.forEach(function (param) {\n params.push(param.name);\n });\n\n body = ast.body[0].expression.body.range;\n\n // Esprima's ranges include the first '{' and the last '}' characters on\n // function expressions. So cut them out.\n /*eslint-disable no-new-func*/\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n}\n\nfunction representJavascriptFunction(object /*, style*/) {\n return object.toString();\n}\n\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n","// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [\n require('./default_safe')\n ],\n explicit: [\n require('../type/js/undefined'),\n require('../type/js/regexp'),\n require('../type/js/function')\n ]\n});\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00);\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n return new YAMLException(\n message,\n new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length;\n _position < _length;\n _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode) {\n var index, quantity;\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n throwError(state, 'duplicated mapping key');\n }\n _result[keyNode] = valueNode;\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else {\n break; // Reading is done. Go to the epilogue.\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if (state.lineIndent > nodeIndent && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!state.anchorMap.hasOwnProperty(alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag !== null && state.tag !== '!') {\n if (state.tag === '?') {\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length;\n typeIndex < typeQuantity;\n typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only assigned to plain scalars. So, it isn't\n // needed to check for 'kind' conformity.\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = {};\n state.anchorMap = {};\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n var documents = loadDocuments(input, options), index, length;\n\n for (index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nfunction safeLoadAll(input, output, options) {\n loadAll(input, output, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nfunction safeLoad(input, options) {\n return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// Simplified test for values allowed after the first character in plain style.\nfunction isPlainSafe(c) {\n // Uses a subset of nb-char - c-flow-indicator - \":\" - \"#\"\n // where nb-char ::= c-printable - b-char - c-byte-order-mark.\n return isPrintable(c) && c !== 0xFEFF\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // - \":\" - \"#\"\n && c !== CHAR_COLON\n && c !== CHAR_SHARP;\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n return isPrintable(c) && c !== 0xFEFF\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {\n var i;\n var char;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(string.charCodeAt(0))\n && !isWhitespace(string.charCodeAt(string.length - 1));\n\n if (singleLineOnly) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n return plain && !testAmbiguousType(string)\n ? STYLE_PLAIN : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (string[0] === ' ' && indentPerLevel > 9) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey) {\n state.dump = (function () {\n if (string.length === 0) {\n return \"''\";\n }\n if (!state.noCompatMode &&\n DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n return \"'\" + string + \"'\";\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = (string[0] === ' ') ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char;\n var escapeSeq;\n\n for (var i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n result += !escapeSeq && isPrintable(char)\n ? string[i]\n : escapeSeq || encodeHex(char);\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level, object[index], false, false)) {\n if (index !== 0) _result += ', ';\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || index !== 0) {\n _result += generateNextLine(state, level);\n }\n _result += '- ' + state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (index !== 0) pairBuffer += ', ';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + ': ';\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || index !== 0) {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n state.tag = explicit ? type.tag : '?';\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n writeBlockSequence(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey);\n }\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n state.dump = '!<' + state.tag + '> ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n if (writeNode(state, 0, input, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nfunction safeDump(input, options) {\n return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n","'use strict';\n\n\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\n\n\nfunction deprecated(name) {\n return function () {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\n\n\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\n\n// Deprecated schema names from JS-YAML 2.0.x\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\n\n// Deprecated functions from JS-YAML 1.x.x\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","'use strict';\n\n\nvar yaml = require('./lib/js-yaml.js');\n\n\nmodule.exports = yaml;\n","import ymlParse from \"js-yaml\";\n\nexport default function(dom, data) {\n let localData = {};\n let el = dom.querySelector('script[type=\"text/front-matter\"]');\n if (el) {\n let text = el.textContent;\n localData = ymlParse.safeLoad(text);\n }\n\n data.title = localData.title ? localData.title : \"Untitled\";\n data.description = localData.description ? localData.description : \"No description.\";\n\n data.authors = localData.authors ? localData.authors : [];\n\n data.authors = data.authors.map((author, i) =>{\n let a = {};\n let name = Object.keys(author)[0];\n if ((typeof author) === \"string\") {\n name = author;\n } else {\n a.personalURL = author[name];\n }\n let names = name.split(\" \");\n a.name = name;\n a.firstName = names.slice(0, names.length - 1).join(\" \");\n a.lastName = names[names.length -1];\n if(localData.affiliations[i]) {\n let affiliation = Object.keys(localData.affiliations[i])[0];\n if ((typeof localData.affiliations[i]) === \"string\") {\n affiliation = localData.affiliations[i]\n } else {\n a.affiliationURL = localData.affiliations[i][affiliation];\n }\n a.affiliation = affiliation;\n }\n return a;\n });\n \n\n}\n","/* start bibtexParse 0.0.22 */\n\n//Original work by Henrik Muehe (c) 2010\n//\n//CommonJS port by Mikola Lysenko 2013\n//\n//Port to Browser lib by ORCID / RCPETERS\n//\n//Issues:\n//no comment handling within strings\n//no string concatenation\n//no variable values yet\n//Grammar implemented here:\n//bibtex -> (string | preamble | comment | entry)*;\n//string -> '@STRING' '{' key_equals_value '}';\n//preamble -> '@PREAMBLE' '{' value '}';\n//comment -> '@COMMENT' '{' value '}';\n//entry -> '@' key '{' key ',' key_value_list '}';\n//key_value_list -> key_equals_value (',' key_equals_value)*;\n//key_equals_value -> key '=' value;\n//value -> value_quotes | value_braces | key;\n//value_quotes -> '\"' .*? '\"'; // not quite\n//value_braces -> '{' .*? '\"'; // not quite\n(function(exports) {\n\n function BibtexParser() {\n \n this.months = [\"jan\", \"feb\", \"mar\", \"apr\", \"may\", \"jun\", \"jul\", \"aug\", \"sep\", \"oct\", \"nov\", \"dec\"];\n this.notKey = [',','{','}',' ','='];\n this.pos = 0;\n this.input = \"\";\n this.entries = new Array();\n\n this.currentEntry = \"\";\n\n this.setInput = function(t) {\n this.input = t;\n };\n\n this.getEntries = function() {\n return this.entries;\n };\n\n this.isWhitespace = function(s) {\n return (s == ' ' || s == '\\r' || s == '\\t' || s == '\\n');\n };\n\n this.match = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n this.pos += s.length;\n } else {\n throw \"Token mismatch, expected \" + s + \", found \"\n + this.input.substring(this.pos);\n };\n this.skipWhitespace(canCommentOut);\n };\n\n this.tryMatch = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n return true;\n } else {\n return false;\n };\n this.skipWhitespace(canCommentOut);\n };\n\n /* when search for a match all text can be ignored, not just white space */\n this.matchAt = function() {\n while (this.input.length > this.pos && this.input[this.pos] != '@') {\n this.pos++;\n };\n\n if (this.input[this.pos] == '@') {\n return true;\n };\n return false;\n };\n\n this.skipWhitespace = function(canCommentOut) {\n while (this.isWhitespace(this.input[this.pos])) {\n this.pos++;\n };\n if (this.input[this.pos] == \"%\" && canCommentOut == true) {\n while (this.input[this.pos] != \"\\n\") {\n this.pos++;\n };\n this.skipWhitespace(canCommentOut);\n };\n };\n\n this.value_braces = function() {\n var bracecount = 0;\n this.match(\"{\", false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '}') {\n if (bracecount > 0) {\n bracecount--;\n } else {\n var end = this.pos;\n this.match(\"}\", false);\n return this.input.substring(start, end);\n };\n } else if (this.input[this.pos] == '{') {\n bracecount++;\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value\";\n };\n };\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.value_comment = function() {\n var str = '';\n var brcktCnt = 0;\n while (!(this.tryMatch(\"}\", false) && brcktCnt == 0)) {\n str = str + this.input[this.pos];\n if (this.input[this.pos] == '{')\n brcktCnt++;\n if (this.input[this.pos] == '}')\n brcktCnt--;\n if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n this.pos++;\n };\n return str;\n };\n\n this.value_quotes = function() {\n this.match('\"', false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '\"') {\n var end = this.pos;\n this.match('\"', false);\n return this.input.substring(start, end);\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n }\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.single_value = function() {\n var start = this.pos;\n if (this.tryMatch(\"{\")) {\n return this.value_braces();\n } else if (this.tryMatch('\"')) {\n return this.value_quotes();\n } else {\n var k = this.key();\n if (k.match(\"^[0-9]+$\"))\n return k;\n else if (this.months.indexOf(k.toLowerCase()) >= 0)\n return k.toLowerCase();\n else\n throw \"Value expected:\" + this.input.substring(start) + ' for key: ' + k;\n \n };\n };\n\n this.value = function() {\n var values = [];\n values.push(this.single_value());\n while (this.tryMatch(\"#\")) {\n this.match(\"#\");\n values.push(this.single_value());\n };\n return values.join(\"\");\n };\n\n this.key = function() {\n var start = this.pos;\n while (true) {\n if (this.pos >= this.input.length) {\n throw \"Runaway key\";\n };\n // а-яА-Я is Cyrillic\n //console.log(this.input[this.pos]);\n if (this.notKey.indexOf(this.input[this.pos]) >= 0) {\n return this.input.substring(start, this.pos);\n } else {\n this.pos++;\n \n };\n };\n };\n\n this.key_equals_value = function() {\n var key = this.key();\n if (this.tryMatch(\"=\")) {\n this.match(\"=\");\n var val = this.value();\n return [ key, val ];\n } else {\n throw \"... = value expected, equals sign missing:\"\n + this.input.substring(this.pos);\n };\n };\n\n this.key_value_list = function() {\n var kv = this.key_equals_value();\n this.currentEntry['entryTags'] = {};\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n while (this.tryMatch(\",\")) {\n this.match(\",\");\n // fixes problems with commas at the end of a list\n if (this.tryMatch(\"}\")) {\n break;\n }\n ;\n kv = this.key_equals_value();\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n };\n };\n\n this.entry_body = function(d) {\n this.currentEntry = {};\n this.currentEntry['citationKey'] = this.key();\n this.currentEntry['entryType'] = d.substring(1);\n this.match(\",\");\n this.key_value_list();\n this.entries.push(this.currentEntry);\n };\n\n this.directive = function() {\n this.match(\"@\");\n return \"@\" + this.key();\n };\n\n this.preamble = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'PREAMBLE';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.comment = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'COMMENT';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.entry = function(d) {\n this.entry_body(d);\n };\n\n this.bibtex = function() {\n while (this.matchAt()) {\n var d = this.directive();\n this.match(\"{\");\n if (d == \"@STRING\") {\n this.string();\n } else if (d == \"@PREAMBLE\") {\n this.preamble();\n } else if (d == \"@COMMENT\") {\n this.comment();\n } else {\n this.entry(d);\n }\n this.match(\"}\");\n };\n };\n };\n \n exports.toJSON = function(bibtex) {\n var b = new BibtexParser();\n b.setInput(bibtex);\n b.bibtex();\n return b.entries;\n };\n\n /* added during hackathon don't hate on me */\n exports.toBibtex = function(json) {\n var out = '';\n for ( var i in json) {\n out += \"@\" + json[i].entryType;\n out += '{';\n if (json[i].citationKey)\n out += json[i].citationKey + ', ';\n if (json[i].entry)\n out += json[i].entry ;\n if (json[i].entryTags) {\n var tags = '';\n for (var jdx in json[i].entryTags) {\n if (tags.length != 0)\n tags += ', ';\n tags += jdx + '= {' + json[i].entryTags[jdx] + '}';\n }\n out += tags;\n }\n out += '}\\n\\n';\n }\n return out;\n \n };\n\n})(typeof exports === 'undefined' ? this['bibtexParse'] = {} : exports);\n\n/* end bibtexParse */\n","import bibtexParse from \"bibtex-parse-js\";\n\nexport default function(dom, data) {\n let el = dom.querySelector('script[type=\"text/bibliography\"]');\n let citations = [];\n let bibliography = {};\n //TODO If we don't have a local element, make a request for the document.\n if (el) {\n let rawBib = el.textContent;\n let parsed = bibtexParse.toJSON(rawBib);\n if(parsed) {\n parsed.forEach(e => {\n for (var k in e.entryTags){\n var val = e.entryTags[k];\n val = val.replace(/[\\t\\n ]+/g, \" \");\n val = val.replace(/{\\\\[\"^`\\.'acu~Hvs]( )?([a-zA-Z])}/g,\n (full, x, char) => char);\n val = val.replace(/{\\\\([a-zA-Z])}/g,\n (full, char) => char);\n e.entryTags[k] = val;\n }\n bibliography[e.citationKey] = e.entryTags;\n bibliography[e.citationKey].type = e.entryType;\n });\n }\n\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach(el => {\n let key = el.getAttribute(\"key\");\n if (key) {\n let citationKeys = key.split(\",\");\n citationKeys.forEach(key => {\n if (citations.indexOf(key) == -1){\n citations.push(key);\n if (!(key in bibliography)){\n console.warn(\"No bibliography entry found for: \" + key);\n }\n }\n });\n }\n });\n }\n data.bibliography = bibliography;\n data.citations = citations;\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(new Date(+start)); while (offseti(start, step), floori(start), start < stop)\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) while (--step >= 0) while (offseti(date, 1), !test(date)) {} // eslint-disable-line no-empty\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(Math.floor(date / durationSecond) * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(Math.floor(date / durationMinute) * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute} from \"./duration\";\n\nvar hour = interval(function(date) {\n var offset = date.getTimezoneOffset() * durationMinute % durationHour;\n if (offset < 0) offset += durationHour;\n date.setTime(Math.floor((+date - offset) / durationHour) * durationHour + offset);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval\";\nimport {durationWeek} from \"./duration\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {timeDay, timeSunday, timeMonday, timeYear, utcDay, utcSunday, utcMonday, utcYear} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"S\": formatSeconds,\n \"U\": formatWeekNumberSunday,\n \"w\": formatWeekdayNumber,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"S\": formatUTCSeconds,\n \"U\": formatUTCWeekNumberSunday,\n \"w\": formatUTCWeekdayNumber,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"S\": parseSeconds,\n \"U\": parseWeekNumberSunday,\n \"w\": parseWeekdayNumber,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0);\n if (i != string.length) return null;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n var day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?:\\:?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekdayNumber(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekdayNumber(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {timeFormat} from \"d3-time-format\";\n\nexport default function(dom, data) {\n\n data.authors = data.authors || [];\n\n // paths\n data.url = \"http://distill.pub/\" + data.distillPath;\n data.githubUrl = \"https://github.com/\" + data.githubPath;\n\n // Homepage\n //data.homepage = !post.noHomepage;\n data.journal = data.journal || {};\n\n // Dates\n if (data.publishedDate){//} && data.journal) {\n data.volume = data.publishedDate.getFullYear() - 2015;\n data.issue = data.publishedDate.getMonth() + 1;\n }\n\n data.publishedDate = data.publishedDate ? data.publishedDate : new Date(\"Invalid\");\n data.updatedDate = data.updatedDate ? data.updatedDate : new Date(\"Invalid\");\n\n data.publishedDateRFC\n let RFC = timeFormat(\"%a, %d %b %Y %H:%M:%S %Z\");\n let months = [\"Jan\", \"Feb\", \"March\", \"April\", \"May\", \"June\", \"July\", \"Aug\", \"Sept\", \"Oct\", \"Nov\", \"Dec\"];\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n data.publishedDateRFC = RFC(data.publishedDate);\n data.publishedYear = data.publishedDate.getFullYear();\n data.publishedMonth = months[data.publishedDate.getMonth()];\n data.publishedDay = data.publishedDate.getDate();\n data.publishedMonthPadded = zeroPad(data.publishedDate.getMonth() + 1);\n data.publishedDayPadded = zeroPad(data.publishedDate.getDate());\n data.updatedDateRFC = RFC(data.updatedDate);\n\n if (data.authors.length > 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \", et al.\";\n } else if (data.authors.length === 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \" & \" + data.authors[1].lastName;\n } else if (data.authors.length === 1) {\n data.concatenatedAuthors = data.authors[0].lastName\n }\n\n data.bibtexAuthors = data.authors.map(function(author){\n return author.lastName + \", \" + author.firstName;\n }).join(\" and \");\n\n data.slug = data.authors.length ? data.authors[0].lastName.toLowerCase() + data.publishedYear + data.title.split(\" \")[0].toLowerCase() : \"Untitled\";\n\n}\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","import favicon from './distill-favicon.base64';\nimport escape from 'escape-html';\n\nexport default function(dom, data) {\n let head = dom.querySelector(\"head\");\n let appendHead = html => appendHtml(head, html);\n\n function meta(name, content, force) {\n if (content || force)\n appendHead(` \\n`);\n }\n\n appendHead(`\n \n \n \n \n ${data.title}\n `);\n\n appendHead(`\n \n \n \n `);\n data.authors.forEach((a) => {\n appendHtml(head, `\n `)\n });\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n // if this is a proprer article, generate Google Scholar meta data\n if (data.doiSuffix){\n appendHead(`\n \\n`);\n\n meta(\"citation_title\", data.title);\n //meta(\"citation_fulltext_html_url\", data.url);\n meta(\"citation_volume\", data.volume);\n meta(\"citation_issue\", data.issue);\n meta(\"citation_firstpage\", data.doiSuffix? `e${data.doiSuffix}` : undefined);\n meta(\"citation_doi\", data.doi);\n\n let journal = data.journal || {};\n meta(\"citation_journal_title\", journal.full_title || journal.title);\n meta(\"citation_journal_abbrev\", journal.abbrev_title);\n meta(\"citation_issn\", journal.issn);\n meta(\"citation_publisher\", journal.publisher);\n meta(\"citation_fulltext_world_readable\", \"\", true);\n\n if (data.publishedDate){\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n meta(\"citation_online_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n // Should we do something different here?\n meta(\"citation_publication_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n }\n\n (data.authors || []).forEach((a) => {\n meta(\"citation_author\", `${a.lastName}, ${a.firstName}`);\n meta(\"citation_author_institution\", a.affiliation);\n });\n\n if (data.citations) {\n data.citations.forEach(key => {\n let d = data.bibliography[key];\n if(!d) {\n console.warn(\"No bibliography data fround for \" + key)\n } else {\n meta(\"citation_reference\", citation_meta_content(data.bibliography[key]) )\n };\n });\n }\n }\n}\n\nfunction appendHtml(el, html) {\n el.innerHTML += html;\n}\n\nfunction citation_meta_content(ref){\n // Special test for arxiv\n var content = `citation_title=${ref.title};`;\n \n let name_strings = ref.author.split(\" and \").forEach(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1].trim();\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n content += `citation_author=${firsts} ${last};`;\n });\n \n if (\"year\" in ref) {\n content += `citation_publication_date=${ref.year};`;\n }\n \n var arxiv_id_search = /https?:\\/\\/arxiv\\.org\\/pdf\\/([0-9]*\\.[0-9]*)\\.pdf/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /https?:\\/\\/arxiv\\.org\\/abs\\/([0-9]*\\.[0-9]*)/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /arXiv preprint arXiv:([0-9]*\\.[0-9]*)/.exec(ref.journal);\n if (arxiv_id_search && arxiv_id_search[1]){\n content += `citation_arxiv_id=${arxiv_id_search[1]};`;\n return content;\n }\n if (\"journal\" in ref){\n content += `citation_journal_title=${ref.journal};`;\n }\n if (\"volume\" in ref) {\n content += `citation_volume=${ref.volume};`;\n }\n if (\"issue\" in ref || \"number\" in ref){\n content += `citation_number=${ref.issue || ref.number};`;\n }\n /*content += `citation_first_page=${};`;\n content += `citation_publication_date=${};`;*/\n return content;\n}\n","const html = `\n\n
    This article is a draft, awaiting review for publication in Distill
    \n`;\n\nexport default function(dom, data) {\n let banner = dom.createElement(\"dt-banner\");\n banner.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(banner, b.firstChild);\n banner.addEventListener(\"click\", function() {\n banner.style.display = \"none\";\n });\n}\n","/*!\n * mustache.js - Logic-less {{mustache}} templates with JavaScript\n * http://github.com/janl/mustache.js\n */\n\n/*global define: false Mustache: true*/\n\n(function defineMustache (global, factory) {\n if (typeof exports === 'object' && exports && typeof exports.nodeName !== 'string') {\n factory(exports); // CommonJS\n } else if (typeof define === 'function' && define.amd) {\n define(['exports'], factory); // AMD\n } else {\n global.Mustache = {};\n factory(global.Mustache); // script, wsh, asp\n }\n}(this, function mustacheFactory (mustache) {\n\n var objectToString = Object.prototype.toString;\n var isArray = Array.isArray || function isArrayPolyfill (object) {\n return objectToString.call(object) === '[object Array]';\n };\n\n function isFunction (object) {\n return typeof object === 'function';\n }\n\n /**\n * More correct typeof string handling array\n * which normally returns typeof 'object'\n */\n function typeStr (obj) {\n return isArray(obj) ? 'array' : typeof obj;\n }\n\n function escapeRegExp (string) {\n return string.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n }\n\n /**\n * Null safe way of checking whether or not an object,\n * including its prototype, has a given property\n */\n function hasProperty (obj, propName) {\n return obj != null && typeof obj === 'object' && (propName in obj);\n }\n\n // Workaround for https://issues.apache.org/jira/browse/COUCHDB-577\n // See https://github.com/janl/mustache.js/issues/189\n var regExpTest = RegExp.prototype.test;\n function testRegExp (re, string) {\n return regExpTest.call(re, string);\n }\n\n var nonSpaceRe = /\\S/;\n function isWhitespace (string) {\n return !testRegExp(nonSpaceRe, string);\n }\n\n var entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n function escapeHtml (string) {\n return String(string).replace(/[&<>\"'`=\\/]/g, function fromEntityMap (s) {\n return entityMap[s];\n });\n }\n\n var whiteRe = /\\s*/;\n var spaceRe = /\\s+/;\n var equalsRe = /\\s*=/;\n var curlyRe = /\\s*\\}/;\n var tagRe = /#|\\^|\\/|>|\\{|&|=|!/;\n\n /**\n * Breaks up the given `template` string into a tree of tokens. If the `tags`\n * argument is given here it must be an array with two string values: the\n * opening and closing tags used in the template (e.g. [ \"<%\", \"%>\" ]). Of\n * course, the default is to use mustaches (i.e. mustache.tags).\n *\n * A token is an array with at least 4 elements. The first element is the\n * mustache symbol that was used inside the tag, e.g. \"#\" or \"&\". If the tag\n * did not contain a symbol (i.e. {{myValue}}) this element is \"name\". For\n * all text that appears outside a symbol this element is \"text\".\n *\n * The second element of a token is its \"value\". For mustache tags this is\n * whatever else was inside the tag besides the opening symbol. For text tokens\n * this is the text itself.\n *\n * The third and fourth elements of the token are the start and end indices,\n * respectively, of the token in the original template.\n *\n * Tokens that are the root node of a subtree contain two more elements: 1) an\n * array of tokens in the subtree and 2) the index in the original template at\n * which the closing tag for that section begins.\n */\n function parseTemplate (template, tags) {\n if (!template)\n return [];\n\n var sections = []; // Stack to hold section tokens\n var tokens = []; // Buffer to hold the tokens\n var spaces = []; // Indices of whitespace tokens on the current line\n var hasTag = false; // Is there a {{tag}} on the current line?\n var nonSpace = false; // Is there a non-space char on the current line?\n\n // Strips all whitespace tokens array for the current line\n // if there was a {{#tag}} on it and otherwise only space.\n function stripSpace () {\n if (hasTag && !nonSpace) {\n while (spaces.length)\n delete tokens[spaces.pop()];\n } else {\n spaces = [];\n }\n\n hasTag = false;\n nonSpace = false;\n }\n\n var openingTagRe, closingTagRe, closingCurlyRe;\n function compileTags (tagsToCompile) {\n if (typeof tagsToCompile === 'string')\n tagsToCompile = tagsToCompile.split(spaceRe, 2);\n\n if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)\n throw new Error('Invalid tags: ' + tagsToCompile);\n\n openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\\\s*');\n closingTagRe = new RegExp('\\\\s*' + escapeRegExp(tagsToCompile[1]));\n closingCurlyRe = new RegExp('\\\\s*' + escapeRegExp('}' + tagsToCompile[1]));\n }\n\n compileTags(tags || mustache.tags);\n\n var scanner = new Scanner(template);\n\n var start, type, value, chr, token, openSection;\n while (!scanner.eos()) {\n start = scanner.pos;\n\n // Match any text between tags.\n value = scanner.scanUntil(openingTagRe);\n\n if (value) {\n for (var i = 0, valueLength = value.length; i < valueLength; ++i) {\n chr = value.charAt(i);\n\n if (isWhitespace(chr)) {\n spaces.push(tokens.length);\n } else {\n nonSpace = true;\n }\n\n tokens.push([ 'text', chr, start, start + 1 ]);\n start += 1;\n\n // Check for whitespace on the current line.\n if (chr === '\\n')\n stripSpace();\n }\n }\n\n // Match the opening tag.\n if (!scanner.scan(openingTagRe))\n break;\n\n hasTag = true;\n\n // Get the tag type.\n type = scanner.scan(tagRe) || 'name';\n scanner.scan(whiteRe);\n\n // Get the tag value.\n if (type === '=') {\n value = scanner.scanUntil(equalsRe);\n scanner.scan(equalsRe);\n scanner.scanUntil(closingTagRe);\n } else if (type === '{') {\n value = scanner.scanUntil(closingCurlyRe);\n scanner.scan(curlyRe);\n scanner.scanUntil(closingTagRe);\n type = '&';\n } else {\n value = scanner.scanUntil(closingTagRe);\n }\n\n // Match the closing tag.\n if (!scanner.scan(closingTagRe))\n throw new Error('Unclosed tag at ' + scanner.pos);\n\n token = [ type, value, start, scanner.pos ];\n tokens.push(token);\n\n if (type === '#' || type === '^') {\n sections.push(token);\n } else if (type === '/') {\n // Check section nesting.\n openSection = sections.pop();\n\n if (!openSection)\n throw new Error('Unopened section \"' + value + '\" at ' + start);\n\n if (openSection[1] !== value)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + start);\n } else if (type === 'name' || type === '{' || type === '&') {\n nonSpace = true;\n } else if (type === '=') {\n // Set the tags for the next time around.\n compileTags(value);\n }\n }\n\n // Make sure there are no open sections when we're done.\n openSection = sections.pop();\n\n if (openSection)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + scanner.pos);\n\n return nestTokens(squashTokens(tokens));\n }\n\n /**\n * Combines the values of consecutive text tokens in the given `tokens` array\n * to a single token.\n */\n function squashTokens (tokens) {\n var squashedTokens = [];\n\n var token, lastToken;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n if (token) {\n if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {\n lastToken[1] += token[1];\n lastToken[3] = token[3];\n } else {\n squashedTokens.push(token);\n lastToken = token;\n }\n }\n }\n\n return squashedTokens;\n }\n\n /**\n * Forms the given array of `tokens` into a nested tree structure where\n * tokens that represent a section have two additional items: 1) an array of\n * all tokens that appear in that section and 2) the index in the original\n * template that represents the end of that section.\n */\n function nestTokens (tokens) {\n var nestedTokens = [];\n var collector = nestedTokens;\n var sections = [];\n\n var token, section;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n switch (token[0]) {\n case '#':\n case '^':\n collector.push(token);\n sections.push(token);\n collector = token[4] = [];\n break;\n case '/':\n section = sections.pop();\n section[5] = token[2];\n collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;\n break;\n default:\n collector.push(token);\n }\n }\n\n return nestedTokens;\n }\n\n /**\n * A simple string scanner that is used by the template parser to find\n * tokens in template strings.\n */\n function Scanner (string) {\n this.string = string;\n this.tail = string;\n this.pos = 0;\n }\n\n /**\n * Returns `true` if the tail is empty (end of string).\n */\n Scanner.prototype.eos = function eos () {\n return this.tail === '';\n };\n\n /**\n * Tries to match the given regular expression at the current position.\n * Returns the matched text if it can match, the empty string otherwise.\n */\n Scanner.prototype.scan = function scan (re) {\n var match = this.tail.match(re);\n\n if (!match || match.index !== 0)\n return '';\n\n var string = match[0];\n\n this.tail = this.tail.substring(string.length);\n this.pos += string.length;\n\n return string;\n };\n\n /**\n * Skips all text until the given regular expression can be matched. Returns\n * the skipped string, which is the entire tail if no match can be made.\n */\n Scanner.prototype.scanUntil = function scanUntil (re) {\n var index = this.tail.search(re), match;\n\n switch (index) {\n case -1:\n match = this.tail;\n this.tail = '';\n break;\n case 0:\n match = '';\n break;\n default:\n match = this.tail.substring(0, index);\n this.tail = this.tail.substring(index);\n }\n\n this.pos += match.length;\n\n return match;\n };\n\n /**\n * Represents a rendering context by wrapping a view object and\n * maintaining a reference to the parent context.\n */\n function Context (view, parentContext) {\n this.view = view;\n this.cache = { '.': this.view };\n this.parent = parentContext;\n }\n\n /**\n * Creates a new context using the given view with this context\n * as the parent.\n */\n Context.prototype.push = function push (view) {\n return new Context(view, this);\n };\n\n /**\n * Returns the value of the given name in this context, traversing\n * up the context hierarchy if the value is absent in this context's view.\n */\n Context.prototype.lookup = function lookup (name) {\n var cache = this.cache;\n\n var value;\n if (cache.hasOwnProperty(name)) {\n value = cache[name];\n } else {\n var context = this, names, index, lookupHit = false;\n\n while (context) {\n if (name.indexOf('.') > 0) {\n value = context.view;\n names = name.split('.');\n index = 0;\n\n /**\n * Using the dot notion path in `name`, we descend through the\n * nested objects.\n *\n * To be certain that the lookup has been successful, we have to\n * check if the last object in the path actually has the property\n * we are looking for. We store the result in `lookupHit`.\n *\n * This is specially necessary for when the value has been set to\n * `undefined` and we want to avoid looking up parent contexts.\n **/\n while (value != null && index < names.length) {\n if (index === names.length - 1)\n lookupHit = hasProperty(value, names[index]);\n\n value = value[names[index++]];\n }\n } else {\n value = context.view[name];\n lookupHit = hasProperty(context.view, name);\n }\n\n if (lookupHit)\n break;\n\n context = context.parent;\n }\n\n cache[name] = value;\n }\n\n if (isFunction(value))\n value = value.call(this.view);\n\n return value;\n };\n\n /**\n * A Writer knows how to take a stream of tokens and render them to a\n * string, given a context. It also maintains a cache of templates to\n * avoid the need to parse the same template twice.\n */\n function Writer () {\n this.cache = {};\n }\n\n /**\n * Clears all cached templates in this writer.\n */\n Writer.prototype.clearCache = function clearCache () {\n this.cache = {};\n };\n\n /**\n * Parses and caches the given `template` and returns the array of tokens\n * that is generated from the parse.\n */\n Writer.prototype.parse = function parse (template, tags) {\n var cache = this.cache;\n var tokens = cache[template];\n\n if (tokens == null)\n tokens = cache[template] = parseTemplate(template, tags);\n\n return tokens;\n };\n\n /**\n * High-level method that is used to render the given `template` with\n * the given `view`.\n *\n * The optional `partials` argument may be an object that contains the\n * names and templates of partials that are used in the template. It may\n * also be a function that is used to load partial templates on the fly\n * that takes a single argument: the name of the partial.\n */\n Writer.prototype.render = function render (template, view, partials) {\n var tokens = this.parse(template);\n var context = (view instanceof Context) ? view : new Context(view);\n return this.renderTokens(tokens, context, partials, template);\n };\n\n /**\n * Low-level method that renders the given array of `tokens` using\n * the given `context` and `partials`.\n *\n * Note: The `originalTemplate` is only ever used to extract the portion\n * of the original template that was contained in a higher-order section.\n * If the template doesn't use higher-order sections, this argument may\n * be omitted.\n */\n Writer.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate) {\n var buffer = '';\n\n var token, symbol, value;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n value = undefined;\n token = tokens[i];\n symbol = token[0];\n\n if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate);\n else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate);\n else if (symbol === '>') value = this.renderPartial(token, context, partials, originalTemplate);\n else if (symbol === '&') value = this.unescapedValue(token, context);\n else if (symbol === 'name') value = this.escapedValue(token, context);\n else if (symbol === 'text') value = this.rawValue(token);\n\n if (value !== undefined)\n buffer += value;\n }\n\n return buffer;\n };\n\n Writer.prototype.renderSection = function renderSection (token, context, partials, originalTemplate) {\n var self = this;\n var buffer = '';\n var value = context.lookup(token[1]);\n\n // This function is used to render an arbitrary template\n // in the current context by higher-order sections.\n function subRender (template) {\n return self.render(template, context, partials);\n }\n\n if (!value) return;\n\n if (isArray(value)) {\n for (var j = 0, valueLength = value.length; j < valueLength; ++j) {\n buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate);\n }\n } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {\n buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate);\n } else if (isFunction(value)) {\n if (typeof originalTemplate !== 'string')\n throw new Error('Cannot use higher-order sections without the original template');\n\n // Extract the portion of the original template that the section contains.\n value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);\n\n if (value != null)\n buffer += value;\n } else {\n buffer += this.renderTokens(token[4], context, partials, originalTemplate);\n }\n return buffer;\n };\n\n Writer.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate) {\n var value = context.lookup(token[1]);\n\n // Use JavaScript's definition of falsy. Include empty arrays.\n // See https://github.com/janl/mustache.js/issues/186\n if (!value || (isArray(value) && value.length === 0))\n return this.renderTokens(token[4], context, partials, originalTemplate);\n };\n\n Writer.prototype.renderPartial = function renderPartial (token, context, partials) {\n if (!partials) return;\n\n var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\n if (value != null)\n return this.renderTokens(this.parse(value), context, partials, value);\n };\n\n Writer.prototype.unescapedValue = function unescapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return value;\n };\n\n Writer.prototype.escapedValue = function escapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return mustache.escape(value);\n };\n\n Writer.prototype.rawValue = function rawValue (token) {\n return token[1];\n };\n\n mustache.name = 'mustache.js';\n mustache.version = '2.3.0';\n mustache.tags = [ '{{', '}}' ];\n\n // All high-level mustache.* functions use this writer.\n var defaultWriter = new Writer();\n\n /**\n * Clears all cached templates in the default writer.\n */\n mustache.clearCache = function clearCache () {\n return defaultWriter.clearCache();\n };\n\n /**\n * Parses and caches the given template in the default writer and returns the\n * array of tokens it contains. Doing this ahead of time avoids the need to\n * parse templates on the fly as they are rendered.\n */\n mustache.parse = function parse (template, tags) {\n return defaultWriter.parse(template, tags);\n };\n\n /**\n * Renders the `template` with the given `view` and `partials` using the\n * default writer.\n */\n mustache.render = function render (template, view, partials) {\n if (typeof template !== 'string') {\n throw new TypeError('Invalid template! Template should be a \"string\" ' +\n 'but \"' + typeStr(template) + '\" was given as the first ' +\n 'argument for mustache#render(template, view, partials)');\n }\n\n return defaultWriter.render(template, view, partials);\n };\n\n // This is here for backwards compatibility with 0.4.x.,\n /*eslint-disable */ // eslint wants camel cased function name\n mustache.to_html = function to_html (template, view, partials, send) {\n /*eslint-enable*/\n\n var result = mustache.render(template, view, partials);\n\n if (isFunction(send)) {\n send(result);\n } else {\n return result;\n }\n };\n\n // Export the escaping function so that the user may override it.\n // See https://github.com/janl/mustache.js/issues/244\n mustache.escape = escapeHtml;\n\n // Export these mainly for testing, but also for advanced usage.\n mustache.Scanner = Scanner;\n mustache.Context = Context;\n mustache.Writer = Writer;\n\n return mustache;\n}));\n","import mustache from \"mustache\";\n\nconst html = `\n\n\n`;\n\nconst template = `\n
    \n
    \n {{#authors}}\n
    \n {{#personalURL}}\n {{name}}\n {{/personalURL}}\n {{^personalURL}}\n
    {{name}}
    \n {{/personalURL}}\n {{#affiliation}}\n {{#affiliationURL}}\n {{affiliation}}\n {{/affiliationURL}}\n {{^affiliationURL}}\n
    {{affiliation}}
    \n {{/affiliationURL}}\n {{/affiliation}}\n
    \n {{/authors}}\n
    \n
    \n
    {{publishedMonth}}. {{publishedDay}}
    \n
    {{publishedYear}}
    \n
    \n \n
    Citation:
    \n
    {{concatenatedAuthors}}, {{publishedYear}}
    \n
    \n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-byline');\n if (el) {\n el.innerHTML = html + mustache.render(template, data);\n }\n}\n","const html = `\n\n\n
    \n

    References

    \n \n

    Errors, Reuse, and Citation

    \n

    If you see mistakes or want to suggest changes, please create an issue on GitHub.

    \n

    Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on GitHub. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: “Figure from …”.

    \n

    For attribution in academic contexts, please cite this work as

    \n
    \n  

    BibTeX citation

    \n
    \n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-appendix')\n if (el) {\n let oldHtml = el.innerHTML;\n el.innerHTML = html;\n let div = el.querySelector(\"div.l-body\")\n\n if (dom.querySelector(\"dt-fn\")) {\n div.innerHTML = `

    Footnotes

    ` + div.innerHTML;\n }\n\n div.innerHTML = oldHtml + div.innerHTML;\n if (data.githubCompareUpdatesUrl) {\n div.innerHTML = `

    Updates

    View all changes to this article since it was first published.

    ` + div.innerHTML;\n }\n\n el.querySelector(\"a.github\").setAttribute(\"href\", data.githubUrl);\n el.querySelector(\"a.github-issue\").setAttribute(\"href\", data.githubUrl + \"/issues/new\");\n el.querySelector(\".citation.short\").textContent = data.concatenatedAuthors + \", \" + '\"' + data.title + '\", Distill, ' + data.publishedYear + \".\";\n var bibtex = \"@article{\" + data.slug + \",\\n\";\n bibtex += \" author = {\" + data.bibtexAuthors + \"},\\n\";\n bibtex += \" title = {\" + data.title + \"},\\n\";\n bibtex += \" journal = {Distill},\\n\";\n bibtex += \" year = {\" + data.publishedYear + \"},\\n\";\n bibtex += \" note = {\" + data.url + \"}\\n\";\n bibtex += \"}\";\n el.querySelector(\".citation.long\").textContent = bibtex;\n }\n\n}\n","export default function(dom, data) {\n let css = `\n dt-cite {\n color: hsla(206, 90%, 20%, 0.7);\n }\n dt-cite .citation-number {\n cursor: default;\n white-space: nowrap;\n font-family: -apple-system, BlinkMacSystemFont, \"Roboto\", Helvetica, sans-serif;\n font-size: 75%;\n color: hsla(206, 90%, 20%, 0.7);\n display: inline-block;\n line-height: 1.1em;\n text-align: center;\n position: relative;\n top: -2px;\n margin: 0 2px;\n }\n figcaption dt-cite .citation-number {\n font-size: 11px;\n font-weight: normal;\n top: -2px;\n line-height: 1em;\n }\n `;\n\n let style = dom.createElement(\"style\");\n style.textContent = css;\n dom.querySelector(\"body\").appendChild(style);\n\n let citations = data.citations;\n /*if (data.citations) {\n citations = Object.keys(data.citations).map(c => data.citations[c]);\n citations.sort((a, b) => {\n return a.author.localeCompare(b.author);\n });\n }*/\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach((el,n) => {\n var key = el.getAttribute(\"key\");\n if (key) {\n var keys = key.split(\",\");\n var cite_string = inline_cite_short(keys);\n var cite_hover_str = \"\";\n keys.map((key,n) => {\n if (n>0) cite_hover_str += \"

    \";\n cite_hover_str += hover_cite(data.bibliography[key]);\n });\n cite_hover_str = cite_hover_str.replace(/\"/g, \"'\")\n var orig_string = el.innerHTML;\n if (orig_string != \"\") orig_string += \" \";\n el.innerHTML = `${orig_string}${cite_string}`;\n }\n });\n\n let bibEl = dom.querySelector(\"dt-bibliography\");\n if (bibEl) {\n let ol = dom.createElement(\"ol\");\n citations.forEach(key => {\n let el = dom.createElement(\"li\");\n el.innerHTML = bibliography_cite(data.bibliography[key]);\n ol.appendChild(el);\n })\n bibEl.appendChild(ol);\n }\n\n function inline_cite_short(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var n = data.citations.indexOf(key)+1;\n return \"\"+n;\n } else {\n return \"?\";\n }\n }\n return \"[\"+keys.map(cite_string).join(\", \")+\"]\";\n }\n\n function inline_cite_long(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var ent = data.bibliography[key];\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var year = ent.year;\n if (names.length == 1) return names[0] + \", \" + year;\n if (names.length == 2) return names[0] + \" & \" + names[1] + \", \" + year;\n if (names.length > 2) return names[0] + \", et al., \" + year;\n } else {\n return \"?\";\n }\n }\n return keys.map(cite_string).join(\", \");\n }\n\n function author_string(ent, template, sep, finalSep){\n var names = ent.author.split(\" and \");\n let name_strings = names.map(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1];\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n var initials = \"\";\n if (firsts != undefined) {\n initials = firsts.trim().split(\" \").map(s => s.trim()[0]);\n initials = initials.join(\".\")+\".\";\n }\n return template.replace(\"${F}\", firsts)\n .replace(\"${L}\", last)\n .replace(\"${I}\", initials);\n });\n if (names.length > 1) {\n var str = name_strings.slice(0, names.length-1).join(sep);\n str += (finalSep || sep) + name_strings[names.length-1];\n return str;\n } else {\n return name_strings[0];\n }\n }\n\n function venue_string(ent) {\n var cite = (ent.journal || ent.booktitle || \"\")\n if (\"volume\" in ent){\n var issue = ent.issue || ent.number;\n issue = (issue != undefined)? \"(\"+issue+\")\" : \"\";\n cite += \", Vol \" + ent.volume + issue;\n }\n if (\"pages\" in ent){\n cite += \", pp. \" + ent.pages\n }\n if (cite != \"\") cite += \". \"\n if (\"publisher\" in ent){\n cite += ent.publisher;\n if (cite[cite.length-1] != \".\") cite += \".\";\n }\n return cite;\n }\n\n function link_string(ent){\n if (\"url\" in ent){\n var url = ent.url;\n var arxiv_match = (/arxiv\\.org\\/abs\\/([0-9\\.]*)/).exec(url);\n if (arxiv_match != null){\n url = `http://arxiv.org/pdf/${arxiv_match[1]}.pdf`;\n }\n\n if (url.slice(-4) == \".pdf\"){\n var label = \"PDF\";\n } else if (url.slice(-5) == \".html\") {\n var label = \"HTML\";\n }\n return `  [${label||\"link\"}]`;\n }/* else if (\"doi\" in ent){\n return `  [DOI]`;\n }*/ else {\n return \"\";\n }\n }\n function doi_string(ent, new_line){\n if (\"doi\" in ent) {\n return `${new_line?\"
    \":\"\"} DOI: ${ent.doi}`;\n } else {\n return \"\";\n }\n }\n\n function bibliography_cite(ent, fancy){\n if (ent){\n var cite = \"\" + ent.title + \" \"\n cite += link_string(ent) + \"
    \";\n cite += author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += venue_string(ent);\n cite += doi_string(ent);\n return cite\n /*var cite = author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += \"\" + ent.title + \". \";\n cite += venue_string(ent);\n cite += doi_string(ent);\n cite += link_string(ent);\n return cite*/\n } else {\n return \"?\";\n }\n }\n\n function hover_cite(ent){\n if (ent){\n var cite = \"\";\n cite += \"\" + ent.title + \"\";\n cite += link_string(ent);\n cite += \"
    \"\n\n var a_str = author_string(ent, \"${I} ${L}\", \", \") + \".\";\n var v_str = venue_string(ent).trim() + \" \" + ent.year + \". \" + doi_string(ent, true);\n\n if ((a_str+v_str).length < Math.min(40, ent.title.length)) {\n cite += a_str + \" \" + v_str;\n } else {\n cite += a_str + \"
    \" + v_str;\n }\n return cite;\n } else {\n return \"?\";\n }\n }\n\n\n //https://scholar.google.com/scholar?q=allintitle%3ADocument+author%3Aolah\n function get_GS_URL(ent){\n if (ent){\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var title = ent.title.split(\" \")//.replace(/[,:]/, \"\")\n var url = \"http://search.labs.crossref.org/dois?\"//\"\"https://scholar.google.com/scholar?\"\n url += uris({q: names.join(\" \") + \" \" + title.join(\" \")})\n }\n\n }\n}\n","export default function(dom, data) {\n\n var fnTags = [].slice.apply(dom.querySelectorAll(\"dt-fn\"));\n var fnContent = [];\n fnTags.forEach((el,n) => {\n var content = el.innerHTML;\n fnContent.push(content);\n n = (n+1)+\"\";\n var key = \"fn-\"+n;\n var escaped_content = content.replace(/\"/g, \"'\");\n el.innerHTML = `${n}`;\n });\n\n let fnList = dom.querySelector(\"dt-fn-list\");\n if (fnList) {\n let ol = dom.createElement(\"ol\");\n fnContent.forEach(content => {\n let el = dom.createElement(\"li\");\n el.innerHTML = content;\n ol.appendChild(el);\n })\n fnList.appendChild(ol);\n }\n\n}\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n */\n\n;(function() {\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^( *[-*_]){3,} *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,\n nptable: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n blockquote: /^( *>[^\\n]+(\\n(?!def)[^\\n]+)*\\n*)+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n table: noop,\n paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,\n text: /^[^\\n]+/\n};\n\nblock.bullet = /(?:[*+-]|\\d+\\.)/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = replace(block.item, 'gm')\n (/bull/g, block.bullet)\n ();\n\nblock.list = replace(block.list)\n (/bull/g, block.bullet)\n ('hr', '\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))')\n ('def', '\\\\n+(?=' + block.def.source + ')')\n ();\n\nblock.blockquote = replace(block.blockquote)\n ('def', block.def)\n ();\n\nblock._tag = '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'\n + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'\n + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|[^\\\\w\\\\s@]*@)\\\\b';\n\nblock.html = replace(block.html)\n ('comment', //)\n ('closed', /<(tag)[\\s\\S]+?<\\/\\1>/)\n ('closing', /])*?>/)\n (/tag/g, block._tag)\n ();\n\nblock.paragraph = replace(block.paragraph)\n ('hr', block.hr)\n ('heading', block.heading)\n ('lheading', block.lheading)\n ('blockquote', block.blockquote)\n ('tag', '<' + block._tag)\n ('def', block.def)\n ();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]*?)\\s*\\1 *(?:\\n+|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = replace(block.paragraph)\n ('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n ();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top, bq) {\n var src = src.replace(/^ +$/gm, '')\n , next\n , loose\n , cap\n , bull\n , b\n , item\n , space\n , i\n , l;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic\n ? cap.replace(/\\n+$/, '')\n : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top, true);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n\n this.tokens.push({\n type: 'list_start',\n ordered: bull.length > 1\n });\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n this.tokens.push({\n type: loose\n ? 'loose_item_start'\n : 'list_item_start'\n });\n\n // Recurse.\n this.token(item, false, bq);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if ((!bq && top) && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.links[cap[1].toLowerCase()] = {\n href: cap[2],\n title: cap[3]\n };\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i]\n .replace(/^ *\\| *| *\\| *$/g, '')\n .split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n autolink: /^<([^ >]+(@|:\\/)[^ >]+)>/,\n url: noop,\n tag: /^|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^\\b_((?:[^_]|__)+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n code: /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n text: /^[\\s\\S]+?(?=[\\\\?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\ninline.link = replace(inline.link)\n ('inside', inline._inside)\n ('href', inline._href)\n ();\n\ninline.reflink = replace(inline.reflink)\n ('inside', inline._inside)\n ();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: replace(inline.escape)('])', '~|])')(),\n url: /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n text: replace(inline.text)\n (']|', '~]|')\n ('|', '|https?://|')\n ()\n});\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: replace(inline.br)('{2,}', '*')(),\n text: replace(inline.gfm.text)('{2,}', '*')()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer;\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new\n Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n var out = ''\n , link\n , text\n , href\n , cap;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += cap[1];\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = cap[1].charAt(6) === ':'\n ? this.mangle(cap[1].substring(7))\n : this.mangle(cap[1]);\n href = this.mangle('mailto:') + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n src = src.substring(cap[0].length);\n text = escape(cap[1]);\n href = text;\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^/i.test(cap[0])) {\n this.inLink = false;\n }\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0]\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out += this.outputLink(cap, {\n href: cap[2],\n title: cap[3]\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2], true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = escape(link.href)\n , title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = ''\n , l = text.length\n , i = 0\n , ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || {};\n}\n\nRenderer.prototype.code = function(code, lang, escaped) {\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '\\n
    ';\n }\n\n return '
    '\n    + (escaped ? code : escape(code, true))\n    + '\\n
    \\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '
    \\n' + quote + '
    \\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw) {\n return ''\n + text\n + '\\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n};\n\nRenderer.prototype.list = function(body, ordered) {\n var type = ordered ? 'ol' : 'ul';\n return '<' + type + '>\\n' + body + '\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '
  • ' + text + '
  • \\n';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '

    ' + text + '

    \\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + '\\n'\n + body\n + '\\n'\n + '
    \\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '\\n' + content + '\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' style=\"text-align:' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.em = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? '
    ' : '
    ';\n};\n\nRenderer.prototype.del = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n if (this.options.sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return '';\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0) {\n return '';\n }\n }\n var out = '
    ';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n var out = '\"'' : '>';\n return out;\n};\n\nRenderer.prototype.text = function(text) {\n return text;\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer;\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options, renderer) {\n var parser = new Parser(options, renderer);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options, this.renderer);\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n this.token.text);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = ''\n , body = ''\n , i\n , row\n , cell\n , flags\n , j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n flags = { header: true, align: this.token.align[i] };\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n var body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n var body = ''\n , ordered = this.token.ordered;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered);\n }\n case 'list_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'loose_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'html': {\n var html = !this.token.pre && !this.options.pedantic\n ? this.inline.output(this.token.text)\n : this.token.text;\n return this.renderer.html(html);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n }\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n return html\n .replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\nfunction unescape(html) {\n\t// explicitly match decimal, hex, and named HTML entities \n return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/g, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction replace(regex, opt) {\n regex = regex.source;\n opt = opt || '';\n return function self(name, val) {\n if (!name) return new RegExp(regex, opt);\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return self;\n };\n}\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1\n , target\n , key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n\n var highlight = opt.highlight\n , tokens\n , pending\n , i = 0;\n\n try {\n tokens = Lexer.lex(src, opt)\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/chjj/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occured:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n sanitizer: null,\n mangle: true,\n smartLists: false,\n silent: false,\n highlight: null,\n langPrefix: 'lang-',\n smartypants: false,\n headerPrefix: '',\n renderer: new Renderer,\n xhtml: false\n};\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.parse = marked;\n\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n this.marked = marked;\n}\n\n}).call(function() {\n return this || (typeof window !== 'undefined' ? window : global);\n}());\n","import marked from 'marked';\n\nmarked.setOptions({\n gfm: true,\n smartypants: true\n});\n\nexport default function(dom, data) {\n let markdownElements = [].slice.call(dom.querySelectorAll('[markdown]'));\n markdownElements.forEach(el => {\n let content = el.innerHTML;\n // Set default indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n\n el.innerHTML = marked(content);\n });\n}\n","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = _self.Prism = {\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/ text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\tbreak tokenloop;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t delNum = 1;\n\n\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t to = match.index + match[0].length,\n\t\t\t\t\t\t k = i,\n\t\t\t\t\t\t p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && p < to; ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t match = match[0].slice(lookbehindLength),\n\t\t\t\t\t to = from + match.length,\n\t\t\t\t\t before = str.slice(0, from),\n\t\t\t\t\t after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (env.type == 'comment') {\n\t\tenv.attributes['spellcheck'] = 'true';\n\t}\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n \t// In worker\n\t_self.addEventListener('message', function(evt) {\n\t\tvar message = JSON.parse(evt.data),\n\t\t lang = message.language,\n\t\t code = message.code,\n\t\t immediateClose = message.immediateClose;\n\n\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\tif (immediateClose) {\n\t\t\t_self.close();\n\t\t}\n\t}, false);\n\n\treturn _self.Prism;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (document.addEventListener && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': //,\n\t'prolog': /<\\?[\\w\\W]+?\\?>/,\n\t'doctype': //i,\n\t'cdata': //i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\w\\W])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:('|\")[\\w\\W]*?(\\1)|[^\\s>]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /[=>\"']/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\w\\W]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^\\{\\}\\s][^\\{\\};]*?(?=\\s*\\{)/,\n\t'string': {\n\t\tpattern: /(\"|')(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'property': /(\\b|\\B)[\\w-]+(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|').*?\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\w\\W]*?\\*\\//,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[a-z0-9_\\.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /(\\.|\\\\)/\n\t\t}\n\t},\n\t'keyword': /\\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(0x[\\dA-Fa-f]+|0b[01]+|0o[0-7]+|\\d*\\.?\\d+([Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*(?=\\()/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*\\*?|\\/|~|\\^|%|\\.{3}/\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[.+?]|\\\\.|[^/\\\\\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\\\\\|\\\\?[^\\\\])*?`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript'\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tif(Array.prototype.forEach) { // Check to prevent error in IE8\n\t\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\t\tvar language, parent = pre;\n\t\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\t\tparent = parent.parentNode;\n\t\t\t\t}\n\n\t\t\t\tif (parent) {\n\t\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t\t}\n\n\t\t\t\tif (!language) {\n\t\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t\t}\n\n\t\t\t\tvar code = document.createElement('code');\n\t\t\t\tcode.className = 'language-' + language;\n\n\t\t\t\tpre.textContent = '';\n\n\t\t\t\tcode.textContent = 'Loading…';\n\n\t\t\t\tpre.appendChild(code);\n\n\t\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\t\txhr.open('GET', src, true);\n\n\t\t\t\txhr.onreadystatechange = function () {\n\t\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\txhr.send(null);\n\t\t\t});\n\t\t}\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\n})();\n","import Prism from \"prismjs\";\n\nexport default function(dom, data) {\n let codeElements = [].slice.call(dom.querySelectorAll(\"dt-code\"));\n codeElements.forEach(el => {\n let content = el.textContent;\n el.innerHTML = \"\";\n let language = el.getAttribute(\"language\");\n let c = dom.createElement(\"code\");\n if (el.getAttribute(\"block\") === \"\") {\n // Let's normalize the tab indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n let p = dom.createElement(\"pre\");\n p.appendChild(c);\n el.appendChild(p);\n } else {\n el.appendChild(c);\n }\n let highlighted = content;\n if (Prism.languages[language]) {\n c.setAttribute(\"class\", \"language-\" + language);\n highlighted = Prism.highlight(content, Prism.languages[language]);\n }\n c.innerHTML = highlighted;\n });\n}\n","export default function(dom, data) {\n\n var textNodes = dom.createTreeWalker(\n dom.body,\n dom.defaultView.NodeFilter.SHOW_TEXT\n );\n while (textNodes.nextNode()) {\n var n = textNodes.currentNode,\n text = n.nodeValue;\n if (text && acceptNode(n)) {\n text = quotes(text);\n text = punctuation(text);\n n.nodeValue = text;\n }\n }\n}\n\nfunction acceptNode(node) {\n var parent = node.parentElement;\n var isMath = (parent && parent.getAttribute && parent.getAttribute(\"class\")) ? parent.getAttribute(\"class\").includes(\"katex\") || parent.getAttribute(\"class\").includes(\"MathJax\") : false;\n return parent &&\n parent.nodeName !== \"SCRIPT\" &&\n parent.nodeName !== \"STYLE\" &&\n parent.nodeName !== \"CODE\" &&\n parent.nodeName !== \"PRE\" &&\n parent.nodeName !== \"SPAN\" &&\n parent.nodeName !== \"DT-HEADER\" &&\n parent.nodeName !== \"DT-BYLINE\" &&\n parent.nodeName !== \"DT-MATH\" &&\n parent.nodeName !== \"DT-CODE\" &&\n parent.nodeName !== \"DT-BIBLIOGRAPHY\" &&\n parent.nodeName !== \"DT-FOOTER\" &&\n parent.nodeType !== 8 && //comment nodes\n !isMath;\n}\n\n\n/*!\n * typeset - Typesetting for the web\n * @version v0.1.6\n * @link https://github.com/davidmerfield/Typeset.js\n * @author David Merfield\n */\n // which has a CC0 license\n // http://creativecommons.org/publicdomain/zero/1.0/\n\n\nfunction punctuation(text){\n\n // Dashes\n text = text.replace(/--/g, '\\u2014');\n text = text.replace(/ \\u2014 /g,\"\\u2009\\u2014\\u2009\"); //this has thin spaces\n\n // Elipses\n text = text.replace(/\\.\\.\\./g,'…');\n\n // Nbsp for punc with spaces\n var NBSP = \"\\u00a0\";\n var NBSP_PUNCTUATION_START = /([«¿¡]) /g;\n var NBSP_PUNCTUATION_END = / ([\\!\\?:;\\.,‽»])/g;\n\n text = text.replace(NBSP_PUNCTUATION_START, '$1' + NBSP);\n text = text.replace(NBSP_PUNCTUATION_END, NBSP + '$1');\n\n return text;\n}\n\nfunction quotes(text) {\n\n text = text\n .replace(/(\\W|^)\"([^\\s\\!\\?:;\\.,‽»])/g, '$1\\u201c$2') // beginning \"\n .replace(/(\\u201c[^\"]*)\"([^\"]*$|[^\\u201c\"]*\\u201c)/g, '$1\\u201d$2') // ending \"\n .replace(/([^0-9])\"/g,'$1\\u201d') // remaining \" at end of word\n .replace(/(\\W|^)'(\\S)/g, '$1\\u2018$2') // beginning '\n .replace(/([a-z])'([a-z])/ig, '$1\\u2019$2') // conjunction's possession\n .replace(/((\\u2018[^']*)|[a-z])'([^0-9]|$)/ig, '$1\\u2019$3') // ending '\n .replace(/(\\u2018)([0-9]{2}[^\\u2019]*)(\\u2018([^0-9]|$)|$|\\u2019[a-z])/ig, '\\u2019$2$3') // abbrev. years like '93\n .replace(/(\\B|^)\\u2018(?=([^\\u2019]*\\u2019\\b)*([^\\u2019\\u2018]*\\W[\\u2019\\u2018]\\b|[^\\u2019\\u2018]*$))/ig, '$1\\u2019') // backwards apostrophe\n .replace(/'''/g, '\\u2034') // triple prime\n .replace(/(\"|'')/g, '\\u2033') // double prime\n .replace(/'/g, '\\u2032');\n\n // Allow escaped quotes\n text = text.replace(/\\\\“/, '\\\"');\n text = text.replace(/\\\\”/, '\\\"');\n text = text.replace(/\\\\’/, '\\'');\n text = text.replace(/\\\\‘/, '\\'');\n\n return text;\n}\n\nfunction ligatures(text){\n\n text = text.replace(/fi/g, 'fi');\n text = text.replace(/fl/g, 'fl');\n\n return text;\n};\n","import code from './hover-box.txt';\n\nexport default function(dom) {\n let s = dom.createElement(\"script\");\n s.textContent = code;\n dom.querySelector(\"body\").appendChild(s);\n}\n","//import xml from \"xml\";\n\nexport default function(data) {\n\n\n var date = data.publishedDate;\n\n var batch_timestamp = Math.floor(Date.now() / 1000);\n var batch_id = data.authors.length ? data.authors[0].lastName.toLowerCase().slice(0,20) : \"Anonymous\";\n batch_id += \"_\" + date.getFullYear();\n batch_id += \"_\" + data.title.split(\" \")[0].toLowerCase().slice(0,20) + \"_\" + batch_timestamp;\n // generate XML\n var crf_data =\n {doi_batch : [\n\n { _attr: {\n version: \"4.3.7\",\n xmlns: \"http://www.crossref.org/schema/4.3.7\",\n \"xmlns:xsi\": \"http://www.w3.org/2001/XMLSchema-instance\",\n \"xsi:schemaLocation\": \"http://www.crossref.org/schema/4.3.7 http://www.crossref.org/schemas/crossref4.3.7.xsd\",\n }},\n\n { head: [\n {doi_batch_id: batch_id},\n {timestamp: batch_timestamp},\n {depositor: [\n {depositor_name: data.journal.publisherName},\n {email_address: data.journal.publisherEmail},\n ]},\n {registrant: data.journal.publisherName},\n ]},\n\n {body: [\n {journal: [\n\n {journal_metadata: [\n {full_title: data.journal.full_title || data.journal.title},\n {abbrev_title: data.journal.abbrev_title || data.journal.title || data.journal.full_title},\n {issn: data.journal.issn},\n {doi_data: [\n {doi: data.journal.doi},\n {resource: data.journal.url},\n ]},\n ]},\n\n {journal_issue: [\n {publication_date: [\n {month: date.getMonth()+1},\n {year: date.getFullYear()},\n ]},\n {journal_volume: [\n {volume: data.volume},\n ]},\n {issue: data.issue},\n ]},\n\n {journal_article: [\n {titles: [\n {title: data.title},\n ]},\n { contributors:\n data.authors.map((author, ind) => (\n {person_name: [\n { _attr: {\n contributor_role: \"author\",\n sequence: (ind == 0)? \"first\" : \"additional\"\n }},\n {given_name: author.firstName},\n {surname: author.lastName},\n {affiliation: author.affiliation}\n // TODO: ORCID?\n ]}\n ))\n },\n {publication_date: [\n {month: date.getMonth()+1},\n {day: date.getDate()},\n {year: date.getFullYear()}\n ]},\n { publisher_item: [\n {item_number: data.doi}\n ]},\n {doi_data: [\n {doi: data.doi},\n //{timestamp: \"\"},\n {resource: data.url},\n ]},\n {citation_list:\n data.citations.map(key =>\n citation_xml(key, data.bibliography[key]))\n }\n\n ]},\n\n ]},\n ]},\n ]};\n\n return xml(crf_data);\n}\n\nfunction citation_xml(key, ent){\n if (ent == undefined) return {};\n var info = [];\n info.push({_attr: {key: key}});\n if (\"title\" in ent)\n info.push({article_title: ent.title});\n if (\"author\" in ent)\n info.push({author: ent.author.split(\" and \")[0].split(\",\")[0].trim()});\n if (\"journal\" in ent)\n info.push({journal_title: ent.journal});\n if (\"booktitle\" in ent)\n info.push({volume_title: ent.booktitle});\n if (\"volume\" in ent)\n info.push({volume: ent.volume});\n if (\"issue\" in ent)\n info.push({issue: ent.issue});\n if (\"doi\" in ent)\n info.push({doi: ent.doi});\n return {citation: info}\n}\n\nfunction xml(obj) {\n //console.log(typeof(obj), obj)\n if (typeof obj === 'string') return obj;\n if (typeof obj === 'number') return \"\"+obj;\n let keys = Object.keys(obj);\n if (keys.length != 1) console.error(\"can't interpret \", obj, \"as xml\");\n let name = keys[0];\n var full_content = obj[name];\n var attr = {};\n if (Array.isArray(full_content)){\n var content = [];\n for (var i in full_content) {\n var obj = full_content[i];\n var obj_name = Object.keys(obj)[0];\n if (\"_attr\" == obj_name) {\n attr = obj[\"_attr\"];\n } else {\n //console.log(Object.keys(obj)[0])\n content.push(obj);\n }\n }\n } else {\n content = full_content;\n }\n if (content == undefined){\n content = \"undefined\"\n }\n\n let attr_string = \"\";\n for (var k in attr) {\n attr_string += ` ${k}=\\\"${attr[k]}\\\"`\n }\n\n //console.log(typeof content, Array.isArray(content), content instanceof String, content)\n if (Array.isArray(content)){\n content = content.map(xml);\n content = content.join(\"\\n\").split(\"\\n\");\n content = content.map(s => \" \" + s).join(\"\\n\")\n var result = `<${name}${attr_string}>\\n${content}\\n`;\n } else {\n content = xml(content);\n var result = `<${name}${attr_string}>${content}`;\n }\n return result;\n}\n","import logo from \"./distill-logo.svg\";\n\nconst html = `\n\n\n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-header\");\n if(el) {\n el.innerHTML = html;\n } else {\n let header = dom.createElement(\"dt-header\");\n header.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(header, b.firstChild);\n }\n}\n","import logo from \"./distill-logo.svg\";\n\nlet html = `\n\n\n
    \n \n ${logo}\n Distill\n is dedicated to clear explanations of machine learning\n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-footer\");\n if(el) {\n el.innerHTML = html;\n } else {\n let footer = dom.createElement(\"dt-footer\");\n footer.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.appendChild(footer);\n }\n}\n","import html from \"./components/html\";\nimport styles from \"./components/styles\";\nimport frontMatter from \"./components/front-matter\";\nimport bibliography from \"./components/bibliography\";\nimport expandData from \"./components/expand-data\";\nimport meta from \"./components/meta\";\nimport banner from \"./components/banner\";\nimport byline from \"./components/byline\";\nimport appendix from \"./components/appendix\";\nimport citation from \"./components/citation\";\nimport footnote from \"./components/footnote\";\nimport markdown from \"./components/markdown\";\nimport code from \"./components/code\";\nimport typeset from \"./components/typeset\";\nimport hoverBox from \"./components/hover-box-include\";\nimport generateCrossref from \"./components/generate-crossref\";\nimport header from \"./components/header\";\nimport footer from \"./components/footer\";\n\nfunction renderImmediately(dom) {\n html(dom);\n styles(dom);\n}\n\nfunction renderOnLoad(dom, data) {\n frontMatter(dom, data);\n bibliography(dom, data);\n expandData(dom, data);\n meta(dom, data);\n byline(dom, data);\n appendix(dom, data);\n markdown(dom, data);\n code(dom, data);\n citation(dom, data);\n footnote(dom, data);\n typeset(dom, data);\n hoverBox(dom, data);\n}\n\n// If we are in a browser, render automatically...\nif(window && window.document) {\n let data = {};\n renderImmediately(window.document);\n window.document.addEventListener(\"DOMContentLoaded\", (event) => {\n renderOnLoad(window.document, data);\n // Add a banner if we're not on localhost.\n if (window.location.hostname !== \"localhost\" && window.location.origin !== \"file://\") {\n banner(window.document, data);\n }\n generateCrossref(data);\n });\n}\n\n// If we are in node...\nfunction render(dom, data) {\n renderImmediately(dom);\n renderOnLoad(dom, data);\n // Remove script tag so it doesn't run again in the client\n let s = dom.querySelector('script[src=\"http://distill.pub/template.js\"]');\n if (s) { s.parentElement.removeChild(s); };\n}\n\n// Distill specific rendering\nfunction distillify(dom, data) {\n header(dom, data);\n footer(dom, data);\n}\n\nexport {render as render};\nexport {distillify as distillify};\nexport {generateCrossref as generateCrossref};\n"],"names":["let","meta","YAMLException","common","require$$0","Mark","this","Type","require$$1","require$$2","type","arguments","Schema","require$$3","require$$4","require$$5","require","_hasOwnProperty","_toString","require$$6","require$$7","_require","DEFAULT_SAFE_SCHEMA","DEFAULT_FULL_SCHEMA","loadAll","load","safeLoadAll","safeLoad","State","dump","safeDump","require$$8","require$$9","ymlParse","interval","day","timeDay","timeYear","timeSunday","timeMonday","locale","escape","const","html","define","global","Prism","code","render"],"mappings":";;;;;;AAAA,WAAe,SAAS,GAAG,EAAE;EAC3B,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;IACnD,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;GACrD;;EAEDA,IAAI,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;;EAErC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE;IACvCA,IAAI,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACtC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;GACxB;EACD,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,qBAAqB,CAAC,EAAE;IAC7CA,IAAIC,MAAI,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACrCA,MAAI,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACtCA,MAAI,CAAC,YAAY,CAAC,SAAS,EAAE,qCAAqC,CAAC,CAAC;IACpE,IAAI,CAAC,WAAW,CAACA,MAAI,CAAC,CAAC;GACxB;CACF,CAAA;;;;;;;;;;;;ACZD,aAAe,SAAS,GAAG,EAAE;EAC3BD,IAAI,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;EACnC,CAAC,CAAC,WAAW,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC;EACvD,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;CAC1C,CAAA;;ACPD,SAAS,SAAS,CAAC,OAAO,EAAE;EAC1B,OAAO,CAAC,OAAO,OAAO,KAAK,WAAW,MAAM,OAAO,KAAK,IAAI,CAAC,CAAC;CAC/D;;;AAGD,SAAS,QAAQ,CAAC,OAAO,EAAE;EACzB,OAAO,CAAC,OAAO,OAAO,KAAK,QAAQ,MAAM,OAAO,KAAK,IAAI,CAAC,CAAC;CAC5D;;;AAGD,SAAS,OAAO,CAAC,QAAQ,EAAE;EACzB,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAA,OAAO,QAAQ,CAAC,EAAA;OACxC,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAA,OAAO,EAAE,CAAC,EAAA;;EAExC,OAAO,EAAE,QAAQ,EAAE,CAAC;CACrB;;;AAGD,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE;EAC9B,IAAI,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC;;EAEnC,IAAI,MAAM,EAAE;IACV,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;IAEjC,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;MACtE,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;MACxB,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;KAC3B;GACF;;EAED,OAAO,MAAM,CAAC;CACf;;;AAGD,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE;EAC7B,IAAI,MAAM,GAAG,EAAE,EAAE,KAAK,CAAC;;EAEvB,KAAK,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,IAAI,CAAC,EAAE;IACzC,MAAM,IAAI,MAAM,CAAC;GAClB;;EAED,OAAO,MAAM,CAAC;CACf;;;AAGD,SAAS,cAAc,CAAC,MAAM,EAAE;EAC9B,OAAO,CAAC,MAAM,KAAK,CAAC,MAAM,MAAM,CAAC,iBAAiB,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC;CACpE;;;AAGD,kBAAgC,SAAS,CAAC;AAC1C,iBAAgC,QAAQ,CAAC;AACzC,gBAAgC,OAAO,CAAC;AACxC,eAAgC,MAAM,CAAC;AACvC,uBAAgC,cAAc,CAAC;AAC/C,eAAgC,MAAM,CAAC;;;;;;;;;;;AC1DvC;;AAEA,AAEA,SAASE,eAAa,CAAC,MAAM,EAAE,IAAI,EAAE;;EAEnC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;;EAGjB,IAAI,KAAK,CAAC,iBAAiB,EAAE;;IAE3B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;GACjD,MAAM;;IAEL,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,EAAE,EAAE,KAAK,IAAI,EAAE,CAAC;GACxC;;EAED,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;EAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;EACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACjB,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,kBAAkB,KAAK,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;CACpG;;;;AAIDA,eAAa,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACzDA,eAAa,CAAC,SAAS,CAAC,WAAW,GAAGA,eAAa,CAAC;;;AAGpDA,eAAa,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,CAAC,OAAO,EAAE;EAC5D,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;;EAE9B,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,kBAAkB,CAAC;;EAE5C,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE;IACzB,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;GACtC;;EAED,OAAO,MAAM,CAAC;CACf,CAAC;;;AAGF,aAAc,GAAGA,eAAa,CAAC;;ACvC/B,IAAIC,QAAM,GAAGC,QAAmB,CAAC;;;AAGjC,SAASC,MAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE;EAClD,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC;EACrB,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC;EACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;EACzB,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC;EACrB,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC;CACxB;;;AAGDA,MAAI,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE;;;EACjE,IAAI,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC;;EAEpC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;;EAE9B,MAAM,GAAG,MAAM,IAAI,CAAC,CAAC;EACrB,SAAS,GAAG,SAAS,IAAI,EAAE,CAAC;;EAE5B,IAAI,GAAG,EAAE,CAAC;EACV,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;;EAEtB,OAAO,KAAK,GAAG,CAAC,IAAI,0BAA0B,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;IAC5F,KAAK,IAAI,CAAC,CAAC;IACX,IAAIC,MAAI,CAAC,QAAQ,GAAG,KAAK,IAAI,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;MAC/C,IAAI,GAAG,OAAO,CAAC;MACf,KAAK,IAAI,CAAC,CAAC;MACX,MAAM;KACP;GACF;;EAED,IAAI,GAAG,EAAE,CAAC;EACV,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;;EAEpB,OAAO,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,0BAA0B,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;IACrG,GAAG,IAAI,CAAC,CAAC;IACT,IAAI,GAAG,GAAGA,MAAI,CAAC,QAAQ,IAAI,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;MAC7C,IAAI,GAAG,OAAO,CAAC;MACf,GAAG,IAAI,CAAC,CAAC;MACT,MAAM;KACP;GACF;;EAED,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;;EAExC,OAAOH,QAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI;SACzDA,QAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;CAC/E,CAAC;;;AAGFE,MAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,CAAC,OAAO,EAAE;EACnD,IAAI,OAAO,EAAE,KAAK,GAAG,EAAE,CAAC;;EAExB,IAAI,IAAI,CAAC,IAAI,EAAE;IACb,KAAK,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;GACpC;;EAED,KAAK,IAAI,UAAU,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,WAAW,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;;EAExE,IAAI,CAAC,OAAO,EAAE;IACZ,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;;IAE5B,IAAI,OAAO,EAAE;MACX,KAAK,IAAI,KAAK,GAAG,OAAO,CAAC;KAC1B;GACF;;EAED,OAAO,KAAK,CAAC;CACd,CAAC;;;AAGF,QAAc,GAAGA,MAAI,CAAC;;ACzEtB,IAAIH,eAAa,GAAGE,SAAsB,CAAC;;AAE3C,IAAI,wBAAwB,GAAG;EAC7B,MAAM;EACN,SAAS;EACT,WAAW;EACX,YAAY;EACZ,WAAW;EACX,WAAW;EACX,cAAc;EACd,cAAc;CACf,CAAC;;AAEF,IAAI,eAAe,GAAG;EACpB,QAAQ;EACR,UAAU;EACV,SAAS;CACV,CAAC;;AAEF,SAAS,mBAAmB,CAAC,GAAG,EAAE;EAChC,IAAI,MAAM,GAAG,EAAE,CAAC;;EAEhB,IAAI,GAAG,KAAK,IAAI,EAAE;IAChB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,KAAK,EAAE;MACxC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,KAAK,EAAE;QAClC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;OAC/B,CAAC,CAAC;KACJ,CAAC,CAAC;GACJ;;EAED,OAAO,MAAM,CAAC;CACf;;AAED,SAASG,MAAI,CAAC,GAAG,EAAE,OAAO,EAAE;EAC1B,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;;EAExB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE;IAC3C,IAAI,wBAAwB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;MACjD,MAAM,IAAIL,eAAa,CAAC,kBAAkB,GAAG,IAAI,GAAG,6BAA6B,GAAG,GAAG,GAAG,cAAc,CAAC,CAAC;KAC3G;GACF,CAAC,CAAC;;;EAGH,IAAI,CAAC,GAAG,YAAY,GAAG,CAAC;EACxB,IAAI,CAAC,IAAI,WAAW,OAAO,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC;EACpD,IAAI,CAAC,OAAO,QAAQ,OAAO,CAAC,SAAS,CAAC,SAAS,YAAY,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;EAC5E,IAAI,CAAC,SAAS,MAAM,OAAO,CAAC,WAAW,CAAC,OAAO,UAAU,IAAI,EAAE,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;EAChF,IAAI,CAAC,UAAU,KAAK,OAAO,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC;EACpD,IAAI,CAAC,SAAS,MAAM,OAAO,CAAC,WAAW,CAAC,OAAO,IAAI,CAAC;EACpD,IAAI,CAAC,SAAS,MAAM,OAAO,CAAC,WAAW,CAAC,OAAO,IAAI,CAAC;EACpD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC;EACpD,IAAI,CAAC,YAAY,GAAG,mBAAmB,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,CAAC;;EAEzE,IAAI,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;IAC7C,MAAM,IAAIA,eAAa,CAAC,gBAAgB,GAAG,IAAI,CAAC,IAAI,GAAG,sBAAsB,GAAG,GAAG,GAAG,cAAc,CAAC,CAAC;GACvG;CACF;;AAED,QAAc,GAAGK,MAAI,CAAC;;;;ACxDtB,IAAIJ,QAAM,UAAUC,QAAmB,CAAC;AACxC,IAAIF,eAAa,GAAGM,SAAsB,CAAC;AAC3C,IAAID,MAAI,YAAYE,IAAiB,CAAC;;;AAGtC,SAAS,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;EACzC,IAAI,OAAO,GAAG,EAAE,CAAC;;EAEjB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,cAAc,EAAE;IAC/C,MAAM,GAAG,WAAW,CAAC,cAAc,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;GACpD,CAAC,CAAC;;EAEH,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,WAAW,EAAE;IAC1C,MAAM,CAAC,OAAO,CAAC,UAAU,YAAY,EAAE,aAAa,EAAE;MACpD,IAAI,YAAY,CAAC,GAAG,KAAK,WAAW,CAAC,GAAG,IAAI,YAAY,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,EAAE;QAClF,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;OAC7B;KACF,CAAC,CAAC;;IAEH,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;GAC1B,CAAC,CAAC;;EAEH,OAAO,MAAM,CAAC,MAAM,CAAC,UAAUC,OAAI,EAAE,KAAK,EAAE;IAC1C,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;GACtC,CAAC,CAAC;CACJ;;;AAGD,SAAS,UAAU,iBAAiB;;;EAClC,IAAI,MAAM,GAAG;QACP,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,EAAE;OACb,EAAE,KAAK,EAAE,MAAM,CAAC;;EAErB,SAAS,WAAW,CAACA,OAAI,EAAE;IACzB,MAAM,CAACA,OAAI,CAAC,IAAI,CAAC,CAACA,OAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAACA,OAAI,CAAC,GAAG,CAAC,GAAGA,OAAI,CAAC;GACnE;;EAED,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IACrEC,WAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;GACvC;EACD,OAAO,MAAM,CAAC;CACf;;;AAGD,SAASC,QAAM,CAAC,UAAU,EAAE;EAC1B,IAAI,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,KAAK,EAAE,CAAC;EAC1C,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,IAAI,EAAE,CAAC;EAC1C,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,IAAI,EAAE,CAAC;;EAE1C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAUF,OAAI,EAAE;IACpC,IAAIA,OAAI,CAAC,QAAQ,IAAIA,OAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;MAC/C,MAAM,IAAIR,eAAa,CAAC,iHAAiH,CAAC,CAAC;KAC5I;GACF,CAAC,CAAC;;EAEH,IAAI,CAAC,gBAAgB,GAAG,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;EAC1D,IAAI,CAAC,gBAAgB,GAAG,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;EAC1D,IAAI,CAAC,eAAe,IAAI,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;CAClF;;;AAGDU,QAAM,CAAC,OAAO,GAAG,IAAI,CAAC;;;AAGtBA,QAAM,CAAC,MAAM,GAAG,SAAS,YAAY,GAAG;EACtC,IAAI,OAAO,EAAE,KAAK,CAAC;;EAEnB,QAAQ,SAAS,CAAC,MAAM;IACtB,KAAK,CAAC;MACJ,OAAO,GAAGA,QAAM,CAAC,OAAO,CAAC;MACzB,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;MACrB,MAAM;;IAER,KAAK,CAAC;MACJ,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;MACvB,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;MACrB,MAAM;;IAER;MACE,MAAM,IAAIV,eAAa,CAAC,sDAAsD,CAAC,CAAC;GACnF;;EAED,OAAO,GAAGC,QAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;EAClC,KAAK,GAAGA,QAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;;EAE9B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,MAAM,EAAE,EAAE,OAAO,MAAM,YAAYS,QAAM,CAAC,EAAE,CAAC,EAAE;IAC1E,MAAM,IAAIV,eAAa,CAAC,2FAA2F,CAAC,CAAC;GACtH;;EAED,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAUQ,OAAI,EAAE,EAAE,OAAOA,OAAI,YAAYH,MAAI,CAAC,EAAE,CAAC,EAAE;IAClE,MAAM,IAAIL,eAAa,CAAC,oFAAoF,CAAC,CAAC;GAC/G;;EAED,OAAO,IAAIU,QAAM,CAAC;IAChB,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE,KAAK;GAChB,CAAC,CAAC;CACJ,CAAC;;;AAGF,UAAc,GAAGA,QAAM,CAAC;;ACzGxB,IAAIL,MAAI,GAAGH,IAAkB,CAAC;;AAE9B,OAAc,GAAG,IAAIG,MAAI,CAAC,uBAAuB,EAAE;EACjD,IAAI,EAAE,QAAQ;EACd,SAAS,EAAE,UAAU,IAAI,EAAE,EAAE,OAAO,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,EAAE;CACjE,CAAC,CAAC;;ACLH,IAAIA,MAAI,GAAGH,IAAkB,CAAC;;AAE9B,OAAc,GAAG,IAAIG,MAAI,CAAC,uBAAuB,EAAE;EACjD,IAAI,EAAE,UAAU;EAChB,SAAS,EAAE,UAAU,IAAI,EAAE,EAAE,OAAO,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,EAAE;CACjE,CAAC,CAAC;;ACLH,IAAIA,MAAI,GAAGH,IAAkB,CAAC;;AAE9B,OAAc,GAAG,IAAIG,MAAI,CAAC,uBAAuB,EAAE;EACjD,IAAI,EAAE,SAAS;EACf,SAAS,EAAE,UAAU,IAAI,EAAE,EAAE,OAAO,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,EAAE;CACjE,CAAC,CAAC;;ACAH,IAAIK,QAAM,GAAGR,MAAoB,CAAC;;;AAGlC,YAAc,GAAG,IAAIQ,QAAM,CAAC;EAC1B,QAAQ,EAAE;IACRJ,GAAsB;IACtBC,GAAsB;IACtBI,GAAsB;GACvB;CACF,CAAC,CAAC;;ACdH,IAAIN,MAAI,GAAGH,IAAkB,CAAC;;AAE9B,SAAS,eAAe,CAAC,IAAI,EAAE;EAC7B,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;;EAE/B,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;;EAEtB,OAAO,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,GAAG;UACzB,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC;CAC/E;;AAED,SAAS,iBAAiB,GAAG;EAC3B,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,MAAM,CAAC,MAAM,EAAE;EACtB,OAAO,MAAM,KAAK,IAAI,CAAC;CACxB;;AAED,SAAc,GAAG,IAAIG,MAAI,CAAC,wBAAwB,EAAE;EAClD,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,eAAe;EACxB,SAAS,EAAE,iBAAiB;EAC5B,SAAS,EAAE,MAAM;EACjB,SAAS,EAAE;IACT,SAAS,EAAE,YAAY,EAAE,OAAO,GAAG,CAAC,KAAK;IACzC,SAAS,EAAE,YAAY,EAAE,OAAO,MAAM,CAAC,EAAE;IACzC,SAAS,EAAE,YAAY,EAAE,OAAO,MAAM,CAAC,EAAE;IACzC,SAAS,EAAE,YAAY,EAAE,OAAO,MAAM,CAAC,EAAE;GAC1C;EACD,YAAY,EAAE,WAAW;CAC1B,CAAC,CAAC;;AC/BH,IAAIA,MAAI,GAAGH,IAAkB,CAAC;;AAE9B,SAAS,kBAAkB,CAAC,IAAI,EAAE;EAChC,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;EAEhC,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;;EAEtB,OAAO,CAAC,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,CAAC;UACpE,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC;CAClF;;AAED,SAAS,oBAAoB,CAAC,IAAI,EAAE;EAClC,OAAO,IAAI,KAAK,MAAM;SACf,IAAI,KAAK,MAAM;SACf,IAAI,KAAK,MAAM,CAAC;CACxB;;AAED,SAAS,SAAS,CAAC,MAAM,EAAE;EACzB,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,kBAAkB,CAAC;CACtE;;AAED,QAAc,GAAG,IAAIG,MAAI,CAAC,wBAAwB,EAAE;EAClD,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,kBAAkB;EAC3B,SAAS,EAAE,oBAAoB;EAC/B,SAAS,EAAE,SAAS;EACpB,SAAS,EAAE;IACT,SAAS,EAAE,UAAU,MAAM,EAAE,EAAE,OAAO,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE;IAClE,SAAS,EAAE,UAAU,MAAM,EAAE,EAAE,OAAO,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE;IAClE,SAAS,EAAE,UAAU,MAAM,EAAE,EAAE,OAAO,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE;GACnE;EACD,YAAY,EAAE,WAAW;CAC1B,CAAC,CAAC;;AChCH,IAAIJ,QAAM,GAAGC,QAAoB,CAAC;AAClC,IAAIG,MAAI,KAAKC,IAAkB,CAAC;;AAEhC,SAAS,SAAS,CAAC,CAAC,EAAE;EACpB,OAAO,CAAC,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ;UACxC,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,CAAC;UACzC,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,CAAC,CAAC;CACnD;;AAED,SAAS,SAAS,CAAC,CAAC,EAAE;EACpB,QAAQ,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAE;CACnD;;AAED,SAAS,SAAS,CAAC,CAAC,EAAE;EACpB,QAAQ,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAE;CACnD;;AAED,SAAS,kBAAkB,CAAC,IAAI,EAAE;EAChC,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;EAEhC,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM;MACjB,KAAK,GAAG,CAAC;MACT,SAAS,GAAG,KAAK;MACjB,EAAE,CAAC;;EAEP,IAAI,CAAC,GAAG,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;EAEvB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;;;EAGjB,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE;IAC5B,EAAE,GAAG,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;GACpB;;EAED,IAAI,EAAE,KAAK,GAAG,EAAE;;IAEd,IAAI,KAAK,GAAG,CAAC,KAAK,GAAG,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;IACnC,EAAE,GAAG,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;;;;IAInB,IAAI,EAAE,KAAK,GAAG,EAAE;;MAEd,KAAK,EAAE,CAAC;;MAER,OAAO,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE;QAC3B,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACjB,IAAI,EAAE,KAAK,GAAG,EAAE,EAAA,SAAS,EAAA;QACzB,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;QAC3C,SAAS,GAAG,IAAI,CAAC;OAClB;MACD,OAAO,SAAS,CAAC;KAClB;;;IAGD,IAAI,EAAE,KAAK,GAAG,EAAE;;MAEd,KAAK,EAAE,CAAC;;MAER,OAAO,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE;QAC3B,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACjB,IAAI,EAAE,KAAK,GAAG,EAAE,EAAA,SAAS,EAAA;QACzB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;QACrD,SAAS,GAAG,IAAI,CAAC;OAClB;MACD,OAAO,SAAS,CAAC;KAClB;;;IAGD,OAAO,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE;MAC3B,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;MACjB,IAAI,EAAE,KAAK,GAAG,EAAE,EAAA,SAAS,EAAA;MACzB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;MACrD,SAAS,GAAG,IAAI,CAAC;KAClB;IACD,OAAO,SAAS,CAAC;GAClB;;;;EAID,OAAO,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE;IAC3B,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACjB,IAAI,EAAE,KAAK,GAAG,EAAE,EAAA,SAAS,EAAA;IACzB,IAAI,EAAE,KAAK,GAAG,EAAE,EAAA,MAAM,EAAA;IACtB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE;MACtC,OAAO,KAAK,CAAC;KACd;IACD,SAAS,GAAG,IAAI,CAAC;GAClB;;EAED,IAAI,CAAC,SAAS,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;;EAG7B,IAAI,EAAE,KAAK,GAAG,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;;;EAG5B,OAAO,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;CACpD;;AAED,SAAS,oBAAoB,CAAC,IAAI,EAAE;EAClC,IAAI,KAAK,GAAG,IAAI,EAAE,IAAI,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,EAAE,CAAC;;EAElD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;IAC7B,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;GACjC;;EAED,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;;EAEd,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE;IAC5B,IAAI,EAAE,KAAK,GAAG,EAAE,EAAA,IAAI,GAAG,CAAC,CAAC,CAAC,EAAA;IAC1B,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;GACf;;EAED,IAAI,KAAK,KAAK,GAAG,EAAE,EAAA,OAAO,CAAC,CAAC,EAAA;;EAE5B,IAAI,EAAE,KAAK,GAAG,EAAE;IACd,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,EAAA,OAAO,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAA;IAChE,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,EAAA,OAAO,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAA;IACxD,OAAO,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;GAClC;;EAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;IAC7B,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;MACpC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;KACjC,CAAC,CAAC;;IAEH,KAAK,GAAG,CAAC,CAAC;IACV,IAAI,GAAG,CAAC,CAAC;;IAET,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;MAC1B,KAAK,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;MACpB,IAAI,IAAI,EAAE,CAAC;KACZ,CAAC,CAAC;;IAEH,OAAO,IAAI,GAAG,KAAK,CAAC;;GAErB;;EAED,OAAO,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;CACnC;;AAED,SAAS,SAAS,CAAC,MAAM,EAAE;EACzB,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,iBAAiB;UAC7D,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,CAACL,QAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;CAC7D;;AAED,SAAc,GAAG,IAAII,MAAI,CAAC,uBAAuB,EAAE;EACjD,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,kBAAkB;EAC3B,SAAS,EAAE,oBAAoB;EAC/B,SAAS,EAAE,SAAS;EACpB,SAAS,EAAE;IACT,MAAM,OAAO,UAAU,MAAM,EAAE,EAAE,OAAO,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;IACpE,KAAK,QAAQ,UAAU,MAAM,EAAE,EAAE,OAAO,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;IACpE,OAAO,MAAM,UAAU,MAAM,EAAE,EAAE,cAAc,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE;IACrE,WAAW,EAAE,UAAU,MAAM,EAAE,EAAE,OAAO,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE;GACpF;EACD,YAAY,EAAE,SAAS;EACvB,YAAY,EAAE;IACZ,MAAM,OAAO,EAAE,CAAC,GAAG,KAAK,EAAE;IAC1B,KAAK,QAAQ,EAAE,CAAC,GAAG,KAAK,EAAE;IAC1B,OAAO,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE;IAC1B,WAAW,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE;GAC3B;CACF,CAAC,CAAC;;ACrKH,IAAIJ,QAAM,GAAGC,QAAoB,CAAC;AAClC,IAAIG,MAAI,KAAKC,IAAkB,CAAC;;AAEhC,IAAI,kBAAkB,GAAG,IAAI,MAAM;EACjC,wDAAwD;EACxD,gCAAgC;EAChC,+CAA+C;EAC/C,0BAA0B;EAC1B,uBAAuB,CAAC,CAAC;;AAE3B,SAAS,gBAAgB,CAAC,IAAI,EAAE;EAC9B,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;EAEhC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;EAEjD,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,kBAAkB,CAAC,IAAI,EAAE;EAChC,IAAI,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC;;EAE9B,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;EAC9C,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;EACnC,MAAM,GAAG,EAAE,CAAC;;EAEZ,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;IAC/B,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;GACxB;;EAED,IAAI,KAAK,KAAK,MAAM,EAAE;IACpB,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;;GAE3E,MAAM,IAAI,KAAK,KAAK,MAAM,EAAE;IAC3B,OAAO,GAAG,CAAC;;GAEZ,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;IAClC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;MACpC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;KACnC,CAAC,CAAC;;IAEH,KAAK,GAAG,GAAG,CAAC;IACZ,IAAI,GAAG,CAAC,CAAC;;IAET,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;MAC1B,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;MAClB,IAAI,IAAI,EAAE,CAAC;KACZ,CAAC,CAAC;;IAEH,OAAO,IAAI,GAAG,KAAK,CAAC;;GAErB;EACD,OAAO,IAAI,GAAG,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;CACrC;;;AAGD,IAAI,sBAAsB,GAAG,eAAe,CAAC;;AAE7C,SAAS,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE;EACzC,IAAI,GAAG,CAAC;;EAER,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;IACjB,QAAQ,KAAK;MACX,KAAK,WAAW,EAAE,OAAO,MAAM,CAAC;MAChC,KAAK,WAAW,EAAE,OAAO,MAAM,CAAC;MAChC,KAAK,WAAW,EAAE,OAAO,MAAM,CAAC;KACjC;GACF,MAAM,IAAI,MAAM,CAAC,iBAAiB,KAAK,MAAM,EAAE;IAC9C,QAAQ,KAAK;MACX,KAAK,WAAW,EAAE,OAAO,MAAM,CAAC;MAChC,KAAK,WAAW,EAAE,OAAO,MAAM,CAAC;MAChC,KAAK,WAAW,EAAE,OAAO,MAAM,CAAC;KACjC;GACF,MAAM,IAAI,MAAM,CAAC,iBAAiB,KAAK,MAAM,EAAE;IAC9C,QAAQ,KAAK;MACX,KAAK,WAAW,EAAE,OAAO,OAAO,CAAC;MACjC,KAAK,WAAW,EAAE,OAAO,OAAO,CAAC;MACjC,KAAK,WAAW,EAAE,OAAO,OAAO,CAAC;KAClC;GACF,MAAM,IAAIL,QAAM,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;IACxC,OAAO,MAAM,CAAC;GACf;;EAED,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;;;;;EAK1B,OAAO,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC;CACxE;;AAED,SAAS,OAAO,CAAC,MAAM,EAAE;EACvB,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,iBAAiB;UAC5D,MAAM,GAAG,CAAC,KAAK,CAAC,IAAIA,QAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;CAC5D;;AAED,WAAc,GAAG,IAAII,MAAI,CAAC,yBAAyB,EAAE;EACnD,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,gBAAgB;EACzB,SAAS,EAAE,kBAAkB;EAC7B,SAAS,EAAE,OAAO;EAClB,SAAS,EAAE,kBAAkB;EAC7B,YAAY,EAAE,WAAW;CAC1B,CAAC,CAAC;;AC7FH,IAAIK,QAAM,GAAGR,MAAoB,CAAC;;;AAGlC,QAAc,GAAG,IAAIQ,QAAM,CAAC;EAC1B,OAAO,EAAE;IACPJ,QAAqB;GACtB;EACD,QAAQ,EAAE;IACRC,KAAuB;IACvBI,IAAuB;IACvBC,KAAsB;IACtBC,OAAwB;GACzB;CACF,CAAC,CAAC;;ACdH,IAAIH,QAAM,GAAGR,MAAoB,CAAC;;;AAGlC,QAAc,GAAG,IAAIQ,QAAM,CAAC;EAC1B,OAAO,EAAE;IACPJ,IAAiB;GAClB;CACF,CAAC,CAAC;;ACfH,IAAID,OAAI,GAAGH,IAAkB,CAAC;;AAE9B,IAAI,gBAAgB,GAAG,IAAI,MAAM;EAC/B,yBAAyB;EACzB,eAAe;EACf,gBAAgB,CAAC,CAAC;;AAEpB,IAAI,qBAAqB,GAAG,IAAI,MAAM;EACpC,yBAAyB;EACzB,gBAAgB;EAChB,gBAAgB;EAChB,kBAAkB;EAClB,eAAe;EACf,eAAe;EACf,eAAe;EACf,kBAAkB;EAClB,kCAAkC;EAClC,wBAAwB,CAAC,CAAC;;AAE5B,SAAS,oBAAoB,CAAC,IAAI,EAAE;EAClC,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;EAChC,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;EACtD,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;EAC3D,OAAO,KAAK,CAAC;CACd;;AAED,SAAS,sBAAsB,CAAC,IAAI,EAAE;EACpC,IAAI,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,CAAC;MAC3D,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC;;EAE3C,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACpC,IAAI,KAAK,KAAK,IAAI,EAAE,EAAA,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAA;;EAE7D,IAAI,KAAK,KAAK,IAAI,EAAE,EAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC,EAAA;;;;EAI1D,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EACnB,KAAK,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACxB,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;;EAElB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACb,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;GAC7C;;;;EAID,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EACnB,MAAM,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EACrB,MAAM,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;;EAErB,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;IACZ,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChC,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;MAC1B,QAAQ,IAAI,GAAG,CAAC;KACjB;IACD,QAAQ,GAAG,CAAC,QAAQ,CAAC;GACtB;;;;EAID,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;IACZ,OAAO,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACvB,SAAS,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9B,KAAK,GAAG,CAAC,OAAO,GAAG,EAAE,GAAG,SAAS,IAAI,KAAK,CAAC;IAC3C,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,EAAA,KAAK,GAAG,CAAC,KAAK,CAAC,EAAA;GACtC;;EAED,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;;EAE5E,IAAI,KAAK,EAAE,EAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,CAAC,EAAA;;EAEhD,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,sBAAsB,CAAC,MAAM,cAAc;EAClD,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC;CAC7B;;AAED,aAAc,GAAG,IAAIG,OAAI,CAAC,6BAA6B,EAAE;EACvD,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,oBAAoB;EAC7B,SAAS,EAAE,sBAAsB;EACjC,UAAU,EAAE,IAAI;EAChB,SAAS,EAAE,sBAAsB;CAClC,CAAC,CAAC;;ACrFH,IAAIA,OAAI,GAAGH,IAAkB,CAAC;;AAE9B,SAAS,gBAAgB,CAAC,IAAI,EAAE;EAC9B,OAAO,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC;CACvC;;AAED,SAAc,GAAG,IAAIG,OAAI,CAAC,yBAAyB,EAAE;EACnD,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,gBAAgB;CAC1B,CAAC,CAAC;;;;;;;;;;;;;;;;ACPH,IAAI,UAAU,CAAC;;AAEf,IAAI;;EAEF,IAAI,QAAQ,GAAGS,eAAO,CAAC;EACvB,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;CACxC,CAAC,OAAO,EAAE,EAAE,EAAE;;AAEf,IAAIT,OAAI,SAASH,IAAkB,CAAC;;;;AAIpC,IAAI,UAAU,GAAG,uEAAuE,CAAC;;;AAGzF,SAAS,iBAAiB,CAAC,IAAI,EAAE;EAC/B,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;EAEhC,IAAI,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,UAAU,CAAC;;;EAG/D,KAAK,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE;IAC9B,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;;;IAGrC,IAAI,IAAI,GAAG,EAAE,EAAE,EAAA,SAAS,EAAA;;;IAGxB,IAAI,IAAI,GAAG,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;IAE3B,MAAM,IAAI,CAAC,CAAC;GACb;;;EAGD,OAAO,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC;CAC3B;;AAED,SAAS,mBAAmB,CAAC,IAAI,EAAE;EACjC,IAAI,GAAG,EAAE,QAAQ;MACb,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;MACpC,GAAG,GAAG,KAAK,CAAC,MAAM;MAClB,GAAG,GAAG,UAAU;MAChB,IAAI,GAAG,CAAC;MACR,MAAM,GAAG,EAAE,CAAC;;;;EAIhB,KAAK,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE;IAC9B,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE;MAC1B,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;MACjC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;MAChC,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;KAC1B;;IAED,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;GACrD;;;;EAID,QAAQ,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;;EAEzB,IAAI,QAAQ,KAAK,CAAC,EAAE;IAClB,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;IACjC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAChC,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;GAC1B,MAAM,IAAI,QAAQ,KAAK,EAAE,EAAE;IAC1B,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;IACjC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;GACjC,MAAM,IAAI,QAAQ,KAAK,EAAE,EAAE;IAC1B,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;GACjC;;;EAGD,IAAI,UAAU,EAAE,EAAA,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,EAAA;;EAE9C,OAAO,MAAM,CAAC;CACf;;AAED,SAAS,mBAAmB,CAAC,MAAM,cAAc;EAC/C,IAAI,MAAM,GAAG,EAAE,EAAE,IAAI,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI;MAChC,GAAG,GAAG,MAAM,CAAC,MAAM;MACnB,GAAG,GAAG,UAAU,CAAC;;;;EAIrB,KAAK,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE;IAC9B,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE;MAC1B,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;MACnC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;MACnC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;MAClC,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;KAC5B;;IAED,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;GAClC;;;;EAID,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;;EAEf,IAAI,IAAI,KAAK,CAAC,EAAE;IACd,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;GAC5B,MAAM,IAAI,IAAI,KAAK,CAAC,EAAE;IACrB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;GACnB,MAAM,IAAI,IAAI,KAAK,CAAC,EAAE;IACrB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;GACnB;;EAED,OAAO,MAAM,CAAC;CACf;;AAED,SAAS,QAAQ,CAAC,MAAM,EAAE;EACxB,OAAO,UAAU,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;CAClD;;AAED,UAAc,GAAG,IAAIG,OAAI,CAAC,0BAA0B,EAAE;EACpD,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,iBAAiB;EAC1B,SAAS,EAAE,mBAAmB;EAC9B,SAAS,EAAE,QAAQ;EACnB,SAAS,EAAE,mBAAmB;CAC/B,CAAC,CAAC;;ACpIH,IAAIA,OAAI,GAAGH,IAAkB,CAAC;;AAE9B,IAAIa,iBAAe,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;AACtD,IAAI,SAAS,SAAS,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;;AAEhD,SAAS,eAAe,CAAC,IAAI,EAAE;EAC7B,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;;EAE/B,IAAI,UAAU,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU;MACzD,MAAM,GAAG,IAAI,CAAC;;EAElB,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IAClE,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACrB,UAAU,GAAG,KAAK,CAAC;;IAEnB,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,iBAAiB,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;IAE7D,KAAK,OAAO,IAAI,IAAI,EAAE;MACpB,IAAIA,iBAAe,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;QACvC,IAAI,CAAC,UAAU,EAAE,EAAA,UAAU,GAAG,IAAI,CAAC,EAAA;aAC9B,EAAA,OAAO,KAAK,CAAC,EAAA;OACnB;KACF;;IAED,IAAI,CAAC,UAAU,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;IAE9B,IAAI,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAA,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAA;SAC5D,EAAA,OAAO,KAAK,CAAC,EAAA;GACnB;;EAED,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,iBAAiB,CAAC,IAAI,EAAE;EAC/B,OAAO,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;CAClC;;AAED,QAAc,GAAG,IAAIV,OAAI,CAAC,wBAAwB,EAAE;EAClD,IAAI,EAAE,UAAU;EAChB,OAAO,EAAE,eAAe;EACxB,SAAS,EAAE,iBAAiB;CAC7B,CAAC,CAAC;;ACzCH,IAAIA,OAAI,GAAGH,IAAkB,CAAC;;AAE9B,IAAIc,WAAS,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;;AAE1C,SAAS,gBAAgB,CAAC,IAAI,EAAE;EAC9B,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;;EAE/B,IAAI,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM;MACjC,MAAM,GAAG,IAAI,CAAC;;EAElB,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;;EAElC,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IAClE,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;;IAErB,IAAIA,WAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,iBAAiB,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;IAE7D,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;IAEzB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;IAEpC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;GAC5C;;EAED,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,kBAAkB,CAAC,IAAI,EAAE;EAChC,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,EAAE,CAAC,EAAA;;EAE7B,IAAI,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM;MACjC,MAAM,GAAG,IAAI,CAAC;;EAElB,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;;EAElC,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IAClE,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;;IAErB,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;IAEzB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;GAC5C;;EAED,OAAO,MAAM,CAAC;CACf;;AAED,SAAc,GAAG,IAAIX,OAAI,CAAC,yBAAyB,EAAE;EACnD,IAAI,EAAE,UAAU;EAChB,OAAO,EAAE,gBAAgB;EACzB,SAAS,EAAE,kBAAkB;CAC9B,CAAC,CAAC;;AClDH,IAAIA,OAAI,GAAGH,IAAkB,CAAC;;AAE9B,IAAIa,iBAAe,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;;AAEtD,SAAS,cAAc,CAAC,IAAI,EAAE;EAC5B,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;;EAE/B,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;;EAEvB,KAAK,GAAG,IAAI,MAAM,EAAE;IAClB,IAAIA,iBAAe,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;MACrC,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;KACxC;GACF;;EAED,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,gBAAgB,CAAC,IAAI,EAAE;EAC9B,OAAO,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;CAClC;;AAED,OAAc,GAAG,IAAIV,OAAI,CAAC,uBAAuB,EAAE;EACjD,IAAI,EAAE,SAAS;EACf,OAAO,EAAE,cAAc;EACvB,SAAS,EAAE,gBAAgB;CAC5B,CAAC,CAAC;;AClBH,IAAIK,QAAM,GAAGR,MAAoB,CAAC;;;AAGlC,gBAAc,GAAG,IAAIQ,QAAM,CAAC;EAC1B,OAAO,EAAE;IACPJ,IAAiB;GAClB;EACD,QAAQ,EAAE;IACRC,SAA4B;IAC5BI,KAAwB;GACzB;EACD,QAAQ,EAAE;IACRC,MAAyB;IACzBC,IAAuB;IACvBI,KAAwB;IACxBC,GAAsB;GACvB;CACF,CAAC,CAAC;;ACzBH,IAAIb,OAAI,GAAGH,IAAqB,CAAC;;AAEjC,SAAS,0BAA0B,GAAG;EACpC,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,4BAA4B,GAAG;;EAEtC,OAAO,SAAS,CAAC;CAClB;;AAED,SAAS,4BAA4B,GAAG;EACtC,OAAO,EAAE,CAAC;CACX;;AAED,SAAS,WAAW,CAAC,MAAM,EAAE;EAC3B,OAAO,OAAO,MAAM,KAAK,WAAW,CAAC;CACtC;;AAED,cAAc,GAAG,IAAIG,OAAI,CAAC,gCAAgC,EAAE;EAC1D,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,0BAA0B;EACnC,SAAS,EAAE,4BAA4B;EACvC,SAAS,EAAE,WAAW;EACtB,SAAS,EAAE,4BAA4B;CACxC,CAAC,CAAC;;ACzBH,IAAIA,OAAI,GAAGH,IAAqB,CAAC;;AAEjC,SAAS,uBAAuB,CAAC,IAAI,EAAE;EACrC,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;EAChC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;EAEpC,IAAI,MAAM,GAAG,IAAI;MACb,IAAI,KAAK,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;MACjC,SAAS,GAAG,EAAE,CAAC;;;;EAInB,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;IACrB,IAAI,IAAI,EAAE,EAAA,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,EAAA;;IAE9B,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;IAEvC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;GACxE;;EAED,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,yBAAyB,CAAC,IAAI,EAAE;EACvC,IAAI,MAAM,GAAG,IAAI;MACb,IAAI,KAAK,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;MACjC,SAAS,GAAG,EAAE,CAAC;;;EAGnB,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;IACrB,IAAI,IAAI,EAAE,EAAA,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,EAAA;IAC9B,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;GAChE;;EAED,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CACtC;;AAED,SAAS,yBAAyB,CAAC,MAAM,cAAc;EACrD,IAAI,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;;EAEvC,IAAI,MAAM,CAAC,MAAM,EAAE,EAAA,MAAM,IAAI,GAAG,CAAC,EAAA;EACjC,IAAI,MAAM,CAAC,SAAS,EAAE,EAAA,MAAM,IAAI,GAAG,CAAC,EAAA;EACpC,IAAI,MAAM,CAAC,UAAU,EAAE,EAAA,MAAM,IAAI,GAAG,CAAC,EAAA;;EAErC,OAAO,MAAM,CAAC;CACf;;AAED,SAAS,QAAQ,CAAC,MAAM,EAAE;EACxB,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,iBAAiB,CAAC;CACrE;;AAED,UAAc,GAAG,IAAIG,OAAI,CAAC,6BAA6B,EAAE;EACvD,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,uBAAuB;EAChC,SAAS,EAAE,yBAAyB;EACpC,SAAS,EAAE,QAAQ;EACnB,SAAS,EAAE,yBAAyB;CACrC,CAAC,CAAC;;ACzDH,IAAI,OAAO,CAAC;;;;;;;;;AASZ,IAAI;;EAEF,IAAIc,UAAQ,GAAGL,eAAO,CAAC;EACvB,OAAO,GAAGK,UAAQ,CAAC,SAAS,CAAC,CAAC;CAC/B,CAAC,OAAO,CAAC,EAAE;;EAEV,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,EAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,EAAA;CAC7D;;AAED,IAAId,OAAI,GAAGH,IAAqB,CAAC;;AAEjC,SAAS,yBAAyB,CAAC,IAAI,EAAE;EACvC,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;EAEhC,IAAI;IACF,IAAI,MAAM,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG;QACzB,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;;IAEpD,IAAI,GAAG,CAAC,IAAI,wBAAwB,SAAS;QACzC,GAAG,CAAC,IAAI,CAAC,MAAM,iBAAiB,CAAC;QACjC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,gBAAgB,qBAAqB;QACrD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,oBAAoB,EAAE;MACxD,OAAO,KAAK,CAAC;KACd;;IAED,OAAO,IAAI,CAAC;GACb,CAAC,OAAO,GAAG,EAAE;IACZ,OAAO,KAAK,CAAC;GACd;CACF;;AAED,SAAS,2BAA2B,CAAC,IAAI,EAAE;;;EAGzC,IAAI,MAAM,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG;MACzB,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;MAC/C,MAAM,GAAG,EAAE;MACX,IAAI,CAAC;;EAET,IAAI,GAAG,CAAC,IAAI,wBAAwB,SAAS;MACzC,GAAG,CAAC,IAAI,CAAC,MAAM,iBAAiB,CAAC;MACjC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,gBAAgB,qBAAqB;MACrD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,oBAAoB,EAAE;IACxD,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;GAC/C;;EAED,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,KAAK,EAAE;IACrD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;GACzB,CAAC,CAAC;;EAEH,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;;;;;EAKzC,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACrE;;AAED,SAAS,2BAA2B,CAAC,MAAM,cAAc;EACvD,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;CAC1B;;AAED,SAAS,UAAU,CAAC,MAAM,EAAE;EAC1B,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,mBAAmB,CAAC;CACvE;;AAED,aAAc,GAAG,IAAIG,OAAI,CAAC,+BAA+B,EAAE;EACzD,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,yBAAyB;EAClC,SAAS,EAAE,2BAA2B;EACtC,SAAS,EAAE,UAAU;EACrB,SAAS,EAAE,2BAA2B;CACvC,CAAC,CAAC;;ACvEH,IAAIK,QAAM,GAAGR,MAAoB,CAAC;;;AAGlC,gBAAc,GAAGQ,QAAM,CAAC,OAAO,GAAG,IAAIA,QAAM,CAAC;EAC3C,OAAO,EAAE;IACPJ,YAAyB;GAC1B;EACD,QAAQ,EAAE;IACRC,UAA+B;IAC/BI,MAA4B;IAC5BC,SAA8B;GAC/B;CACF,CAAC,CAAC;;;;ACpBH,IAAI,MAAM,gBAAgBV,QAAmB,CAAC;AAC9C,IAAIF,eAAa,SAASM,SAAsB,CAAC;AACjD,IAAI,IAAI,kBAAkBC,IAAiB,CAAC;AAC5C,IAAIa,qBAAmB,GAAGT,YAAgC,CAAC;AAC3D,IAAIU,qBAAmB,GAAGT,YAAgC,CAAC;;;AAG3D,IAAI,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;;;AAGtD,IAAI,eAAe,KAAK,CAAC,CAAC;AAC1B,IAAI,gBAAgB,IAAI,CAAC,CAAC;AAC1B,IAAI,gBAAgB,IAAI,CAAC,CAAC;AAC1B,IAAI,iBAAiB,GAAG,CAAC,CAAC;;;AAG1B,IAAI,aAAa,IAAI,CAAC,CAAC;AACvB,IAAI,cAAc,GAAG,CAAC,CAAC;AACvB,IAAI,aAAa,IAAI,CAAC,CAAC;;;AAGvB,IAAI,qBAAqB,WAAW,qIAAqI,CAAC;AAC1K,IAAI,6BAA6B,GAAG,oBAAoB,CAAC;AACzD,IAAI,uBAAuB,SAAS,aAAa,CAAC;AAClD,IAAI,kBAAkB,cAAc,wBAAwB,CAAC;AAC7D,IAAI,eAAe,iBAAiB,kFAAkF,CAAC;;;AAGvH,SAAS,MAAM,CAAC,CAAC,EAAE;EACjB,OAAO,CAAC,CAAC,KAAK,IAAI,cAAc,CAAC,KAAK,IAAI,SAAS,CAAC;CACrD;;AAED,SAAS,cAAc,CAAC,CAAC,EAAE;EACzB,OAAO,CAAC,CAAC,KAAK,IAAI,eAAe,CAAC,KAAK,IAAI,YAAY,CAAC;CACzD;;AAED,SAAS,YAAY,CAAC,CAAC,EAAE;EACvB,OAAO,CAAC,CAAC,KAAK,IAAI;UACV,CAAC,KAAK,IAAI,YAAY;UACtB,CAAC,KAAK,IAAI,SAAS;UACnB,CAAC,KAAK,IAAI,SAAS,CAAC;CAC7B;;AAED,SAAS,iBAAiB,CAAC,CAAC,EAAE;EAC5B,OAAO,CAAC,KAAK,IAAI;SACV,CAAC,KAAK,IAAI;SACV,CAAC,KAAK,IAAI;SACV,CAAC,KAAK,IAAI;SACV,CAAC,KAAK,IAAI,QAAQ;CAC1B;;AAED,SAAS,WAAW,CAAC,CAAC,EAAE;EACtB,IAAI,EAAE,CAAC;;EAEP,IAAI,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAE;IAC5C,OAAO,CAAC,GAAG,IAAI,CAAC;GACjB;;;EAGD,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;;EAEd,IAAI,CAAC,IAAI,WAAW,EAAE,MAAM,EAAE,IAAI,IAAI,QAAQ,EAAE;IAC9C,OAAO,EAAE,GAAG,IAAI,GAAG,EAAE,CAAC;GACvB;;EAED,OAAO,CAAC,CAAC,CAAC;CACX;;AAED,SAAS,aAAa,CAAC,CAAC,EAAE;EACxB,IAAI,CAAC,KAAK,IAAI,SAAS,EAAE,OAAO,CAAC,CAAC,EAAE;EACpC,IAAI,CAAC,KAAK,IAAI,SAAS,EAAE,OAAO,CAAC,CAAC,EAAE;EACpC,IAAI,CAAC,KAAK,IAAI,SAAS,EAAE,OAAO,CAAC,CAAC,EAAE;EACpC,OAAO,CAAC,CAAC;CACV;;AAED,SAAS,eAAe,CAAC,CAAC,EAAE;EAC1B,IAAI,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAE;IAC5C,OAAO,CAAC,GAAG,IAAI,CAAC;GACjB;;EAED,OAAO,CAAC,CAAC,CAAC;CACX;;AAED,SAAS,oBAAoB,CAAC,CAAC,EAAE;EAC/B,OAAO,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC7B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,aAAa,MAAM;QAC9B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,eAAe,GAAG;QAC7B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,WAAW,GAAG;QACzB,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,WAAW,QAAQ;QAC9B,CAAC,CAAC,KAAK,IAAI,WAAW,QAAQ,GAAG,EAAE,CAAC;CAC3C;;AAED,SAAS,iBAAiB,CAAC,CAAC,EAAE;EAC5B,IAAI,CAAC,IAAI,MAAM,EAAE;IACf,OAAO,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;GAC/B;;;EAGD,OAAO,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,KAAK,EAAE,IAAI,MAAM;6BAC/B,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,MAAM,IAAI,MAAM,CAAC,CAAC;CAChE;;AAED,IAAI,iBAAiB,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;AACvC,IAAI,eAAe,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;AACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;EAC5B,iBAAiB,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EACvD,eAAe,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;CAC9C;;;AAGD,SAAS,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE;EAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;;EAEnB,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;EAC9C,IAAI,CAAC,MAAM,MAAM,OAAO,CAAC,QAAQ,CAAC,OAAOS,qBAAmB,CAAC;EAC7D,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC;EAC9C,IAAI,CAAC,MAAM,MAAM,OAAO,CAAC,QAAQ,CAAC,OAAO,KAAK,CAAC;EAC/C,IAAI,CAAC,IAAI,QAAQ,OAAO,CAAC,MAAM,CAAC,SAAS,KAAK,CAAC;EAC/C,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;;EAE9C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;EAClD,IAAI,CAAC,OAAO,SAAS,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;;EAEjD,IAAI,CAAC,MAAM,OAAO,KAAK,CAAC,MAAM,CAAC;EAC/B,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC;EACpB,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC;EACpB,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;EACpB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;;EAEpB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;;;;;;;;;;;;CAYrB;;;AAGD,SAAS,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE;EACrC,OAAO,IAAIrB,eAAa;IACtB,OAAO;IACP,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;CAC1G;;AAED,SAAS,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE;EAClC,MAAM,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;CACrC;;AAED,SAAS,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE;EACpC,IAAI,KAAK,CAAC,SAAS,EAAE;IACnB,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;GAC3D;CACF;;;AAGD,IAAI,iBAAiB,GAAG;;EAEtB,IAAI,EAAE,SAAS,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE;;IAEpD,IAAI,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;;IAExB,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,EAAE;MAC1B,UAAU,CAAC,KAAK,EAAE,gCAAgC,CAAC,CAAC;KACrD;;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;MACrB,UAAU,CAAC,KAAK,EAAE,6CAA6C,CAAC,CAAC;KAClE;;IAED,KAAK,GAAG,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;;IAE7C,IAAI,KAAK,KAAK,IAAI,EAAE;MAClB,UAAU,CAAC,KAAK,EAAE,2CAA2C,CAAC,CAAC;KAChE;;IAED,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/B,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;;IAE/B,IAAI,KAAK,KAAK,CAAC,EAAE;MACf,UAAU,CAAC,KAAK,EAAE,2CAA2C,CAAC,CAAC;KAChE;;IAED,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,KAAK,CAAC,eAAe,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;;IAEpC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE;MAC9B,YAAY,CAAC,KAAK,EAAE,0CAA0C,CAAC,CAAC;KACjE;GACF;;EAED,GAAG,EAAE,SAAS,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE;;IAElD,IAAI,MAAM,EAAE,MAAM,CAAC;;IAEnB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;MACrB,UAAU,CAAC,KAAK,EAAE,6CAA6C,CAAC,CAAC;KAClE;;IAED,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;;IAEjB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;MACpC,UAAU,CAAC,KAAK,EAAE,6DAA6D,CAAC,CAAC;KAClF;;IAED,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;MAC9C,UAAU,CAAC,KAAK,EAAE,6CAA6C,GAAG,MAAM,GAAG,cAAc,CAAC,CAAC;KAC5F;;IAED,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;MACjC,UAAU,CAAC,KAAK,EAAE,8DAA8D,CAAC,CAAC;KACnF;;IAED,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;GAC/B;CACF,CAAC;;;AAGF,SAAS,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE;EACpD,IAAI,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC;;EAE5C,IAAI,KAAK,GAAG,GAAG,EAAE;IACf,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;;IAExC,IAAI,SAAS,EAAE;MACb,KAAK,SAAS,GAAG,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM;WACvC,SAAS,GAAG,OAAO;WACnB,SAAS,IAAI,CAAC,EAAE;QACnB,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,EAAE,UAAU,KAAK,IAAI;eAClB,IAAI,IAAI,UAAU,IAAI,UAAU,IAAI,QAAQ,CAAC,CAAC,EAAE;UACrD,UAAU,CAAC,KAAK,EAAE,+BAA+B,CAAC,CAAC;SACpD;OACF;KACF,MAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;MAC9C,UAAU,CAAC,KAAK,EAAE,8CAA8C,CAAC,CAAC;KACnE;;IAED,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC;GACzB;CACF;;AAED,SAAS,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE;EAClE,IAAI,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC;;EAErC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;IAC5B,UAAU,CAAC,KAAK,EAAE,mEAAmE,CAAC,CAAC;GACxF;;EAED,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;EAEjC,KAAK,KAAK,GAAG,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,GAAG,QAAQ,EAAE,KAAK,IAAI,CAAC,EAAE;IAC1E,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;;IAExB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE;MAC3C,WAAW,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;MAC/B,eAAe,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;KAC7B;GACF;CACF;;AAED,SAAS,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;EACrF,IAAI,KAAK,EAAE,QAAQ,CAAC;;EAEpB,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;;EAE1B,IAAI,OAAO,KAAK,IAAI,EAAE;IACpB,OAAO,GAAG,EAAE,CAAC;GACd;;EAED,IAAI,MAAM,KAAK,yBAAyB,EAAE;IACxC,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;MAC5B,KAAK,KAAK,GAAG,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,QAAQ,EAAE,KAAK,IAAI,CAAC,EAAE;QACzE,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC,CAAC;OAClE;KACF,MAAM;MACL,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;KAC3D;GACF,MAAM;IACL,IAAI,CAAC,KAAK,CAAC,IAAI;QACX,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC;QAC/C,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE;MAC1C,UAAU,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC;KAC7C;IACD,OAAO,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IAC7B,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC;GACjC;;EAED,OAAO,OAAO,CAAC;CAChB;;AAED,SAAS,aAAa,CAAC,KAAK,EAAE;EAC5B,IAAI,EAAE,CAAC;;EAEP,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,IAAI,EAAE,KAAK,IAAI,UAAU;IACvB,KAAK,CAAC,QAAQ,EAAE,CAAC;GAClB,MAAM,IAAI,EAAE,KAAK,IAAI,UAAU;IAC9B,KAAK,CAAC,QAAQ,EAAE,CAAC;IACjB,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,UAAU;MAC3D,KAAK,CAAC,QAAQ,EAAE,CAAC;KAClB;GACF,MAAM;IACL,UAAU,CAAC,KAAK,EAAE,0BAA0B,CAAC,CAAC;GAC/C;;EAED,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;EAChB,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;CAClC;;AAED,SAAS,mBAAmB,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE;EAC9D,IAAI,UAAU,GAAG,CAAC;MACd,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAEhD,OAAO,EAAE,KAAK,CAAC,EAAE;IACf,OAAO,cAAc,CAAC,EAAE,CAAC,EAAE;MACzB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;KAC/C;;IAED,IAAI,aAAa,IAAI,EAAE,KAAK,IAAI,SAAS;MACvC,GAAG;QACD,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;OAC/C,QAAQ,EAAE,KAAK,IAAI,YAAY,EAAE,KAAK,IAAI,YAAY,EAAE,KAAK,CAAC,EAAE;KAClE;;IAED,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE;MACd,aAAa,CAAC,KAAK,CAAC,CAAC;;MAErB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;MAC5C,UAAU,EAAE,CAAC;MACb,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC;;MAErB,OAAO,EAAE,KAAK,IAAI,aAAa;QAC7B,KAAK,CAAC,UAAU,EAAE,CAAC;QACnB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;OAC/C;KACF,MAAM;MACL,MAAM;KACP;GACF;;EAED,IAAI,WAAW,KAAK,CAAC,CAAC,IAAI,UAAU,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,GAAG,WAAW,EAAE;IAC5E,YAAY,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;GAC9C;;EAED,OAAO,UAAU,CAAC;CACnB;;AAED,SAAS,qBAAqB,CAAC,KAAK,EAAE;EACpC,IAAI,SAAS,GAAG,KAAK,CAAC,QAAQ;MAC1B,EAAE,CAAC;;EAEP,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;;;;EAIvC,IAAI,CAAC,EAAE,KAAK,IAAI,WAAW,EAAE,KAAK,IAAI;MAClC,EAAE,KAAK,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,GAAG,CAAC,CAAC;MAC5C,EAAE,KAAK,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE;;IAEhD,SAAS,IAAI,CAAC,CAAC;;IAEf,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;;IAEvC,IAAI,EAAE,KAAK,CAAC,IAAI,YAAY,CAAC,EAAE,CAAC,EAAE;MAChC,OAAO,IAAI,CAAC;KACb;GACF;;EAED,OAAO,KAAK,CAAC;CACd;;AAED,SAAS,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE;EACtC,IAAI,KAAK,KAAK,CAAC,EAAE;IACf,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC;GACrB,MAAM,IAAI,KAAK,GAAG,CAAC,EAAE;IACpB,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;GAChD;CACF;;;AAGD,SAAS,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE;EAChE,IAAI,SAAS;MACT,SAAS;MACT,YAAY;MACZ,UAAU;MACV,iBAAiB;MACjB,KAAK;MACL,UAAU;MACV,WAAW;MACX,KAAK,GAAG,KAAK,CAAC,IAAI;MAClB,OAAO,GAAG,KAAK,CAAC,MAAM;MACtB,EAAE,CAAC;;EAEP,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,IAAI,YAAY,CAAC,EAAE,CAAC;MAChB,iBAAiB,CAAC,EAAE,CAAC;MACrB,EAAE,KAAK,IAAI;MACX,EAAE,KAAK,IAAI;MACX,EAAE,KAAK,IAAI;MACX,EAAE,KAAK,IAAI;MACX,EAAE,KAAK,IAAI;MACX,EAAE,KAAK,IAAI;MACX,EAAE,KAAK,IAAI;MACX,EAAE,KAAK,IAAI;MACX,EAAE,KAAK,IAAI;MACX,EAAE,KAAK,IAAI;MACX,EAAE,KAAK,IAAI,SAAS;IACtB,OAAO,KAAK,CAAC;GACd;;EAED,IAAI,EAAE,KAAK,IAAI,WAAW,EAAE,KAAK,IAAI,SAAS;IAC5C,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;;IAEvD,IAAI,YAAY,CAAC,SAAS,CAAC;QACvB,oBAAoB,IAAI,iBAAiB,CAAC,SAAS,CAAC,EAAE;MACxD,OAAO,KAAK,CAAC;KACd;GACF;;EAED,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;EACtB,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;EAClB,YAAY,GAAG,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;EAC3C,iBAAiB,GAAG,KAAK,CAAC;;EAE1B,OAAO,EAAE,KAAK,CAAC,EAAE;IACf,IAAI,EAAE,KAAK,IAAI,SAAS;MACtB,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;;MAEvD,IAAI,YAAY,CAAC,SAAS,CAAC;UACvB,oBAAoB,IAAI,iBAAiB,CAAC,SAAS,CAAC,EAAE;QACxD,MAAM;OACP;;KAEF,MAAM,IAAI,EAAE,KAAK,IAAI,SAAS;MAC7B,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;;MAEvD,IAAI,YAAY,CAAC,SAAS,CAAC,EAAE;QAC3B,MAAM;OACP;;KAEF,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,SAAS,IAAI,qBAAqB,CAAC,KAAK,CAAC;eACnE,oBAAoB,IAAI,iBAAiB,CAAC,EAAE,CAAC,EAAE;MACxD,MAAM;;KAEP,MAAM,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE;MACrB,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;MACnB,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC;MAC7B,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC;MAC/B,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;;MAEtC,IAAI,KAAK,CAAC,UAAU,IAAI,UAAU,EAAE;QAClC,iBAAiB,GAAG,IAAI,CAAC;QACzB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC5C,SAAS;OACV,MAAM;QACL,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QAC5B,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;QACnB,KAAK,CAAC,SAAS,GAAG,UAAU,CAAC;QAC7B,KAAK,CAAC,UAAU,GAAG,WAAW,CAAC;QAC/B,MAAM;OACP;KACF;;IAED,IAAI,iBAAiB,EAAE;MACrB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;MACvD,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;MAC5C,YAAY,GAAG,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;MAC3C,iBAAiB,GAAG,KAAK,CAAC;KAC3B;;IAED,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE;MACvB,UAAU,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;KACjC;;IAED,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;GAC/C;;EAED,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;;EAEvD,IAAI,KAAK,CAAC,MAAM,EAAE;IAChB,OAAO,IAAI,CAAC;GACb;;EAED,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;EACnB,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;EACvB,OAAO,KAAK,CAAC;CACd;;AAED,SAAS,sBAAsB,CAAC,KAAK,EAAE,UAAU,EAAE;EACjD,IAAI,EAAE;MACF,YAAY,EAAE,UAAU,CAAC;;EAE7B,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,IAAI,EAAE,KAAK,IAAI,SAAS;IACtB,OAAO,KAAK,CAAC;GACd;;EAED,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;EACtB,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;EAClB,KAAK,CAAC,QAAQ,EAAE,CAAC;EACjB,YAAY,GAAG,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;;EAE3C,OAAO,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;IAC1D,IAAI,EAAE,KAAK,IAAI,SAAS;MACtB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;MAC1D,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;MAE9C,IAAI,EAAE,KAAK,IAAI,SAAS;QACtB,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC9B,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;OAC7B,MAAM;QACL,OAAO,IAAI,CAAC;OACb;;KAEF,MAAM,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE;MACrB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;MACtD,gBAAgB,CAAC,KAAK,EAAE,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;MACvE,YAAY,GAAG,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;;KAE5C,MAAM,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,SAAS,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE;MAC7E,UAAU,CAAC,KAAK,EAAE,8DAA8D,CAAC,CAAC;;KAEnF,MAAM;MACL,KAAK,CAAC,QAAQ,EAAE,CAAC;MACjB,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;KAC7B;GACF;;EAED,UAAU,CAAC,KAAK,EAAE,4DAA4D,CAAC,CAAC;CACjF;;AAED,SAAS,sBAAsB,CAAC,KAAK,EAAE,UAAU,EAAE;EACjD,IAAI,YAAY;MACZ,UAAU;MACV,SAAS;MACT,SAAS;MACT,GAAG;MACH,EAAE,CAAC;;EAEP,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,IAAI,EAAE,KAAK,IAAI,SAAS;IACtB,OAAO,KAAK,CAAC;GACd;;EAED,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;EACtB,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;EAClB,KAAK,CAAC,QAAQ,EAAE,CAAC;EACjB,YAAY,GAAG,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;;EAE3C,OAAO,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;IAC1D,IAAI,EAAE,KAAK,IAAI,SAAS;MACtB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;MAC1D,KAAK,CAAC,QAAQ,EAAE,CAAC;MACjB,OAAO,IAAI,CAAC;;KAEb,MAAM,IAAI,EAAE,KAAK,IAAI,SAAS;MAC7B,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;MAC1D,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;MAE9C,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE;QACd,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;;;OAG/C,MAAM,IAAI,EAAE,GAAG,GAAG,IAAI,iBAAiB,CAAC,EAAE,CAAC,EAAE;QAC5C,KAAK,CAAC,MAAM,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;QACpC,KAAK,CAAC,QAAQ,EAAE,CAAC;;OAElB,MAAM,IAAI,CAAC,GAAG,GAAG,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;QACxC,SAAS,GAAG,GAAG,CAAC;QAChB,SAAS,GAAG,CAAC,CAAC;;QAEd,OAAO,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE;UACjC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;UAE9C,IAAI,CAAC,GAAG,GAAG,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;YAChC,SAAS,GAAG,CAAC,SAAS,IAAI,CAAC,IAAI,GAAG,CAAC;;WAEpC,MAAM;YACL,UAAU,CAAC,KAAK,EAAE,gCAAgC,CAAC,CAAC;WACrD;SACF;;QAED,KAAK,CAAC,MAAM,IAAI,iBAAiB,CAAC,SAAS,CAAC,CAAC;;QAE7C,KAAK,CAAC,QAAQ,EAAE,CAAC;;OAElB,MAAM;QACL,UAAU,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;OAC9C;;MAED,YAAY,GAAG,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;;KAE5C,MAAM,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE;MACrB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;MACtD,gBAAgB,CAAC,KAAK,EAAE,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;MACvE,YAAY,GAAG,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;;KAE5C,MAAM,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,SAAS,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE;MAC7E,UAAU,CAAC,KAAK,EAAE,8DAA8D,CAAC,CAAC;;KAEnF,MAAM;MACL,KAAK,CAAC,QAAQ,EAAE,CAAC;MACjB,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;KAC7B;GACF;;EAED,UAAU,CAAC,KAAK,EAAE,4DAA4D,CAAC,CAAC;CACjF;;AAED,SAAS,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE;EAC7C,IAAI,QAAQ,GAAG,IAAI;MACf,KAAK;MACL,IAAI,OAAO,KAAK,CAAC,GAAG;MACpB,OAAO;MACP,OAAO,IAAI,KAAK,CAAC,MAAM;MACvB,SAAS;MACT,UAAU;MACV,MAAM;MACN,cAAc;MACd,SAAS;MACT,eAAe,GAAG,EAAE;MACpB,OAAO;MACP,MAAM;MACN,SAAS;MACT,EAAE,CAAC;;EAEP,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,IAAI,EAAE,KAAK,IAAI,SAAS;IACtB,UAAU,GAAG,IAAI,CAAC;IAClB,SAAS,GAAG,KAAK,CAAC;IAClB,OAAO,GAAG,EAAE,CAAC;GACd,MAAM,IAAI,EAAE,KAAK,IAAI,SAAS;IAC7B,UAAU,GAAG,IAAI,CAAC;IAClB,SAAS,GAAG,IAAI,CAAC;IACjB,OAAO,GAAG,EAAE,CAAC;GACd,MAAM;IACL,OAAO,KAAK,CAAC;GACd;;EAED,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE;IACzB,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC;GACzC;;EAED,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE9C,OAAO,EAAE,KAAK,CAAC,EAAE;IACf,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;;IAE7C,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;IAE5C,IAAI,EAAE,KAAK,UAAU,EAAE;MACrB,KAAK,CAAC,QAAQ,EAAE,CAAC;MACjB,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;MACjB,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;MACvB,KAAK,CAAC,IAAI,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;MAChD,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;MACvB,OAAO,IAAI,CAAC;KACb,MAAM,IAAI,CAAC,QAAQ,EAAE;MACpB,UAAU,CAAC,KAAK,EAAE,8CAA8C,CAAC,CAAC;KACnE;;IAED,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;IACpC,MAAM,GAAG,cAAc,GAAG,KAAK,CAAC;;IAEhC,IAAI,EAAE,KAAK,IAAI,SAAS;MACtB,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;;MAEvD,IAAI,YAAY,CAAC,SAAS,CAAC,EAAE;QAC3B,MAAM,GAAG,cAAc,GAAG,IAAI,CAAC;QAC/B,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;OAC9C;KACF;;IAED,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;IACnB,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC7D,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC;IACnB,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC;IACvB,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;;IAE7C,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;IAE5C,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,SAAS;MAClE,MAAM,GAAG,IAAI,CAAC;MACd,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;MAC9C,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;MAC7C,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;MAC7D,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;KAC1B;;IAED,IAAI,SAAS,EAAE;MACb,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;KAC/E,MAAM,IAAI,MAAM,EAAE;MACjB,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;KAC1F,MAAM;MACL,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACvB;;IAED,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;;IAE7C,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;IAE5C,IAAI,EAAE,KAAK,IAAI,SAAS;MACtB,QAAQ,GAAG,IAAI,CAAC;MAChB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;KAC/C,MAAM;MACL,QAAQ,GAAG,KAAK,CAAC;KAClB;GACF;;EAED,UAAU,CAAC,KAAK,EAAE,uDAAuD,CAAC,CAAC;CAC5E;;AAED,SAAS,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE;EAC1C,IAAI,YAAY;MACZ,OAAO;MACP,QAAQ,SAAS,aAAa;MAC9B,cAAc,GAAG,KAAK;MACtB,cAAc,GAAG,KAAK;MACtB,UAAU,OAAO,UAAU;MAC3B,UAAU,OAAO,CAAC;MAClB,cAAc,GAAG,KAAK;MACtB,GAAG;MACH,EAAE,CAAC;;EAEP,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,IAAI,EAAE,KAAK,IAAI,SAAS;IACtB,OAAO,GAAG,KAAK,CAAC;GACjB,MAAM,IAAI,EAAE,KAAK,IAAI,SAAS;IAC7B,OAAO,GAAG,IAAI,CAAC;GAChB,MAAM;IACL,OAAO,KAAK,CAAC;GACd;;EAED,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;EACtB,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;;EAElB,OAAO,EAAE,KAAK,CAAC,EAAE;IACf,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;IAE9C,IAAI,EAAE,KAAK,IAAI,WAAW,EAAE,KAAK,IAAI,SAAS;MAC5C,IAAI,aAAa,KAAK,QAAQ,EAAE;QAC9B,QAAQ,GAAG,CAAC,EAAE,KAAK,IAAI,WAAW,aAAa,GAAG,cAAc,CAAC;OAClE,MAAM;QACL,UAAU,CAAC,KAAK,EAAE,sCAAsC,CAAC,CAAC;OAC3D;;KAEF,MAAM,IAAI,CAAC,GAAG,GAAG,eAAe,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;MAC3C,IAAI,GAAG,KAAK,CAAC,EAAE;QACb,UAAU,CAAC,KAAK,EAAE,8EAA8E,CAAC,CAAC;OACnG,MAAM,IAAI,CAAC,cAAc,EAAE;QAC1B,UAAU,GAAG,UAAU,GAAG,GAAG,GAAG,CAAC,CAAC;QAClC,cAAc,GAAG,IAAI,CAAC;OACvB,MAAM;QACL,UAAU,CAAC,KAAK,EAAE,2CAA2C,CAAC,CAAC;OAChE;;KAEF,MAAM;MACL,MAAM;KACP;GACF;;EAED,IAAI,cAAc,CAAC,EAAE,CAAC,EAAE;IACtB,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE;WAC9C,cAAc,CAAC,EAAE,CAAC,EAAE;;IAE3B,IAAI,EAAE,KAAK,IAAI,SAAS;MACtB,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE;aAC9C,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE;KACnC;GACF;;EAED,OAAO,EAAE,KAAK,CAAC,EAAE;IACf,aAAa,CAAC,KAAK,CAAC,CAAC;IACrB,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC;;IAErB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;IAE5C,OAAO,CAAC,CAAC,cAAc,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU;YAChD,EAAE,KAAK,IAAI,YAAY,EAAE;MAC/B,KAAK,CAAC,UAAU,EAAE,CAAC;MACnB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;KAC/C;;IAED,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU,EAAE;MACpD,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;KAC/B;;IAED,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE;MACd,UAAU,EAAE,CAAC;MACb,SAAS;KACV;;;IAGD,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU,EAAE;;;MAGjC,IAAI,QAAQ,KAAK,aAAa,EAAE;QAC9B,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,GAAG,CAAC,GAAG,UAAU,GAAG,UAAU,CAAC,CAAC;OACnF,MAAM,IAAI,QAAQ,KAAK,aAAa,EAAE;QACrC,IAAI,cAAc,EAAE;UAClB,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC;SACtB;OACF;;;MAGD,MAAM;KACP;;;IAGD,IAAI,OAAO,EAAE;;;MAGX,IAAI,cAAc,CAAC,EAAE,CAAC,EAAE;QACtB,cAAc,GAAG,IAAI,CAAC;;QAEtB,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,GAAG,CAAC,GAAG,UAAU,GAAG,UAAU,CAAC,CAAC;;;OAGnF,MAAM,IAAI,cAAc,EAAE;QACzB,cAAc,GAAG,KAAK,CAAC;QACvB,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;;;OAGrD,MAAM,IAAI,UAAU,KAAK,CAAC,EAAE;QAC3B,IAAI,cAAc,EAAE;UAClB,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC;SACrB;;;OAGF,MAAM;QACL,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;OACjD;;;KAGF,MAAM;;MAEL,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,GAAG,CAAC,GAAG,UAAU,GAAG,UAAU,CAAC,CAAC;KACnF;;IAED,cAAc,GAAG,IAAI,CAAC;IACtB,cAAc,GAAG,IAAI,CAAC;IACtB,UAAU,GAAG,CAAC,CAAC;IACf,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC;;IAE9B,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE;MAChC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;KAC/C;;IAED,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;GAC5D;;EAED,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE;EAC5C,IAAI,KAAK;MACL,IAAI,QAAQ,KAAK,CAAC,GAAG;MACrB,OAAO,KAAK,KAAK,CAAC,MAAM;MACxB,OAAO,KAAK,EAAE;MACd,SAAS;MACT,QAAQ,IAAI,KAAK;MACjB,EAAE,CAAC;;EAEP,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE;IACzB,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC;GACzC;;EAED,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,OAAO,EAAE,KAAK,CAAC,EAAE;;IAEf,IAAI,EAAE,KAAK,IAAI,SAAS;MACtB,MAAM;KACP;;IAED,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;;IAEvD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;MAC5B,MAAM;KACP;;IAED,QAAQ,GAAG,IAAI,CAAC;IAChB,KAAK,CAAC,QAAQ,EAAE,CAAC;;IAEjB,IAAI,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;MACxC,IAAI,KAAK,CAAC,UAAU,IAAI,UAAU,EAAE;QAClC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC5C,SAAS;OACV;KACF;;IAED,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;IACnB,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC9D,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3B,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;;IAErC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;IAE5C,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE;MACzE,UAAU,CAAC,KAAK,EAAE,qCAAqC,CAAC,CAAC;KAC1D,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU,EAAE;MACxC,MAAM;KACP;GACF;;EAED,IAAI,QAAQ,EAAE;IACZ,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;IACjB,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;IACvB,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC;IACxB,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;IACvB,OAAO,IAAI,CAAC;GACb;EACD,OAAO,KAAK,CAAC;CACd;;AAED,SAAS,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE;EACvD,IAAI,SAAS;MACT,YAAY;MACZ,KAAK;MACL,IAAI,YAAY,KAAK,CAAC,GAAG;MACzB,OAAO,SAAS,KAAK,CAAC,MAAM;MAC5B,OAAO,SAAS,EAAE;MAClB,eAAe,GAAG,EAAE;MACpB,MAAM,UAAU,IAAI;MACpB,OAAO,SAAS,IAAI;MACpB,SAAS,OAAO,IAAI;MACpB,aAAa,GAAG,KAAK;MACrB,QAAQ,QAAQ,KAAK;MACrB,EAAE,CAAC;;EAEP,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE;IACzB,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC;GACzC;;EAED,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,OAAO,EAAE,KAAK,CAAC,EAAE;IACf,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IACvD,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;;;;;;IAMnB,IAAI,CAAC,EAAE,KAAK,IAAI,WAAW,EAAE,KAAK,IAAI,YAAY,YAAY,CAAC,SAAS,CAAC,EAAE;;MAEzE,IAAI,EAAE,KAAK,IAAI,SAAS;QACtB,IAAI,aAAa,EAAE;UACjB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;UACzE,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;SACrC;;QAED,QAAQ,GAAG,IAAI,CAAC;QAChB,aAAa,GAAG,IAAI,CAAC;QACrB,YAAY,GAAG,IAAI,CAAC;;OAErB,MAAM,IAAI,aAAa,EAAE;;QAExB,aAAa,GAAG,KAAK,CAAC;QACtB,YAAY,GAAG,IAAI,CAAC;;OAErB,MAAM;QACL,UAAU,CAAC,KAAK,EAAE,wDAAwD,CAAC,CAAC;OAC7E;;MAED,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;MACpB,EAAE,GAAG,SAAS,CAAC;;;;;KAKhB,MAAM,IAAI,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE;;MAExE,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE;QACxB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;QAE5C,OAAO,cAAc,CAAC,EAAE,CAAC,EAAE;UACzB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;SAC/C;;QAED,IAAI,EAAE,KAAK,IAAI,SAAS;UACtB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;UAE9C,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE;YACrB,UAAU,CAAC,KAAK,EAAE,yFAAyF,CAAC,CAAC;WAC9G;;UAED,IAAI,aAAa,EAAE;YACjB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;YACzE,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;WACrC;;UAED,QAAQ,GAAG,IAAI,CAAC;UAChB,aAAa,GAAG,KAAK,CAAC;UACtB,YAAY,GAAG,KAAK,CAAC;UACrB,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC;UACnB,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC;;SAExB,MAAM,IAAI,QAAQ,EAAE;UACnB,UAAU,CAAC,KAAK,EAAE,0DAA0D,CAAC,CAAC;;SAE/E,MAAM;UACL,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;UACjB,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;UACvB,OAAO,IAAI,CAAC;SACb;;OAEF,MAAM,IAAI,QAAQ,EAAE;QACnB,UAAU,CAAC,KAAK,EAAE,gFAAgF,CAAC,CAAC;;OAErG,MAAM;QACL,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;QACjB,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;QACvB,OAAO,IAAI,CAAC;OACb;;KAEF,MAAM;MACL,MAAM;KACP;;;;;IAKD,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU,EAAE;MACzD,IAAI,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,IAAI,EAAE,YAAY,CAAC,EAAE;QACzE,IAAI,aAAa,EAAE;UACjB,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC;SACxB,MAAM;UACL,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;SAC1B;OACF;;MAED,IAAI,CAAC,aAAa,EAAE;QAClB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAC9E,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;OACrC;;MAED,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;MACrC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;KAC7C;;IAED,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE;MAC/C,UAAU,CAAC,KAAK,EAAE,oCAAoC,CAAC,CAAC;KACzD,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU,EAAE;MACxC,MAAM;KACP;GACF;;;;;;;EAOD,IAAI,aAAa,EAAE;IACjB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;GAC1E;;;EAGD,IAAI,QAAQ,EAAE;IACZ,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;IACjB,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;IACvB,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC;IACvB,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;GACxB;;EAED,OAAO,QAAQ,CAAC;CACjB;;AAED,SAAS,eAAe,CAAC,KAAK,EAAE;EAC9B,IAAI,SAAS;MACT,UAAU,GAAG,KAAK;MAClB,OAAO,MAAM,KAAK;MAClB,SAAS;MACT,OAAO;MACP,EAAE,CAAC;;EAEP,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,IAAI,EAAE,KAAK,IAAI,SAAS,EAAA,OAAO,KAAK,CAAC,EAAA;;EAErC,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,EAAE;IACtB,UAAU,CAAC,KAAK,EAAE,+BAA+B,CAAC,CAAC;GACpD;;EAED,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE9C,IAAI,EAAE,KAAK,IAAI,SAAS;IACtB,UAAU,GAAG,IAAI,CAAC;IAClB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;GAE/C,MAAM,IAAI,EAAE,KAAK,IAAI,SAAS;IAC7B,OAAO,GAAG,IAAI,CAAC;IACf,SAAS,GAAG,IAAI,CAAC;IACjB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;GAE/C,MAAM;IACL,SAAS,GAAG,GAAG,CAAC;GACjB;;EAED,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;;EAE3B,IAAI,UAAU,EAAE;IACd,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE;WAC9C,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,IAAI,SAAS;;IAEvC,IAAI,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE;MACjC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;MACvD,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;KAC/C,MAAM;MACL,UAAU,CAAC,KAAK,EAAE,oDAAoD,CAAC,CAAC;KACzE;GACF,MAAM;IACL,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE;;MAEpC,IAAI,EAAE,KAAK,IAAI,SAAS;QACtB,IAAI,CAAC,OAAO,EAAE;UACZ,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;;UAEjE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACvC,UAAU,CAAC,KAAK,EAAE,iDAAiD,CAAC,CAAC;WACtE;;UAED,OAAO,GAAG,IAAI,CAAC;UACf,SAAS,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;SAChC,MAAM;UACL,UAAU,CAAC,KAAK,EAAE,6CAA6C,CAAC,CAAC;SAClE;OACF;;MAED,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;KAC/C;;IAED,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;IAEvD,IAAI,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;MACzC,UAAU,CAAC,KAAK,EAAE,qDAAqD,CAAC,CAAC;KAC1E;GACF;;EAED,IAAI,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;IAC7C,UAAU,CAAC,KAAK,EAAE,2CAA2C,GAAG,OAAO,CAAC,CAAC;GAC1E;;EAED,IAAI,UAAU,EAAE;IACd,KAAK,CAAC,GAAG,GAAG,OAAO,CAAC;;GAErB,MAAM,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;IACxD,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;;GAE/C,MAAM,IAAI,SAAS,KAAK,GAAG,EAAE;IAC5B,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,OAAO,CAAC;;GAE3B,MAAM,IAAI,SAAS,KAAK,IAAI,EAAE;IAC7B,KAAK,CAAC,GAAG,GAAG,oBAAoB,GAAG,OAAO,CAAC;;GAE5C,MAAM;IACL,UAAU,CAAC,KAAK,EAAE,yBAAyB,GAAG,SAAS,GAAG,GAAG,CAAC,CAAC;GAChE;;EAED,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,kBAAkB,CAAC,KAAK,EAAE;EACjC,IAAI,SAAS;MACT,EAAE,CAAC;;EAEP,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,IAAI,EAAE,KAAK,IAAI,SAAS,EAAA,OAAO,KAAK,CAAC,EAAA;;EAErC,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE;IACzB,UAAU,CAAC,KAAK,EAAE,mCAAmC,CAAC,CAAC;GACxD;;EAED,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;EAC9C,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;;EAE3B,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE;IAC9D,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;GAC/C;;EAED,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE;IAChC,UAAU,CAAC,KAAK,EAAE,4DAA4D,CAAC,CAAC;GACjF;;EAED,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;EAC5D,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,SAAS,CAAC,KAAK,EAAE;EACxB,IAAI,SAAS,EAAE,KAAK;MAChB,EAAE,CAAC;;EAEP,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,IAAI,EAAE,KAAK,IAAI,SAAS,EAAA,OAAO,KAAK,CAAC,EAAA;;EAErC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;EAC9C,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;;EAE3B,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE;IAC9D,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;GAC/C;;EAED,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE;IAChC,UAAU,CAAC,KAAK,EAAE,2DAA2D,CAAC,CAAC;GAChF;;EAED,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAErD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;IAC1C,UAAU,CAAC,KAAK,EAAE,sBAAsB,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC;GACzD;;EAED,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;EACtC,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;EACrC,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE;EAChF,IAAI,gBAAgB;MAChB,iBAAiB;MACjB,qBAAqB;MACrB,YAAY,GAAG,CAAC;MAChB,SAAS,IAAI,KAAK;MAClB,UAAU,GAAG,KAAK;MAClB,SAAS;MACT,YAAY;MACZ,IAAI;MACJ,UAAU;MACV,WAAW,CAAC;;EAEhB,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE;IAC3B,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;GAC/B;;EAED,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC;EACpB,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;EACpB,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;EACpB,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;;EAEpB,gBAAgB,GAAG,iBAAiB,GAAG,qBAAqB;IAC1D,iBAAiB,KAAK,WAAW;IACjC,gBAAgB,MAAM,WAAW,CAAC;;EAEpC,IAAI,WAAW,EAAE;IACf,IAAI,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;MACxC,SAAS,GAAG,IAAI,CAAC;;MAEjB,IAAI,KAAK,CAAC,UAAU,GAAG,YAAY,EAAE;QACnC,YAAY,GAAG,CAAC,CAAC;OAClB,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,YAAY,EAAE;QAC5C,YAAY,GAAG,CAAC,CAAC;OAClB,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,YAAY,EAAE;QAC1C,YAAY,GAAG,CAAC,CAAC,CAAC;OACnB;KACF;GACF;;EAED,IAAI,YAAY,KAAK,CAAC,EAAE;IACtB,OAAO,eAAe,CAAC,KAAK,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE;MAC1D,IAAI,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;QACxC,SAAS,GAAG,IAAI,CAAC;QACjB,qBAAqB,GAAG,gBAAgB,CAAC;;QAEzC,IAAI,KAAK,CAAC,UAAU,GAAG,YAAY,EAAE;UACnC,YAAY,GAAG,CAAC,CAAC;SAClB,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,YAAY,EAAE;UAC5C,YAAY,GAAG,CAAC,CAAC;SAClB,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,YAAY,EAAE;UAC1C,YAAY,GAAG,CAAC,CAAC,CAAC;SACnB;OACF,MAAM;QACL,qBAAqB,GAAG,KAAK,CAAC;OAC/B;KACF;GACF;;EAED,IAAI,qBAAqB,EAAE;IACzB,qBAAqB,GAAG,SAAS,IAAI,YAAY,CAAC;GACnD;;EAED,IAAI,YAAY,KAAK,CAAC,IAAI,iBAAiB,KAAK,WAAW,EAAE;IAC3D,IAAI,eAAe,KAAK,WAAW,IAAI,gBAAgB,KAAK,WAAW,EAAE;MACvE,UAAU,GAAG,YAAY,CAAC;KAC3B,MAAM;MACL,UAAU,GAAG,YAAY,GAAG,CAAC,CAAC;KAC/B;;IAED,WAAW,GAAG,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC;;IAE/C,IAAI,YAAY,KAAK,CAAC,EAAE;MACtB,IAAI,qBAAqB;WACpB,iBAAiB,CAAC,KAAK,EAAE,WAAW,CAAC;WACrC,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;UAClD,kBAAkB,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE;QACzC,UAAU,GAAG,IAAI,CAAC;OACnB,MAAM;QACL,IAAI,CAAC,iBAAiB,IAAI,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC;YACxD,sBAAsB,CAAC,KAAK,EAAE,UAAU,CAAC;YACzC,sBAAsB,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE;UAC7C,UAAU,GAAG,IAAI,CAAC;;SAEnB,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE;UAC3B,UAAU,GAAG,IAAI,CAAC;;UAElB,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE;YAC/C,UAAU,CAAC,KAAK,EAAE,2CAA2C,CAAC,CAAC;WAChE;;SAEF,MAAM,IAAI,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,eAAe,KAAK,WAAW,CAAC,EAAE;UAC9E,UAAU,GAAG,IAAI,CAAC;;UAElB,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,EAAE;YACtB,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;WACjB;SACF;;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE;UACzB,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;SAC9C;OACF;KACF,MAAM,IAAI,YAAY,KAAK,CAAC,EAAE;;;MAG7B,UAAU,GAAG,qBAAqB,IAAI,iBAAiB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;KAC7E;GACF;;EAED,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;IAC3C,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;MACrB,KAAK,SAAS,GAAG,CAAC,EAAE,YAAY,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM;WACxD,SAAS,GAAG,YAAY;WACxB,SAAS,IAAI,CAAC,EAAE;QACnB,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;;;;;;QAMtC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;UAC9B,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;UAC5C,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;UACrB,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE;YACzB,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;WAC9C;UACD,MAAM;SACP;OACF;KACF,MAAM,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,UAAU,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE;MACnF,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;MAE1D,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE;QACrD,UAAU,CAAC,KAAK,EAAE,+BAA+B,GAAG,KAAK,CAAC,GAAG,GAAG,uBAAuB,GAAG,IAAI,CAAC,IAAI,GAAG,UAAU,GAAG,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;OACtI;;MAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;QAC/B,UAAU,CAAC,KAAK,EAAE,+BAA+B,GAAG,KAAK,CAAC,GAAG,GAAG,gBAAgB,CAAC,CAAC;OACnF,MAAM;QACL,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE;UACzB,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;SAC9C;OACF;KACF,MAAM;MACL,UAAU,CAAC,KAAK,EAAE,gBAAgB,GAAG,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;KACvD;GACF;;EAED,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE;IAC3B,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GAChC;EACD,OAAO,KAAK,CAAC,GAAG,KAAK,IAAI,KAAK,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,UAAU,CAAC;CACnE;;AAED,SAAS,YAAY,CAAC,KAAK,EAAE;EAC3B,IAAI,aAAa,GAAG,KAAK,CAAC,QAAQ;MAC9B,SAAS;MACT,aAAa;MACb,aAAa;MACb,aAAa,GAAG,KAAK;MACrB,EAAE,CAAC;;EAEP,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;EACrB,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC;EACrC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;EAClB,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;;EAErB,OAAO,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;IAC1D,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;;IAErC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;IAE5C,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,IAAI,EAAE,KAAK,IAAI,SAAS;MAC9C,MAAM;KACP;;IAED,aAAa,GAAG,IAAI,CAAC;IACrB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC9C,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;;IAE3B,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE;MACpC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;KAC/C;;IAED,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7D,aAAa,GAAG,EAAE,CAAC;;IAEnB,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;MAC5B,UAAU,CAAC,KAAK,EAAE,8DAA8D,CAAC,CAAC;KACnF;;IAED,OAAO,EAAE,KAAK,CAAC,EAAE;MACf,OAAO,cAAc,CAAC,EAAE,CAAC,EAAE;QACzB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;OAC/C;;MAED,IAAI,EAAE,KAAK,IAAI,SAAS;QACtB,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE;eAC9C,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;QAChC,MAAM;OACP;;MAED,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE,EAAA,MAAM,EAAA;;MAEtB,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;;MAE3B,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE;QACpC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;OAC/C;;MAED,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;KAClE;;IAED,IAAI,EAAE,KAAK,CAAC,EAAE,EAAA,aAAa,CAAC,KAAK,CAAC,CAAC,EAAA;;IAEnC,IAAI,eAAe,CAAC,IAAI,CAAC,iBAAiB,EAAE,aAAa,CAAC,EAAE;MAC1D,iBAAiB,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;KACvE,MAAM;MACL,YAAY,CAAC,KAAK,EAAE,8BAA8B,GAAG,aAAa,GAAG,GAAG,CAAC,CAAC;KAC3E;GACF;;EAED,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;;EAErC,IAAI,KAAK,CAAC,UAAU,KAAK,CAAC;MACtB,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,IAAI;MACnD,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,IAAI;MACnD,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,IAAI,SAAS;IAC9D,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;IACpB,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;;GAEtC,MAAM,IAAI,aAAa,EAAE;IACxB,UAAU,CAAC,KAAK,EAAE,iCAAiC,CAAC,CAAC;GACtD;;EAED,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,GAAG,CAAC,EAAE,iBAAiB,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;EACzE,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;;EAErC,IAAI,KAAK,CAAC,eAAe;MACrB,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE;IACxF,YAAY,CAAC,KAAK,EAAE,kDAAkD,CAAC,CAAC;GACzE;;EAED,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;;EAEnC,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,SAAS,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE;;IAEtE,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,SAAS;MAC1D,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;MACpB,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;KACtC;IACD,OAAO;GACR;;EAED,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;IACvC,UAAU,CAAC,KAAK,EAAE,uDAAuD,CAAC,CAAC;GAC5E,MAAM;IACL,OAAO;GACR;CACF;;;AAGD,SAAS,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE;EACrC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;EACtB,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;;EAExB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;;;IAGtB,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI;QAC3C,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,UAAU;MACvD,KAAK,IAAI,IAAI,CAAC;KACf;;;IAGD,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE;MAClC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACxB;GACF;;EAED,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;;;EAGtC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC;;EAEpB,OAAO,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,aAAa;IACjE,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC;IACtB,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;GACrB;;EAED,OAAO,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;IAC1C,YAAY,CAAC,KAAK,CAAC,CAAC;GACrB;;EAED,OAAO,KAAK,CAAC,SAAS,CAAC;CACxB;;;AAGD,SAASsB,SAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE;EACzC,IAAI,SAAS,GAAG,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC;;EAE7D,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IACrE,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;GAC5B;CACF;;;AAGD,SAASC,MAAI,CAAC,KAAK,EAAE,OAAO,EAAE;EAC5B,IAAI,SAAS,GAAG,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;;EAE9C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;;IAE1B,OAAO,SAAS,CAAC;GAClB,MAAM,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;IACjC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;GACrB;EACD,MAAM,IAAIvB,eAAa,CAAC,0DAA0D,CAAC,CAAC;CACrF;;;AAGD,SAASwB,aAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;EAC3CF,SAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAEF,qBAAmB,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;CACjF;;;AAGD,SAASK,UAAQ,CAAC,KAAK,EAAE,OAAO,EAAE;EAChC,OAAOF,MAAI,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAEH,qBAAmB,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;CAC7E;;;AAGD,gBAA6BE,SAAO,CAAC;AACrC,aAA6BC,MAAI,CAAC;AAClC,oBAA6BC,aAAW,CAAC;AACzC,iBAA6BC,UAAQ,CAAC;;;;;;;;;;;AC9iDtC,IAAIxB,QAAM,gBAAgBC,QAAmB,CAAC;AAC9C,IAAIF,eAAa,SAASM,SAAsB,CAAC;AACjD,IAAIe,qBAAmB,GAAGd,YAAgC,CAAC;AAC3D,IAAIa,qBAAmB,GAAGT,YAAgC,CAAC;;AAE3D,IAAIK,WAAS,SAAS,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;AAChD,IAAID,iBAAe,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;;AAEtD,IAAI,QAAQ,oBAAoB,IAAI,CAAC;AACrC,IAAI,cAAc,cAAc,IAAI,CAAC;AACrC,IAAI,UAAU,kBAAkB,IAAI,CAAC;AACrC,IAAI,gBAAgB,YAAY,IAAI,CAAC;AACrC,IAAI,iBAAiB,WAAW,IAAI,CAAC;AACrC,IAAI,UAAU,kBAAkB,IAAI,CAAC;AACrC,IAAI,YAAY,gBAAgB,IAAI,CAAC;AACrC,IAAI,cAAc,cAAc,IAAI,CAAC;AACrC,IAAI,iBAAiB,WAAW,IAAI,CAAC;AACrC,IAAI,aAAa,eAAe,IAAI,CAAC;AACrC,IAAI,UAAU,kBAAkB,IAAI,CAAC;AACrC,IAAI,UAAU,kBAAkB,IAAI,CAAC;AACrC,IAAI,UAAU,kBAAkB,IAAI,CAAC;AACrC,IAAI,iBAAiB,WAAW,IAAI,CAAC;AACrC,IAAI,aAAa,eAAe,IAAI,CAAC;AACrC,IAAI,kBAAkB,UAAU,IAAI,CAAC;AACrC,IAAI,wBAAwB,IAAI,IAAI,CAAC;AACrC,IAAI,yBAAyB,GAAG,IAAI,CAAC;AACrC,IAAI,iBAAiB,WAAW,IAAI,CAAC;AACrC,IAAI,uBAAuB,KAAK,IAAI,CAAC;AACrC,IAAI,kBAAkB,UAAU,IAAI,CAAC;AACrC,IAAI,wBAAwB,IAAI,IAAI,CAAC;;AAErC,IAAI,gBAAgB,GAAG,EAAE,CAAC;;AAE1B,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC;AAClC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;AACjC,gBAAgB,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;;AAEjC,IAAI,0BAA0B,GAAG;EAC/B,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;EAC/C,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;CAChD,CAAC;;AAEF,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE;EACpC,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC;;EAElD,IAAI,GAAG,KAAK,IAAI,EAAE,EAAA,OAAO,EAAE,CAAC,EAAA;;EAE5B,MAAM,GAAG,EAAE,CAAC;EACZ,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;EAExB,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IAChE,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;;IAEzB,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;MAC5B,GAAG,GAAG,oBAAoB,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAC3C;IACD,IAAI,GAAG,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;;IAE/C,IAAI,IAAI,IAAIA,iBAAe,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE;MAC1D,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;KAClC;;IAED,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;GACrB;;EAED,OAAO,MAAM,CAAC;CACf;;AAED,SAAS,SAAS,CAAC,SAAS,EAAE;EAC5B,IAAI,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;;EAE3B,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;;EAE9C,IAAI,SAAS,IAAI,IAAI,EAAE;IACrB,MAAM,GAAG,GAAG,CAAC;IACb,MAAM,GAAG,CAAC,CAAC;GACZ,MAAM,IAAI,SAAS,IAAI,MAAM,EAAE;IAC9B,MAAM,GAAG,GAAG,CAAC;IACb,MAAM,GAAG,CAAC,CAAC;GACZ,MAAM,IAAI,SAAS,IAAI,UAAU,EAAE;IAClC,MAAM,GAAG,GAAG,CAAC;IACb,MAAM,GAAG,CAAC,CAAC;GACZ,MAAM;IACL,MAAM,IAAIf,eAAa,CAAC,+DAA+D,CAAC,CAAC;GAC1F;;EAED,OAAO,IAAI,GAAG,MAAM,GAAGC,QAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;CAC5E;;AAED,SAASyB,OAAK,CAAC,OAAO,EAAE;EACtB,IAAI,CAAC,MAAM,SAAS,OAAO,CAAC,QAAQ,CAAC,IAAIL,qBAAmB,CAAC;EAC7D,IAAI,CAAC,MAAM,SAAS,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;EAC1D,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC;EACpD,IAAI,CAAC,SAAS,OAAOpB,QAAM,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;EACzF,IAAI,CAAC,QAAQ,OAAO,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC;EAC5E,IAAI,CAAC,QAAQ,OAAO,OAAO,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC;EACjD,IAAI,CAAC,SAAS,MAAM,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;EAC/C,IAAI,CAAC,MAAM,SAAS,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC;EAC/C,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC;;EAErD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;EAClD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;;EAElD,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;EAChB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;;EAEjB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;EACrB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;CAC5B;;;AAGD,SAAS,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE;EACpC,IAAI,GAAG,GAAGA,QAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC;MAChC,QAAQ,GAAG,CAAC;MACZ,IAAI,GAAG,CAAC,CAAC;MACT,MAAM,GAAG,EAAE;MACX,IAAI;MACJ,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;;EAE3B,OAAO,QAAQ,GAAG,MAAM,EAAE;IACxB,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACtC,IAAI,IAAI,KAAK,CAAC,CAAC,EAAE;MACf,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;MAC9B,QAAQ,GAAG,MAAM,CAAC;KACnB,MAAM;MACL,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;MACxC,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC;KACrB;;IAED,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,MAAM,IAAI,GAAG,CAAC,EAAA;;IAEhD,MAAM,IAAI,IAAI,CAAC;GAChB;;EAED,OAAO,MAAM,CAAC;CACf;;AAED,SAAS,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE;EACtC,OAAO,IAAI,GAAGA,QAAM,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;CACxD;;AAED,SAAS,qBAAqB,CAAC,KAAK,EAAE,GAAG,EAAE;EACzC,IAAI,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC;;EAExB,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IAC/E,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;;IAElC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;MACrB,OAAO,IAAI,CAAC;KACb;GACF;;EAED,OAAO,KAAK,CAAC;CACd;;;AAGD,SAAS,YAAY,CAAC,CAAC,EAAE;EACvB,OAAO,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,QAAQ,CAAC;CAC3C;;;;;;AAMD,SAAS,WAAW,CAAC,CAAC,EAAE;EACtB,QAAQ,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ;UAC9B,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,KAAK,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,MAAM,CAAC;UAChE,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,KAAK,CAAC,KAAK,MAAM,WAAW;WACzD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC;CACzC;;;AAGD,SAAS,WAAW,CAAC,CAAC,EAAE;;;EAGtB,OAAO,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,MAAM;;OAEhC,CAAC,KAAK,UAAU;OAChB,CAAC,KAAK,wBAAwB;OAC9B,CAAC,KAAK,yBAAyB;OAC/B,CAAC,KAAK,uBAAuB;OAC7B,CAAC,KAAK,wBAAwB;;OAE9B,CAAC,KAAK,UAAU;OAChB,CAAC,KAAK,UAAU,CAAC;CACvB;;;AAGD,SAAS,gBAAgB,CAAC,CAAC,EAAE;;;EAG3B,OAAO,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,MAAM;OAChC,CAAC,YAAY,CAAC,CAAC,CAAC;;;OAGhB,CAAC,KAAK,UAAU;OAChB,CAAC,KAAK,aAAa;OACnB,CAAC,KAAK,UAAU;OAChB,CAAC,KAAK,UAAU;OAChB,CAAC,KAAK,wBAAwB;OAC9B,CAAC,KAAK,yBAAyB;OAC/B,CAAC,KAAK,uBAAuB;OAC7B,CAAC,KAAK,wBAAwB;;OAE9B,CAAC,KAAK,UAAU;OAChB,CAAC,KAAK,cAAc;OACpB,CAAC,KAAK,aAAa;OACnB,CAAC,KAAK,gBAAgB;OACtB,CAAC,KAAK,kBAAkB;OACxB,CAAC,KAAK,iBAAiB;OACvB,CAAC,KAAK,iBAAiB;OACvB,CAAC,KAAK,iBAAiB;;OAEvB,CAAC,KAAK,YAAY;OAClB,CAAC,KAAK,kBAAkB;OACxB,CAAC,KAAK,iBAAiB,CAAC;CAC9B;;AAED,IAAI,WAAW,KAAK,CAAC;IACjB,YAAY,IAAI,CAAC;IACjB,aAAa,GAAG,CAAC;IACjB,YAAY,IAAI,CAAC;IACjB,YAAY,IAAI,CAAC,CAAC;;;;;;;;;AAStB,SAAS,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,iBAAiB,EAAE;EAC/F,IAAI,CAAC,CAAC;EACN,IAAI,IAAI,CAAC;EACT,IAAI,YAAY,GAAG,KAAK,CAAC;EACzB,IAAI,eAAe,GAAG,KAAK,CAAC;EAC5B,IAAI,gBAAgB,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC;EACxC,IAAI,iBAAiB,GAAG,CAAC,CAAC,CAAC;EAC3B,IAAI,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;aACvC,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;;EAE/D,IAAI,cAAc,EAAE;;;IAGlB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;MAClC,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;MAC5B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;QACtB,OAAO,YAAY,CAAC;OACrB;MACD,KAAK,GAAG,KAAK,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;KACpC;GACF,MAAM;;IAEL,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;MAClC,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;MAC5B,IAAI,IAAI,KAAK,cAAc,EAAE;QAC3B,YAAY,GAAG,IAAI,CAAC;;QAEpB,IAAI,gBAAgB,EAAE;UACpB,eAAe,GAAG,eAAe;;aAE9B,CAAC,GAAG,iBAAiB,GAAG,CAAC,GAAG,SAAS;aACrC,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;UAC1C,iBAAiB,GAAG,CAAC,CAAC;SACvB;OACF,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;QAC7B,OAAO,YAAY,CAAC;OACrB;MACD,KAAK,GAAG,KAAK,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;KACpC;;IAED,eAAe,GAAG,eAAe,KAAK,gBAAgB;OACnD,CAAC,GAAG,iBAAiB,GAAG,CAAC,GAAG,SAAS;OACrC,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;GAC5C;;;;EAID,IAAI,CAAC,YAAY,IAAI,CAAC,eAAe,EAAE;;;IAGrC,OAAO,KAAK,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;QACtC,WAAW,GAAG,YAAY,CAAC;GAChC;;EAED,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,cAAc,GAAG,CAAC,EAAE;IAC3C,OAAO,YAAY,CAAC;GACrB;;;EAGD,OAAO,eAAe,GAAG,YAAY,GAAG,aAAa,CAAC;CACvD;;;;;;;;AAQD,SAAS,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;EAChD,KAAK,CAAC,IAAI,IAAI,YAAY;IACxB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;MACvB,OAAO,IAAI,CAAC;KACb;IACD,IAAI,CAAC,KAAK,CAAC,YAAY;QACnB,0BAA0B,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;MACrD,OAAO,GAAG,GAAG,MAAM,GAAG,GAAG,CAAC;KAC3B;;IAED,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;;;;;;;;IAQ/C,IAAI,SAAS,GAAG,KAAK,CAAC,SAAS,KAAK,CAAC,CAAC;QAClC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC;;;IAG3E,IAAI,cAAc,GAAG,KAAK;;UAEpB,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IACxD,SAAS,aAAa,CAAC,MAAM,EAAE;MAC7B,OAAO,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;KAC7C;;IAED,QAAQ,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,aAAa,CAAC;MACvF,KAAK,WAAW;QACd,OAAO,MAAM,CAAC;MAChB,KAAK,YAAY;QACf,OAAO,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC;MAChD,KAAK,aAAa;QAChB,OAAO,GAAG,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YAC1C,iBAAiB,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;MACtD,KAAK,YAAY;QACf,OAAO,GAAG,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YAC1C,iBAAiB,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;MAC7E,KAAK,YAAY;QACf,OAAO,GAAG,GAAG,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,GAAG,CAAC;MACrD;QACE,MAAM,IAAID,eAAa,CAAC,wCAAwC,CAAC,CAAC;KACrE;GACF,EAAE,CAAC,CAAC;CACN;;;AAGD,SAAS,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE;EAC3C,IAAI,eAAe,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC;;;EAGxE,IAAI,IAAI,YAAY,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC;EACvD,IAAI,IAAI,GAAG,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC;EAC3E,IAAI,KAAK,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;;EAE3C,OAAO,eAAe,GAAG,KAAK,GAAG,IAAI,CAAC;CACvC;;;AAGD,SAAS,iBAAiB,CAAC,MAAM,EAAE;EACjC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;CAC1E;;;;AAID,SAAS,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE;;;;;EAKjC,IAAI,MAAM,GAAG,gBAAgB,CAAC;;;EAG9B,IAAI,MAAM,IAAI,YAAY;IACxB,IAAI,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,GAAG,MAAM,KAAK,CAAC,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAChD,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC;IAC1B,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC;GACjD,EAAE,CAAC,CAAC;;EAEL,IAAI,gBAAgB,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;EAC/D,IAAI,YAAY,CAAC;;;EAGjB,IAAI,KAAK,CAAC;EACV,QAAQ,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG;IACpC,IAAI,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACvC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;IACjC,MAAM,IAAI,MAAM;SACX,CAAC,gBAAgB,IAAI,CAAC,YAAY,IAAI,IAAI,KAAK,EAAE;UAChD,IAAI,GAAG,EAAE,CAAC;QACZ,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1B,gBAAgB,GAAG,YAAY,CAAC;GACjC;;EAED,OAAO,MAAM,CAAC;CACf;;;;;;AAMD,SAAS,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE;EAC7B,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;;;EAGhD,IAAI,OAAO,GAAG,QAAQ,CAAC;EACvB,IAAI,KAAK,CAAC;;EAEV,IAAI,KAAK,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC;EACvC,IAAI,MAAM,GAAG,EAAE,CAAC;;;;;;EAMhB,QAAQ,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;IACnC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;;IAEnB,IAAI,IAAI,GAAG,KAAK,GAAG,KAAK,EAAE;MACxB,GAAG,GAAG,CAAC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC;MACnC,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;;MAExC,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC;KACjB;IACD,IAAI,GAAG,IAAI,CAAC;GACb;;;;EAID,MAAM,IAAI,IAAI,CAAC;;EAEf,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,EAAE;IAC/C,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;GACjE,MAAM;IACL,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;GAC7B;;EAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CACxB;;;AAGD,SAAS,YAAY,CAAC,MAAM,EAAE;EAC5B,IAAI,MAAM,GAAG,EAAE,CAAC;EAChB,IAAI,IAAI,CAAC;EACT,IAAI,SAAS,CAAC;;EAEd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACtC,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC5B,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,IAAI,CAAC,SAAS,IAAI,WAAW,CAAC,IAAI,CAAC;QACrC,MAAM,CAAC,CAAC,CAAC;QACT,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;GAClC;;EAED,OAAO,MAAM,CAAC;CACf;;AAED,SAAS,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;EAC/C,IAAI,OAAO,GAAG,EAAE;MACZ,IAAI,MAAM,KAAK,CAAC,GAAG;MACnB,KAAK;MACL,MAAM,CAAC;;EAEX,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;;IAElE,IAAI,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;MACxD,IAAI,KAAK,KAAK,CAAC,EAAE,EAAA,OAAO,IAAI,IAAI,CAAC,EAAA;MACjC,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC;KACvB;GACF;;EAED,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;EACjB,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,GAAG,GAAG,CAAC;CAClC;;AAED,SAAS,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;EACzD,IAAI,OAAO,GAAG,EAAE;MACZ,IAAI,MAAM,KAAK,CAAC,GAAG;MACnB,KAAK;MACL,MAAM,CAAC;;EAEX,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;;IAElE,IAAI,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;MAC1D,IAAI,CAAC,OAAO,IAAI,KAAK,KAAK,CAAC,EAAE;QAC3B,OAAO,IAAI,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;OAC3C;MACD,OAAO,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;KAC9B;GACF;;EAED,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;EACjB,KAAK,CAAC,IAAI,GAAG,OAAO,IAAI,IAAI,CAAC;CAC9B;;AAED,SAAS,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;EAC9C,IAAI,OAAO,SAAS,EAAE;MAClB,IAAI,YAAY,KAAK,CAAC,GAAG;MACzB,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;MACnC,KAAK;MACL,MAAM;MACN,SAAS;MACT,WAAW;MACX,UAAU,CAAC;;EAEf,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IACzE,UAAU,GAAG,EAAE,CAAC;;IAEhB,IAAI,KAAK,KAAK,CAAC,EAAE,EAAA,UAAU,IAAI,IAAI,CAAC,EAAA;;IAEpC,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACjC,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;;IAEhC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;MACrD,SAAS;KACV;;IAED,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,EAAA,UAAU,IAAI,IAAI,CAAC,EAAA;;IAEjD,UAAU,IAAI,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;;IAEhC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;MACvD,SAAS;KACV;;IAED,UAAU,IAAI,KAAK,CAAC,IAAI,CAAC;;;IAGzB,OAAO,IAAI,UAAU,CAAC;GACvB;;EAED,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;EACjB,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,GAAG,GAAG,CAAC;CAClC;;AAED,SAAS,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;EACxD,IAAI,OAAO,SAAS,EAAE;MAClB,IAAI,YAAY,KAAK,CAAC,GAAG;MACzB,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;MACnC,KAAK;MACL,MAAM;MACN,SAAS;MACT,WAAW;MACX,YAAY;MACZ,UAAU,CAAC;;;EAGf,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE;;IAE3B,aAAa,CAAC,IAAI,EAAE,CAAC;GACtB,MAAM,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,UAAU,EAAE;;IAE/C,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;GACpC,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE;;IAEzB,MAAM,IAAIA,eAAa,CAAC,0CAA0C,CAAC,CAAC;GACrE;;EAED,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IACzE,UAAU,GAAG,EAAE,CAAC;;IAEhB,IAAI,CAAC,OAAO,IAAI,KAAK,KAAK,CAAC,EAAE;MAC3B,UAAU,IAAI,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;KAC9C;;IAED,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACjC,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;;IAEhC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;MAC7D,SAAS;KACV;;IAED,YAAY,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG;oBACvC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;;IAExD,IAAI,YAAY,EAAE;MAChB,IAAI,KAAK,CAAC,IAAI,IAAI,cAAc,KAAK,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;QAC7D,UAAU,IAAI,GAAG,CAAC;OACnB,MAAM;QACL,UAAU,IAAI,IAAI,CAAC;OACpB;KACF;;IAED,UAAU,IAAI,KAAK,CAAC,IAAI,CAAC;;IAEzB,IAAI,YAAY,EAAE;MAChB,UAAU,IAAI,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;KAC9C;;IAED,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,CAAC,EAAE;MACjE,SAAS;KACV;;IAED,IAAI,KAAK,CAAC,IAAI,IAAI,cAAc,KAAK,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;MAC7D,UAAU,IAAI,GAAG,CAAC;KACnB,MAAM;MACL,UAAU,IAAI,IAAI,CAAC;KACpB;;IAED,UAAU,IAAI,KAAK,CAAC,IAAI,CAAC;;;IAGzB,OAAO,IAAI,UAAU,CAAC;GACvB;;EAED,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;EACjB,KAAK,CAAC,IAAI,GAAG,OAAO,IAAI,IAAI,CAAC;CAC9B;;AAED,SAAS,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;EAC3C,IAAI,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC;;EAElD,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;;EAEhE,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IACpE,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;;IAEvB,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,SAAS;SAClC,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,OAAO,MAAM,KAAK,QAAQ,MAAM,MAAM,YAAY,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;SAC1F,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE;;MAEhD,KAAK,CAAC,GAAG,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;;MAEtC,IAAI,IAAI,CAAC,SAAS,EAAE;QAClB,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC;;QAEtD,IAAIgB,WAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,mBAAmB,EAAE;UAC1D,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;SACzC,MAAM,IAAID,iBAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE;UACtD,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;SAChD,MAAM;UACL,MAAM,IAAIf,eAAa,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,8BAA8B,GAAG,KAAK,GAAG,SAAS,CAAC,CAAC;SAC/F;;QAED,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC;OACtB;;MAED,OAAO,IAAI,CAAC;KACb;GACF;;EAED,OAAO,KAAK,CAAC;CACd;;;;;AAKD,SAAS,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE;EAC9D,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;EACjB,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;;EAEpB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE;IACrC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;GACjC;;EAED,IAAI,IAAI,GAAGgB,WAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;;EAEtC,IAAI,KAAK,EAAE;IACT,KAAK,IAAI,KAAK,CAAC,SAAS,GAAG,CAAC,IAAI,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC;GAC1D;;EAED,IAAI,aAAa,GAAG,IAAI,KAAK,iBAAiB,IAAI,IAAI,KAAK,gBAAgB;MACvE,cAAc;MACd,SAAS,CAAC;;EAEd,IAAI,aAAa,EAAE;IACjB,cAAc,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAClD,SAAS,GAAG,cAAc,KAAK,CAAC,CAAC,CAAC;GACnC;;EAED,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,SAAS,KAAK,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;IAC/F,OAAO,GAAG,KAAK,CAAC;GACjB;;EAED,IAAI,SAAS,IAAI,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE;IACrD,KAAK,CAAC,IAAI,GAAG,OAAO,GAAG,cAAc,CAAC;GACvC,MAAM;IACL,IAAI,aAAa,IAAI,SAAS,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE;MACvE,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;KAC7C;IACD,IAAI,IAAI,KAAK,iBAAiB,EAAE;MAC9B,IAAI,KAAK,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;QACnD,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrD,IAAI,SAAS,EAAE;UACb,KAAK,CAAC,IAAI,GAAG,OAAO,GAAG,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC;SACpD;OACF,MAAM;QACL,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,SAAS,EAAE;UACb,KAAK,CAAC,IAAI,GAAG,OAAO,GAAG,cAAc,GAAG,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC;SAC1D;OACF;KACF,MAAM,IAAI,IAAI,KAAK,gBAAgB,EAAE;MACpC,IAAI,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;QACtC,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACtD,IAAI,SAAS,EAAE;UACb,KAAK,CAAC,IAAI,GAAG,OAAO,GAAG,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC;SACpD;OACF,MAAM;QACL,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,SAAS,EAAE;UACb,KAAK,CAAC,IAAI,GAAG,OAAO,GAAG,cAAc,GAAG,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC;SAC1D;OACF;KACF,MAAM,IAAI,IAAI,KAAK,iBAAiB,EAAE;MACrC,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;QACrB,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;OAC9C;KACF,MAAM;MACL,IAAI,KAAK,CAAC,WAAW,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;MACpC,MAAM,IAAIhB,eAAa,CAAC,yCAAyC,GAAG,IAAI,CAAC,CAAC;KAC3E;;IAED,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;MAC3C,KAAK,CAAC,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;KACnD;GACF;;EAED,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,sBAAsB,CAAC,MAAM,EAAE,KAAK,EAAE;EAC7C,IAAI,OAAO,GAAG,EAAE;MACZ,iBAAiB,GAAG,EAAE;MACtB,KAAK;MACL,MAAM,CAAC;;EAEX,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;;EAEhD,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IAC7E,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;GAC1D;EACD,KAAK,CAAC,cAAc,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;CAC1C;;AAED,SAAS,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE;EACvD,IAAI,aAAa;MACb,KAAK;MACL,MAAM,CAAC;;EAEX,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;IACjD,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;MAChB,IAAI,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;QAC3C,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;OAC/B;KACF,MAAM;MACL,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;MAErB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACzB,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;UAClE,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;SACxD;OACF,MAAM;QACL,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;QAEpC,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;UACzE,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;SACvE;OACF;KACF;GACF;CACF;;AAED,SAAS2B,MAAI,CAAC,KAAK,EAAE,OAAO,EAAE;EAC5B,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;;EAExB,IAAI,KAAK,GAAG,IAAID,OAAK,CAAC,OAAO,CAAC,CAAC;;EAE/B,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAA,sBAAsB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAA;;EAExD,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,EAAA;;EAErE,OAAO,EAAE,CAAC;CACX;;AAED,SAASE,UAAQ,CAAC,KAAK,EAAE,OAAO,EAAE;EAChC,OAAOD,MAAI,CAAC,KAAK,EAAE1B,QAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAEmB,qBAAmB,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;CAC7E;;AAED,aAA0BO,MAAI,CAAC;AAC/B,iBAA0BC,UAAQ,CAAC;;;;;;;AC7xBnC,IAAI,MAAM,GAAG1B,QAA2B,CAAC;AACzC,IAAI,MAAM,GAAGI,QAA2B,CAAC;;;AAGzC,SAAS,UAAU,CAAC,IAAI,EAAE;EACxB,OAAO,YAAY;IACjB,MAAM,IAAI,KAAK,CAAC,WAAW,GAAG,IAAI,GAAG,oCAAoC,CAAC,CAAC;GAC5E,CAAC;CACH;;;AAGD,WAAqCC,IAAyB,CAAC;AAC/D,aAAqCI,MAA2B,CAAC;AACjE,sBAAqCC,QAAoC,CAAC;AAC1E,kBAAqCC,IAAgC,CAAC;AACtE,kBAAqCI,IAAgC,CAAC;AACtE,0BAAqCC,YAAwC,CAAC;AAC9E,0BAAqCW,YAAwC,CAAC;AAC9E,WAAqC,MAAM,CAAC,IAAI,CAAC;AACjD,cAAqC,MAAM,CAAC,OAAO,CAAC;AACpD,eAAqC,MAAM,CAAC,QAAQ,CAAC;AACrD,kBAAqC,MAAM,CAAC,WAAW,CAAC;AACxD,WAAqC,MAAM,CAAC,IAAI,CAAC;AACjD,eAAqC,MAAM,CAAC,QAAQ,CAAC;AACrD,oBAAqCC,SAA8B,CAAC;;;AAGpE,qBAAgClB,QAAoC,CAAC;AACrE,kBAAgCM,YAAwC,CAAC;AACzE,qBAAgCW,YAAwC,CAAC;;;AAGzE,aAAgC,UAAU,CAAC,MAAM,CAAC,CAAC;AACnD,cAAgC,UAAU,CAAC,OAAO,CAAC,CAAC;AACpD,cAAgC,UAAU,CAAC,SAAS,CAAC,CAAC;AACtD,qBAAgC,UAAU,CAAC,gBAAgB,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;ACnC7D,IAAI,IAAI,GAAG3B,MAA2B,CAAC;;;AAGvC,SAAc,GAAG,IAAI,CAAC;;ACJtB,kBAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjCJ,IAAI,SAAS,GAAG,EAAE,CAAC;EACnBA,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,kCAAkC,CAAC,CAAC;EAC/D,IAAI,EAAE,EAAE;IACNA,IAAI,IAAI,GAAG,EAAE,CAAC,WAAW,CAAC;IAC1B,SAAS,GAAGiC,KAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;GACrC;;EAED,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,GAAG,UAAU,CAAC;EAC5D,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,GAAG,iBAAiB,CAAC;;EAErF,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,GAAG,EAAE,CAAC;;EAE1D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,MAAM,EAAE,CAAC,EAAE;IAC1CjC,IAAI,CAAC,GAAG,EAAE,CAAC;IACXA,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,CAAC,OAAO,MAAM,CAAC,KAAK,QAAQ,EAAE;MAChC,IAAI,GAAG,MAAM,CAAC;KACf,MAAM;MACL,CAAC,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;KAC9B;IACDA,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;IACd,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzD,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACpC,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;MAC5BA,IAAI,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC5D,IAAI,CAAC,OAAO,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;QACnD,WAAW,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;OACxC,MAAM;QACL,CAAC,CAAC,cAAc,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;OAC3D;MACD,CAAC,CAAC,WAAW,GAAG,WAAW,CAAC;KAC7B;IACD,OAAO,CAAC,CAAC;GACV,CAAC,CAAC;;;CAGJ,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;ACjBD,CAAC,SAAS,OAAO,EAAE;;IAEf,SAAS,YAAY,GAAG;;QAEpB,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACnG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,EAAE,CAAC;;QAE3B,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;;QAEvB,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,EAAE;YACxB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;SAClB,CAAC;;QAEF,IAAI,CAAC,UAAU,GAAG,WAAW;YACzB,OAAO,IAAI,CAAC,OAAO,CAAC;SACvB,CAAC;;QAEF,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,EAAE;YAC5B,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE;SAC5D,CAAC;;QAEF,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,EAAE,aAAa,EAAE;YACpC,IAAI,aAAa,IAAI,SAAS,IAAI,aAAa,IAAI,IAAI;gBACnD,EAAA,aAAa,GAAG,IAAI,CAAC,EAAA;YACzB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YACnC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBAC1D,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC;aACxB,MAAM;gBACH,MAAM,2BAA2B,GAAG,CAAC,GAAG,UAAU;0BACxC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAC5C,AAAC;YACF,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;SACtC,CAAC;;QAEF,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,EAAE,aAAa,EAAE;YACvC,IAAI,aAAa,IAAI,SAAS,IAAI,aAAa,IAAI,IAAI;gBACnD,EAAA,aAAa,GAAG,IAAI,CAAC,EAAA;YACzB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YACnC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBAC1D,OAAO,IAAI,CAAC;aACf,MAAM;gBACH,OAAO,KAAK,CAAC;aAChB,AAAC;YACF,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;SACtC,CAAC;;;QAGF,IAAI,CAAC,OAAO,GAAG,WAAW;;;YACtB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE;gBAChEM,MAAI,CAAC,GAAG,EAAE,CAAC;aACd,AAAC;;YAEF,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE;gBAC7B,OAAO,IAAI,CAAC;aACf,AAAC;YACF,OAAO,KAAK,CAAC;SAChB,CAAC;;QAEF,IAAI,CAAC,cAAc,GAAG,SAAS,aAAa,EAAE;;;YAC1C,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;gBAC5CA,MAAI,CAAC,GAAG,EAAE,CAAC;aACd,AAAC;YACF,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,aAAa,IAAI,IAAI,EAAE;gBACtD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;oBACjCA,MAAI,CAAC,GAAG,EAAE,CAAC;iBACd,AAAC;gBACF,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;aACtC,AAAC;SACL,CAAC;;QAEF,IAAI,CAAC,YAAY,GAAG,WAAW;;;YAC3B,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACvB,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;YACrB,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,OAAO,IAAI,EAAE;gBACT,IAAI,CAAC,OAAO,EAAE;oBACV,IAAIA,MAAI,CAAC,KAAK,CAACA,MAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE;wBAC7B,IAAI,UAAU,GAAG,CAAC,EAAE;4BAChB,UAAU,EAAE,CAAC;yBAChB,MAAM;4BACH,IAAI,GAAG,GAAGA,MAAI,CAAC,GAAG,CAAC;4BACnBA,MAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;4BACvB,OAAOA,MAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;yBAC3C,AAAC;qBACL,MAAM,IAAIA,MAAI,CAAC,KAAK,CAACA,MAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE;wBACpC,UAAU,EAAE,CAAC;qBAChB,MAAM,IAAIA,MAAI,CAAC,GAAG,IAAIA,MAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC1C,MAAM,oBAAoB,CAAC;qBAC9B,AAAC;iBACL,AAAC;gBACF,IAAIA,MAAI,CAAC,KAAK,CAACA,MAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK;oBAChD,EAAA,OAAO,GAAG,IAAI,CAAC,EAAA;;oBAEf,EAAA,OAAO,GAAG,KAAK,CAAC,EAAA;gBACpBA,MAAI,CAAC,GAAG,EAAE,CAAC;aACd,AAAC;SACL,CAAC;;QAEF,IAAI,CAAC,aAAa,GAAG,WAAW;;;YAC5B,IAAI,GAAG,GAAG,EAAE,CAAC;YACb,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,QAAQ,IAAI,CAAC,CAAC,EAAE;gBAClD,GAAG,GAAG,GAAG,GAAGA,MAAI,CAAC,KAAK,CAACA,MAAI,CAAC,GAAG,CAAC,CAAC;gBACjC,IAAIA,MAAI,CAAC,KAAK,CAACA,MAAI,CAAC,GAAG,CAAC,IAAI,GAAG;oBAC3B,EAAA,QAAQ,EAAE,CAAC,EAAA;gBACf,IAAIA,MAAI,CAAC,KAAK,CAACA,MAAI,CAAC,GAAG,CAAC,IAAI,GAAG;oBAC3B,EAAA,QAAQ,EAAE,CAAC,EAAA;gBACf,IAAIA,MAAI,CAAC,GAAG,IAAIA,MAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;oBACnC,MAAM,qBAAqB,GAAGA,MAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;iBAC7D,AAAC;gBACFA,MAAI,CAAC,GAAG,EAAE,CAAC;aACd,AAAC;YACF,OAAO,GAAG,CAAC;SACd,CAAC;;QAEF,IAAI,CAAC,YAAY,GAAG,WAAW;;;YAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACvB,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;YACrB,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,OAAO,IAAI,EAAE;gBACT,IAAI,CAAC,OAAO,EAAE;oBACV,IAAIA,MAAI,CAAC,KAAK,CAACA,MAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE;wBAC7B,IAAI,GAAG,GAAGA,MAAI,CAAC,GAAG,CAAC;wBACnBA,MAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;wBACvB,OAAOA,MAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;qBAC3C,MAAM,IAAIA,MAAI,CAAC,GAAG,IAAIA,MAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC1C,MAAM,qBAAqB,GAAGA,MAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;qBAC7D,AAAC;iBACL;gBACD,IAAIA,MAAI,CAAC,KAAK,CAACA,MAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK;oBAChD,EAAA,OAAO,GAAG,IAAI,CAAC,EAAA;;oBAEf,EAAA,OAAO,GAAG,KAAK,CAAC,EAAA;gBACpBA,MAAI,CAAC,GAAG,EAAE,CAAC;aACd,AAAC;SACL,CAAC;;QAEF,IAAI,CAAC,YAAY,GAAG,WAAW;YAC3B,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;YACrB,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACpB,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;aAC9B,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBAC3B,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;aAC9B,MAAM;gBACH,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACnB,IAAI,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;oBACnB,EAAA,OAAO,CAAC,CAAC,EAAA;qBACR,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC;oBAC9C,EAAA,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,EAAA;;oBAEvB,EAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,YAAY,GAAG,CAAC,CAAC,EAAA;;aAEhF,AAAC;SACL,CAAC;;QAEF,IAAI,CAAC,KAAK,GAAG,WAAW;;;YACpB,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;YACjC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACvBA,MAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChB,MAAM,CAAC,IAAI,CAACA,MAAI,CAAC,YAAY,EAAE,CAAC,CAAC;aACpC,AAAC;YACF,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAC1B,CAAC;;QAEF,IAAI,CAAC,GAAG,GAAG,WAAW;;;YAClB,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;YACrB,OAAO,IAAI,EAAE;gBACT,IAAIA,MAAI,CAAC,GAAG,IAAIA,MAAI,CAAC,KAAK,CAAC,MAAM,EAAE;oBAC/B,MAAM,aAAa,CAAC;iBACvB,AAAC;;;gBAGF,IAAIA,MAAI,CAAC,MAAM,CAAC,OAAO,CAACA,MAAI,CAAC,KAAK,CAACA,MAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE;oBAChD,OAAOA,MAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAEA,MAAI,CAAC,GAAG,CAAC,CAAC;iBAChD,MAAM;oBACHA,MAAI,CAAC,GAAG,EAAE,CAAC;;iBAEd,AAAC;aACL,AAAC;SACL,CAAC;;QAEF,IAAI,CAAC,gBAAgB,GAAG,WAAW;YAC/B,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACrB,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACpB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChB,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;gBACvB,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;aACvB,MAAM;gBACH,MAAM,4CAA4C;0BACxC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAC5C,AAAC;SACL,CAAC;;QAEF,IAAI,CAAC,cAAc,GAAG,WAAW;;;YAC7B,IAAI,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACjC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;YACpC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9C,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACvBA,MAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;gBAEhB,IAAIA,MAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBACpB,MAAM;iBACT;gBACD,AAAC;gBACD,EAAE,GAAGA,MAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC7BA,MAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;aACjD,AAAC;SACL,CAAC;;QAEF,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,EAAE;YAC1B,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC9C,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAChD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAChB,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACxC,CAAC;;QAEF,IAAI,CAAC,SAAS,GAAG,WAAW;YACxB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAChB,OAAO,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;SAC3B,CAAC;;QAEF,IAAI,CAAC,QAAQ,GAAG,WAAW;YACvB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC;YAC5C,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YAClD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACxC,CAAC;;QAEF,IAAI,CAAC,OAAO,GAAG,WAAW;YACtB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC;YAC3C,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YAClD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACxC,CAAC;;QAEF,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,EAAE;YACrB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SACtB,CAAC;;QAEF,IAAI,CAAC,MAAM,GAAG,WAAW;;;YACrB,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE;gBACnB,IAAI,CAAC,GAAGA,MAAI,CAAC,SAAS,EAAE,CAAC;gBACzBA,MAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChB,IAAI,CAAC,IAAI,SAAS,EAAE;oBAChBA,MAAI,CAAC,MAAM,EAAE,CAAC;iBACjB,MAAM,IAAI,CAAC,IAAI,WAAW,EAAE;oBACzBA,MAAI,CAAC,QAAQ,EAAE,CAAC;iBACnB,MAAM,IAAI,CAAC,IAAI,UAAU,EAAE;oBACxBA,MAAI,CAAC,OAAO,EAAE,CAAC;iBAClB,MAAM;oBACHA,MAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;iBACjB;gBACDA,MAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;aACnB,AAAC;SACL,CAAC;KACL,AAAC;;IAEF,OAAO,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE;QAC9B,IAAI,CAAC,GAAG,IAAI,YAAY,EAAE,CAAC;QAC3B,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnB,CAAC,CAAC,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,CAAC,OAAO,CAAC;KACpB,CAAC;;;IAGF,OAAO,CAAC,QAAQ,GAAG,SAAS,IAAI,EAAE;QAC9B,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,CAAC,IAAI,IAAI,EAAE;YACjB,GAAG,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC/B,GAAG,IAAI,GAAG,CAAC;YACX,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW;gBACnB,EAAA,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,EAAA;YACtC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK;gBACb,EAAA,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAA;YAC1B,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE;gBACnB,IAAI,IAAI,GAAG,EAAE,CAAC;gBACd,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE;oBAC/B,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;wBAChB,EAAA,IAAI,IAAI,IAAI,CAAC,EAAA;oBACjB,IAAI,IAAI,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;iBACtD;gBACD,GAAG,IAAI,IAAI,CAAC;aACf;YACD,GAAG,IAAI,OAAO,CAAC;SAClB;QACD,OAAO,GAAG,CAAC;;KAEd,CAAC;;CAEL,EAAE,AAA4D,OAAO,CAAC,CAAC;;;;;AC7TxE,mBAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjCN,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,kCAAkC,CAAC,CAAC;EAC/DA,IAAI,SAAS,GAAG,EAAE,CAAC;EACnBA,IAAI,YAAY,GAAG,EAAE,CAAC;;EAEtB,IAAI,EAAE,EAAE;IACNA,IAAI,MAAM,GAAG,EAAE,CAAC,WAAW,CAAC;IAC5BA,IAAI,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACxC,GAAG,MAAM,EAAE;MACT,MAAM,CAAC,OAAO,CAAC,UAAA,CAAC,EAAC;QACf,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;UACxB,IAAI,GAAG,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;UACzB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;UACpC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,oCAAoC;4BACpC,UAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,SAAG,IAAI,GAAA,CAAC,CAAC;UAC3C,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,iBAAiB;4BACjB,UAAC,IAAI,EAAE,IAAI,EAAE,SAAG,IAAI,GAAA,CAAC,CAAC;UACxC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;SACtB;QACD,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;QAC1C,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC;OAChD,CAAC,CAAC;KACJ;;;IAGD,IAAI,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/D,QAAQ,CAAC,OAAO,CAAC,UAAA,EAAE,EAAC;MAClBA,IAAI,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;MACjC,IAAI,GAAG,EAAE;QACPA,IAAI,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClC,YAAY,CAAC,OAAO,CAAC,UAAA,GAAG,EAAC;UACvB,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/B,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpB,IAAI,CAAC,CAAC,GAAG,IAAI,YAAY,CAAC,CAAC;cACzB,OAAO,CAAC,IAAI,CAAC,mCAAmC,GAAG,GAAG,CAAC,CAAC;aACzD;WACF;SACF,CAAC,CAAC;OACJ;KACF,CAAC,CAAC;GACJ;EACD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;EACjC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;CAC5B,CAAA;;AC7CD,IAAI,EAAE,GAAG,IAAI,IAAI;IACb,EAAE,GAAG,IAAI,IAAI,CAAC;;AAElB,AAAe,SAAS,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;;EAEjE,SAAS,QAAQ,CAAC,IAAI,EAAE;IACtB,OAAO,MAAM,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;GAC7C;;EAED,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC;;EAE1B,QAAQ,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE;IAC7B,OAAO,MAAM,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;GAChF,CAAC;;EAEF,QAAQ,CAAC,KAAK,GAAG,SAAS,IAAI,EAAE;IAC9B,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC;QACnB,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC;GACxC,CAAC;;EAEF,QAAQ,CAAC,MAAM,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE;IACrC,OAAO,OAAO,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;GACnF,CAAC;;EAEF,QAAQ,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE;IAC3C,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;IACjD,GAAG,EAAA,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAA,QAAQ,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IAC1F,OAAO,KAAK,CAAC;GACd,CAAC;;EAEF,QAAQ,CAAC,MAAM,GAAG,SAAS,IAAI,EAAE;IAC/B,OAAO,WAAW,CAAC,SAAS,IAAI,EAAE;MAChC,IAAI,IAAI,IAAI,IAAI,EAAE,EAAA,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAA,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAA;KAC5E,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;MACtB,IAAI,IAAI,IAAI,IAAI,EAAE,EAAA,OAAO,EAAE,IAAI,IAAI,CAAC,EAAE,EAAA,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,IAAA;KAC/E,CAAC,CAAC;GACJ,CAAC;;EAEF,IAAI,KAAK,EAAE;IACT,QAAQ,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;MACpC,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;MACrC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;MACvB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;KAClC,CAAC;;IAEF,QAAQ,CAAC,KAAK,GAAG,SAAS,IAAI,EAAE;MAC9B,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;MACxB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI;YACtC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ;YACtB,QAAQ,CAAC,MAAM,CAAC,KAAK;gBACjB,SAAS,CAAC,EAAE,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE;gBAC7C,SAAS,CAAC,EAAE,EAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;KACtE,CAAC;GACH;;EAED,OAAO,QAAQ,CAAC;CACjB;;AC1DD,IAAI,WAAW,GAAGkC,WAAQ,CAAC,WAAW;;CAErC,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;EACtB,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;CAC5B,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;EACtB,OAAO,GAAG,GAAG,KAAK,CAAC;CACpB,CAAC,CAAC;;;AAGH,WAAW,CAAC,KAAK,GAAG,SAAS,CAAC,EAAE;EAC9B,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EAClB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;EAC1C,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAA,OAAO,WAAW,CAAC,EAAA;EACjC,OAAOA,WAAQ,CAAC,SAAS,IAAI,EAAE;IAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;GACxC,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;IACtB,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;GAChC,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;IACtB,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;GAC1B,CAAC,CAAC;CACJ,CAAC,AAEF,AACA,AAAO,AAAqC;;ACzBrC,IAAI,cAAc,GAAG,GAAG,CAAC;AAChC,AAAO,IAAI,cAAc,GAAG,GAAG,CAAC;AAChC,AAAO,IAAI,YAAY,GAAG,IAAI,CAAC;AAC/B,AAAO,IAAI,WAAW,GAAG,KAAK,CAAC;AAC/B,AAAO,IAAI,YAAY,GAAG,MAAM,CAAC;;ACDjC,IAAI,MAAM,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;EACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,cAAc,CAAC,GAAG,cAAc,CAAC,CAAC;CAClE,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;EACtB,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,cAAc,CAAC,CAAC;CAC7C,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;EACtB,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,cAAc,CAAC;CACvC,EAAE,SAAS,IAAI,EAAE;EAChB,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;CAC7B,CAAC,CAAC,AAEH,AACA,AAAO,AAA2B;;ACXlC,IAAI,MAAM,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;EACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,cAAc,CAAC,GAAG,cAAc,CAAC,CAAC;CAClE,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;EACtB,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,cAAc,CAAC,CAAC;CAC7C,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;EACtB,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,cAAc,CAAC;CACvC,EAAE,SAAS,IAAI,EAAE;EAChB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;CAC1B,CAAC,CAAC,AAEH,AACA,AAAO,AAA2B;;ACXlC,IAAI,IAAI,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;EACjC,IAAI,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE,GAAG,cAAc,GAAG,YAAY,CAAC;EACtE,IAAI,MAAM,GAAG,CAAC,EAAE,EAAA,MAAM,IAAI,YAAY,CAAC,EAAA;EACvC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,YAAY,CAAC,GAAG,YAAY,GAAG,MAAM,CAAC,CAAC;CACnF,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;EACtB,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,YAAY,CAAC,CAAC;CAC3C,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;EACtB,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,YAAY,CAAC;CACrC,EAAE,SAAS,IAAI,EAAE;EAChB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;CACxB,CAAC,CAAC,AAEH,AACA,AAAO,AAAuB;;ACb9B,IAAI,GAAG,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;EAChC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC3B,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;EACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;CACrC,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;EACtB,OAAO,CAAC,GAAG,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE,GAAG,KAAK,CAAC,iBAAiB,EAAE,CAAC,GAAG,cAAc,CAAC,GAAG,WAAW,CAAC;CAC7G,EAAE,SAAS,IAAI,EAAE;EAChB,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;CAC3B,CAAC,CAAC,AAEH,AACA,AAAO,AAAqB;;ACX5B,SAAS,OAAO,CAAC,CAAC,EAAE;EAClB,OAAOA,WAAQ,CAAC,SAAS,IAAI,EAAE;IAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3D,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;GAC3B,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;IACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;GACzC,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;IACtB,OAAO,CAAC,GAAG,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE,GAAG,KAAK,CAAC,iBAAiB,EAAE,CAAC,GAAG,cAAc,CAAC,GAAG,YAAY,CAAC;GAC9G,CAAC,CAAC;CACJ;;AAED,AAAO,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/B,AAAO,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/B,AAAO,IAAI,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAChC,AAAO,IAAI,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAClC,AAAO,IAAI,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AACjC,AAAO,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/B,AAAO,IAAI,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,AAEjC,AAAO,AAA2B,AAClC,AAAO,AAA2B,AAClC,AAAO,AAA6B,AACpC,AAAO,AAAiC,AACxC,AAAO,AAA+B,AACtC,AAAO,AAA2B,AAClC,AAAO,AAA+B;;AC1BtC,IAAI,KAAK,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;EAClC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EAChB,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC3B,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;EACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC;CACvC,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;EACtB,OAAO,GAAG,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC;CAC3F,EAAE,SAAS,IAAI,EAAE;EAChB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;CACxB,CAAC,CAAC,AAEH,AACA,AAAO,AAAyB;;ACZhC,IAAI,IAAI,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;EACjC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EACpB,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC3B,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;EACtB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,CAAC;CAC7C,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;EACtB,OAAO,GAAG,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;CAChD,EAAE,SAAS,IAAI,EAAE;EAChB,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;CAC3B,CAAC,CAAC;;;AAGH,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,EAAE;EACvB,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;IAC/E,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpB,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;GAC3B,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;IACtB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;GACjD,CAAC,CAAC;CACJ,CAAC,AAEF,AACA,AAAO,AAAuB;;ACtB9B,IAAI,SAAS,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;EACtC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAC1B,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;EACtB,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,cAAc,CAAC,CAAC;CAC7C,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;EACtB,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,cAAc,CAAC;CACvC,EAAE,SAAS,IAAI,EAAE;EAChB,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;CAC7B,CAAC,CAAC,AAEH,AACA,AAAO,AAAiC;;ACXxC,IAAI,OAAO,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;EACpC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC7B,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;EACtB,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,YAAY,CAAC,CAAC;CAC3C,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;EACtB,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,YAAY,CAAC;CACrC,EAAE,SAAS,IAAI,EAAE;EAChB,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;CAC3B,CAAC,CAAC,AAEH,AACA,AAAO,AAA6B;;ACXpC,IAAI,MAAM,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;EACnC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC9B,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;EACtB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,CAAC;CAC3C,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;EACtB,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,WAAW,CAAC;CACpC,EAAE,SAAS,IAAI,EAAE;EAChB,OAAO,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;CAC9B,CAAC,CAAC,AAEH,AACA,AAAO,AAA2B;;ACXlC,SAAS,UAAU,CAAC,CAAC,EAAE;EACrB,OAAOA,WAAQ,CAAC,SAAS,IAAI,EAAE;IAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACpE,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;GAC9B,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;IACtB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;GAC/C,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;IACtB,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,YAAY,CAAC;GACrC,CAAC,CAAC;CACJ;;AAED,AAAO,IAAI,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACrC,AAAO,IAAI,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACrC,AAAO,IAAI,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACtC,AAAO,IAAI,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACxC,AAAO,IAAI,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACvC,AAAO,IAAI,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACrC,AAAO,IAAI,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,AAEvC,AAAO,AAAiC,AACxC,AAAO,AAAiC,AACxC,AAAO,AAAmC,AAC1C,AAAO,AAAuC,AAC9C,AAAO,AAAqC,AAC5C,AAAO,AAAiC,AACxC,AAAO,AAAqC;;AC1B5C,IAAI,QAAQ,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;EACrC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;EACnB,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC9B,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;EACtB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,CAAC;CAC7C,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;EACtB,OAAO,GAAG,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE,CAAC;CACvG,EAAE,SAAS,IAAI,EAAE;EAChB,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;CAC3B,CAAC,CAAC,AAEH,AACA,AAAO,AAA+B;;ACZtC,IAAI,OAAO,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;EACpC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EACvB,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC9B,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;EACtB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,CAAC;CACnD,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;EACtB,OAAO,GAAG,CAAC,cAAc,EAAE,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;CACtD,EAAE,SAAS,IAAI,EAAE;EAChB,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;CAC9B,CAAC,CAAC;;;AAGH,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,EAAE;EAC1B,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;IAC/E,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvB,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;GAC9B,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;IACtB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;GACvD,CAAC,CAAC;CACJ,CAAC,AAEF,AACA,AAAO,AAA6B;;ACvBpC,SAAS,SAAS,CAAC,CAAC,EAAE;EACpB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE;IACzB,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtB,OAAO,IAAI,CAAC;GACb;EACD,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;CACpD;;AAED,SAAS,OAAO,CAAC,CAAC,EAAE;EAClB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE;IACzB,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzB,OAAO,IAAI,CAAC;GACb;EACD,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC9D;;AAED,SAAS,OAAO,CAAC,CAAC,EAAE;EAClB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACnD;;AAED,AAAe,SAAS,YAAY,CAAC,MAAM,EAAE;EAC3C,IAAI,eAAe,GAAG,MAAM,CAAC,QAAQ;MACjC,WAAW,GAAG,MAAM,CAAC,IAAI;MACzB,WAAW,GAAG,MAAM,CAAC,IAAI;MACzB,cAAc,GAAG,MAAM,CAAC,OAAO;MAC/B,eAAe,GAAG,MAAM,CAAC,IAAI;MAC7B,oBAAoB,GAAG,MAAM,CAAC,SAAS;MACvC,aAAa,GAAG,MAAM,CAAC,MAAM;MAC7B,kBAAkB,GAAG,MAAM,CAAC,WAAW,CAAC;;EAE5C,IAAI,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC;MACnC,YAAY,GAAG,YAAY,CAAC,cAAc,CAAC;MAC3C,SAAS,GAAG,QAAQ,CAAC,eAAe,CAAC;MACrC,aAAa,GAAG,YAAY,CAAC,eAAe,CAAC;MAC7C,cAAc,GAAG,QAAQ,CAAC,oBAAoB,CAAC;MAC/C,kBAAkB,GAAG,YAAY,CAAC,oBAAoB,CAAC;MACvD,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC;MACjC,WAAW,GAAG,YAAY,CAAC,aAAa,CAAC;MACzC,YAAY,GAAG,QAAQ,CAAC,kBAAkB,CAAC;MAC3C,gBAAgB,GAAG,YAAY,CAAC,kBAAkB,CAAC,CAAC;;EAExD,IAAI,OAAO,GAAG;IACZ,GAAG,EAAE,kBAAkB;IACvB,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,gBAAgB;IACrB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,gBAAgB;IACrB,GAAG,EAAE,gBAAgB;IACrB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,kBAAkB;IACvB,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,sBAAsB;IAC3B,GAAG,EAAE,mBAAmB;IACxB,GAAG,EAAE,sBAAsB;IAC3B,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,cAAc;IACnB,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,oBAAoB;GAC1B,CAAC;;EAEF,IAAI,UAAU,GAAG;IACf,GAAG,EAAE,qBAAqB;IAC1B,GAAG,EAAE,gBAAgB;IACrB,GAAG,EAAE,mBAAmB;IACxB,GAAG,EAAE,cAAc;IACnB,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,mBAAmB;IACxB,GAAG,EAAE,mBAAmB;IACxB,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,kBAAkB;IACvB,GAAG,EAAE,qBAAqB;IAC1B,GAAG,EAAE,oBAAoB;IACzB,GAAG,EAAE,gBAAgB;IACrB,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,gBAAgB;IACrB,GAAG,EAAE,yBAAyB;IAC9B,GAAG,EAAE,sBAAsB;IAC3B,GAAG,EAAE,yBAAyB;IAC9B,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,oBAAoB;GAC1B,CAAC;;EAEF,IAAI,MAAM,GAAG;IACX,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,mBAAmB;IACxB,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,cAAc;IACnB,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,gBAAgB;IACrB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,qBAAqB;IAC1B,GAAG,EAAE,kBAAkB;IACvB,GAAG,EAAE,qBAAqB;IAC1B,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,mBAAmB;GACzB,CAAC;;;EAGF,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;EAC5C,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;EAC5C,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;EAChD,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;EAClD,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;EAClD,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;;EAEtD,SAAS,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE;IACrC,OAAO,SAAS,IAAI,EAAE;MACpB,IAAI,MAAM,GAAG,EAAE;UACX,CAAC,GAAG,CAAC,CAAC;UACN,CAAC,GAAG,CAAC;UACL,CAAC,GAAG,SAAS,CAAC,MAAM;UACpB,CAAC;UACD,GAAG;UACH,MAAM,CAAC;;MAEX,IAAI,CAAC,CAAC,IAAI,YAAY,IAAI,CAAC,EAAE,EAAA,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAA;;MAEpD,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE;QACd,IAAI,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;UAClC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;UACnC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,EAAA,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAA;eAC1E,EAAA,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAA;UACjC,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,EAAA,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,EAAA;UAC/C,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;UACf,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SACX;OACF;;MAED,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;MACnC,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACxB,CAAC;GACH;;EAED,SAAS,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE;IACpC,OAAO,SAAS,MAAM,EAAE;MACtB,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;UACjB,CAAC,GAAG,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;MACtD,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;;;MAGpC,IAAI,GAAG,IAAI,CAAC,EAAE,EAAA,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAA;;;MAGxC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE;QACxB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,EAAA,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAA;QACxC,IAAIC,MAAG,GAAG,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QACxF,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACR,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAACA,MAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAACA,MAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;OAC1F;;;;MAID,IAAI,GAAG,IAAI,CAAC,EAAE;QACZ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QACjB,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;OACnB;;;MAGD,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;KACnB,CAAC;GACH;;EAED,SAAS,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE;IAC/C,IAAI,CAAC,GAAG,CAAC;QACL,CAAC,GAAG,SAAS,CAAC,MAAM;QACpB,CAAC,GAAG,MAAM,CAAC,MAAM;QACjB,CAAC;QACD,KAAK,CAAC;;IAEV,OAAO,CAAC,GAAG,CAAC,EAAE;MACZ,IAAI,CAAC,IAAI,CAAC,EAAE,EAAA,OAAO,CAAC,CAAC,CAAC,EAAA;MACtB,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;MAC9B,IAAI,CAAC,KAAK,EAAE,EAAE;QACZ,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1B,KAAK,GAAG,MAAM,CAAC,CAAC,IAAI,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAA,OAAO,CAAC,CAAC,CAAC,EAAA;OAC1D,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE;QACtC,OAAO,CAAC,CAAC,CAAC;OACX;KACF;;IAED,OAAO,CAAC,CAAC;GACV;;EAED,SAAS,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACjC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;GAC3E;;EAED,SAAS,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACvC,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;GACjF;;EAED,SAAS,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IAClC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;GAC5E;;EAED,SAAS,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACrC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;GAC/E;;EAED,SAAS,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IAChC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;GAC1E;;EAED,SAAS,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACzC,OAAO,cAAc,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;GACtD;;EAED,SAAS,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACrC,OAAO,cAAc,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;GAClD;;EAED,SAAS,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACrC,OAAO,cAAc,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;GAClD;;EAED,SAAS,kBAAkB,CAAC,CAAC,EAAE;IAC7B,OAAO,oBAAoB,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;GACzC;;EAED,SAAS,aAAa,CAAC,CAAC,EAAE;IACxB,OAAO,eAAe,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;GACpC;;EAED,SAAS,gBAAgB,CAAC,CAAC,EAAE;IAC3B,OAAO,kBAAkB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;GACzC;;EAED,SAAS,WAAW,CAAC,CAAC,EAAE;IACtB,OAAO,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;GACpC;;EAED,SAAS,YAAY,CAAC,CAAC,EAAE;IACvB,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;GAC9C;;EAED,SAAS,qBAAqB,CAAC,CAAC,EAAE;IAChC,OAAO,oBAAoB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;GAC5C;;EAED,SAAS,gBAAgB,CAAC,CAAC,EAAE;IAC3B,OAAO,eAAe,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;GACvC;;EAED,SAAS,mBAAmB,CAAC,CAAC,EAAE;IAC9B,OAAO,kBAAkB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;GAC5C;;EAED,SAAS,cAAc,CAAC,CAAC,EAAE;IACzB,OAAO,aAAa,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;GACvC;;EAED,SAAS,eAAe,CAAC,CAAC,EAAE;IAC1B,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;GACjD;;EAED,OAAO;IACL,MAAM,EAAE,SAAS,SAAS,EAAE;MAC1B,IAAI,CAAC,GAAG,SAAS,CAAC,SAAS,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;MAC5C,CAAC,CAAC,QAAQ,GAAG,WAAW,EAAE,OAAO,SAAS,CAAC,EAAE,CAAC;MAC9C,OAAO,CAAC,CAAC;KACV;IACD,KAAK,EAAE,SAAS,SAAS,EAAE;MACzB,IAAI,CAAC,GAAG,QAAQ,CAAC,SAAS,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;MAC7C,CAAC,CAAC,QAAQ,GAAG,WAAW,EAAE,OAAO,SAAS,CAAC,EAAE,CAAC;MAC9C,OAAO,CAAC,CAAC;KACV;IACD,SAAS,EAAE,SAAS,SAAS,EAAE;MAC7B,IAAI,CAAC,GAAG,SAAS,CAAC,SAAS,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;MAC/C,CAAC,CAAC,QAAQ,GAAG,WAAW,EAAE,OAAO,SAAS,CAAC,EAAE,CAAC;MAC9C,OAAO,CAAC,CAAC;KACV;IACD,QAAQ,EAAE,SAAS,SAAS,EAAE;MAC5B,IAAI,CAAC,GAAG,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;MACrC,CAAC,CAAC,QAAQ,GAAG,WAAW,EAAE,OAAO,SAAS,CAAC,EAAE,CAAC;MAC9C,OAAO,CAAC,CAAC;KACV;GACF,CAAC;CACH;;AAED,IAAI,IAAI,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACpC,QAAQ,GAAG,SAAS;IACpB,SAAS,GAAG,IAAI;IAChB,SAAS,GAAG,iCAAiC,CAAC;;AAElD,SAAS,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;EAC/B,IAAI,IAAI,GAAG,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE;MAC3B,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE;MACrC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;EAC3B,OAAO,IAAI,GAAG,CAAC,MAAM,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;CAC7F;;AAED,SAAS,OAAO,CAAC,CAAC,EAAE;EAClB,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;CACrC;;AAED,SAAS,QAAQ,CAAC,KAAK,EAAE;EACvB,OAAO,IAAI,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;CACrE;;AAED,SAAS,YAAY,CAAC,KAAK,EAAE;EAC3B,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;EACvC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,EAAA,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,EAAA;EAChD,OAAO,GAAG,CAAC;CACZ;;AAED,SAAS,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EACxC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC9C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CAChD;;AAED,SAAS,qBAAqB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EAC3C,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EACvC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CAChD;;AAED,SAAS,qBAAqB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EAC3C,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EACvC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CAChD;;AAED,SAAS,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EACnC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC9C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CAChD;;AAED,SAAS,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EAC/B,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC9C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CAC7E;;AAED,SAAS,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EAC/B,IAAI,CAAC,GAAG,+BAA+B,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACrE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CAC9E;;AAED,SAAS,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EACtC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC9C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CACnD;;AAED,SAAS,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EACrC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC9C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CAChD;;AAED,SAAS,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EACpC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC9C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CACzD;;AAED,SAAS,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EACjC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC9C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CAChD;;AAED,SAAS,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EAClC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC9C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CAChD;;AAED,SAAS,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EAClC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC9C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CAChD;;AAED,SAAS,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EACvC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC9C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CAChD;;AAED,SAAS,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EACzC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC/C,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;CACjC;;AAED,SAAS,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE;EAC9B,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC/B;;AAED,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE;EAC1B,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAChC;;AAED,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE;EAC1B,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC3C;;AAED,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE;EAC7B,OAAO,GAAG,CAAC,CAAC,GAAGC,GAAO,CAAC,KAAK,CAACC,IAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACrD;;AAED,SAAS,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE;EAChC,OAAO,GAAG,CAAC,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACvC;;AAED,SAAS,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE;EAC/B,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACpC;;AAED,SAAS,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE;EAC3B,OAAO,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAClC;;AAED,SAAS,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE;EAC3B,OAAO,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAClC;;AAED,SAAS,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE;EACpC,OAAO,GAAG,CAACC,MAAU,CAAC,KAAK,CAACD,IAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACpD;;AAED,SAAS,mBAAmB,CAAC,CAAC,EAAE;EAC9B,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;CACnB;;AAED,SAAS,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE;EACpC,OAAO,GAAG,CAACE,MAAU,CAAC,KAAK,CAACF,IAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACpD;;AAED,SAAS,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE;EACxB,OAAO,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACzC;;AAED,SAAS,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE;EAC5B,OAAO,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC3C;;AAED,SAAS,UAAU,CAAC,CAAC,EAAE;EACrB,IAAI,CAAC,GAAG,CAAC,CAAC,iBAAiB,EAAE,CAAC;EAC9B,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC/B,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QACvB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;CAC3B;;AAED,SAAS,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE;EACjC,OAAO,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAClC;;AAED,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE;EAC7B,OAAO,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACnC;;AAED,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE;EAC7B,OAAO,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC9C;;AAED,SAAS,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE;EAChC,OAAO,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACnD;;AAED,SAAS,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE;EACnC,OAAO,GAAG,CAAC,CAAC,CAAC,kBAAkB,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC1C;;AAED,SAAS,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE;EAClC,OAAO,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACvC;;AAED,SAAS,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE;EAC9B,OAAO,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACrC;;AAED,SAAS,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE;EAC9B,OAAO,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACrC;;AAED,SAAS,yBAAyB,CAAC,CAAC,EAAE,CAAC,EAAE;EACvC,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAClD;;AAED,SAAS,sBAAsB,CAAC,CAAC,EAAE;EACjC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;CACtB;;AAED,SAAS,yBAAyB,CAAC,CAAC,EAAE,CAAC,EAAE;EACvC,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAClD;;AAED,SAAS,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE;EAC3B,OAAO,GAAG,CAAC,CAAC,CAAC,cAAc,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC5C;;AAED,SAAS,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE;EAC/B,OAAO,GAAG,CAAC,CAAC,CAAC,cAAc,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC9C;;AAED,SAAS,aAAa,GAAG;EACvB,OAAO,OAAO,CAAC;CAChB;;AAED,SAAS,oBAAoB,GAAG;EAC9B,OAAO,GAAG,CAAC;CACZ;;AC9gBD,IAAIG,QAAM,CAAC;AACX,AAAO,IAAI,UAAU,CAAC;AACtB,AAAO,IAAI,SAAS,CAAC;AACrB,AAAO,IAAI,SAAS,CAAC;AACrB,AAAO,IAAI,QAAQ,CAAC;;AAEpB,aAAa,CAAC;EACZ,QAAQ,EAAE,QAAQ;EAClB,IAAI,EAAE,YAAY;EAClB,IAAI,EAAE,cAAc;EACpB,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;EACrB,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC;EACpF,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;EAC5D,MAAM,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC;EAClI,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;CAClG,CAAC,CAAC;;AAEH,AAAe,SAAS,aAAa,CAAC,UAAU,EAAE;EAChDA,QAAM,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;EAClC,UAAU,GAAGA,QAAM,CAAC,MAAM,CAAC;EAC3B,SAAS,GAAGA,QAAM,CAAC,KAAK,CAAC;EACzB,SAAS,GAAGA,QAAM,CAAC,SAAS,CAAC;EAC7B,QAAQ,GAAGA,QAAM,CAAC,QAAQ,CAAC;EAC3B,OAAOA,QAAM,CAAC;CACf;;ACxBM,IAAI,YAAY,GAAG,uBAAuB,CAAC;;AAElD,SAAS,eAAe,CAAC,IAAI,EAAE;EAC7B,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;CAC3B;;AAED,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW;MACpC,eAAe;MACf,SAAS,CAAC,YAAY,CAAC,CAAC,AAE9B,AAAyB;;ACTzB,SAAS,cAAc,CAAC,MAAM,EAAE;EAC9B,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;EAC5B,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;CAClC;;AAED,IAAI,QAAQ,GAAG,CAAC,IAAI,IAAI,CAAC,0BAA0B,CAAC;MAC9C,cAAc;MACd,QAAQ,CAAC,YAAY,CAAC,CAAC,AAE7B,AAAwB;;ACVxB,iBAAe,SAAS,GAAG,EAAE,IAAI,EAAE;;IAE/B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;;;IAGlC,IAAI,CAAC,GAAG,GAAG,qBAAqB,GAAG,IAAI,CAAC,WAAW,CAAC;IACpD,IAAI,CAAC,SAAS,GAAG,qBAAqB,GAAG,IAAI,CAAC,UAAU,CAAC;;;;IAIzD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;;;IAGlC,IAAI,IAAI,CAAC,aAAa,CAAC;MACrB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC;MACtD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;KAChD;;IAED,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;IACnF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;;IAE7E,IAAI,CAAC,gBAAgB,CAAA;IACrBxC,IAAI,GAAG,GAAG,UAAU,CAAC,0BAA0B,CAAC,CAAC;IACjDA,IAAI,MAAM,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACzGA,IAAI,OAAO,GAAG,UAAC,CAAC,EAAE,EAAK,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;IACtD,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAChD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;IACtD,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;IACjD,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;IACvE,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAChE,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;IAE5C,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;MAC5B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,UAAU,CAAC;KAClE,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;MACpC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;KACxF,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;MACpC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA;KACpD;;IAED,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC;MACpD,OAAO,MAAM,CAAC,QAAQ,GAAG,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC;KAClD,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;IAEjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,UAAU,CAAC;;CAEvJ,CAAA;;;;ACjDD;;;;;;;;AAQA;;;;;AAOA,IAAI,eAAe,GAAG,SAAS,CAAC;;;;;;;AAOhC,WAAc,GAAG,UAAU,CAAC;;;;;;;;;;AAU5B,SAAS,UAAU,CAAC,MAAM,EAAE;EAC1B,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;EACtB,IAAI,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;EAEtC,IAAI,CAAC,KAAK,EAAE;IACV,OAAO,GAAG,CAAC;GACZ;;EAED,IAAI,MAAM,CAAC;EACX,IAAI,IAAI,GAAG,EAAE,CAAC;EACd,IAAI,KAAK,GAAG,CAAC,CAAC;EACd,IAAI,SAAS,GAAG,CAAC,CAAC;;EAElB,KAAK,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;IACrD,QAAQ,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC;MAC3B,KAAK,EAAE;QACL,MAAM,GAAG,QAAQ,CAAC;QAClB,MAAM;MACR,KAAK,EAAE;QACL,MAAM,GAAG,OAAO,CAAC;QACjB,MAAM;MACR,KAAK,EAAE;QACL,MAAM,GAAG,OAAO,CAAC;QACjB,MAAM;MACR,KAAK,EAAE;QACL,MAAM,GAAG,MAAM,CAAC;QAChB,MAAM;MACR,KAAK,EAAE;QACL,MAAM,GAAG,MAAM,CAAC;QAChB,MAAM;MACR;QACE,SAAS;KACZ;;IAED,IAAI,SAAS,KAAK,KAAK,EAAE;MACvB,IAAI,IAAI,GAAG,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;KACzC;;IAED,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;IACtB,IAAI,IAAI,MAAM,CAAC;GAChB;;EAED,OAAO,SAAS,KAAK,KAAK;MACtB,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC;MACtC,IAAI,CAAC;CACV;;AC1ED,WAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjCA,IAAI,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;EACrCA,IAAI,UAAU,GAAG,UAAA,IAAI,EAAC,SAAG,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,GAAA,CAAC;;EAEhD,SAAS,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE;IAClC,IAAI,OAAO,IAAI,KAAK;MAClB,EAAA,UAAU,CAAC,CAAA,mBAAiB,GAAE,IAAI,kBAAY,IAAEyC,OAAM,CAAC,OAAO,CAAC,CAAA,WAAM,CAAC,CAAC,CAAC,EAAA;GAC3E;;EAED,UAAU,CAAC,CAAA,mJAEqD,GAAE,OAAO,0JAE3C,IAAE,IAAI,CAAC,GAAG,CAAA,qBAC/B,IAAE,IAAI,CAAC,KAAK,CAAA,iBACrB,CAAC,CAAC,CAAC;;EAEH,UAAU,CAAC,CAAA,4HAE4D,IAAE,IAAI,CAAC,aAAa,CAAA,MAAE,IAAE,IAAI,CAAC,oBAAoB,CAAA,MAAE,IAAE,IAAI,CAAC,kBAAkB,CAAA,wFAC9E,IAAE,IAAI,CAAC,WAAW,CAAA,cACvF,CAAC,CAAC,CAAC;EACH,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAC,CAAC,EAAE;IACvB,UAAU,CAAC,IAAI,EAAE,CAAA,sDAC0B,IAAE,CAAC,CAAC,SAAS,CAAA,MAAE,IAAE,CAAC,CAAC,QAAQ,CAAA,UAAK,CAAC,CAAC,CAAA;GAC9E,CAAC,CAAC;;EAEH,UAAU,CAAC,CAAA,kLAG0B,IAAE,IAAI,CAAC,KAAK,CAAA,2DACN,IAAE,IAAI,CAAC,WAAW,CAAA,kDAC1B,IAAE,IAAI,CAAC,GAAG,CAAA,qDACR,IAAE,IAAI,CAAC,GAAG,CAAA,8IAG/C,CAAC,CAAC,CAAC;;EAEH,UAAU,CAAC,CAAA,4KAG2B,IAAE,IAAI,CAAC,KAAK,CAAA,2DACN,IAAE,IAAI,CAAC,WAAW,CAAA,mDAC1B,IAAE,IAAI,CAAC,GAAG,CAAA,qDACR,IAAE,IAAI,CAAC,GAAG,CAAA,6IAGhD,CAAC,CAAC,CAAC;;;EAGH,IAAI,IAAI,CAAC,SAAS,CAAC;IACjB,UAAU,CAAC,wFACqE,CAAE,CAAC;;IAEnF,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;;IAEnC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,SAAS,EAAE,CAAA,GAAE,IAAE,IAAI,CAAC,SAAS,CAAA,CAAE,GAAG,SAAS,CAAC,CAAC;IAC7E,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;;IAE/BzC,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;IACjC,IAAI,CAAC,wBAAwB,EAAE,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;IACpE,IAAI,CAAC,yBAAyB,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IACtD,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,oBAAoB,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC9C,IAAI,CAAC,kCAAkC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;;IAEnD,IAAI,IAAI,CAAC,aAAa,CAAC;MACrBA,IAAI,OAAO,GAAG,UAAC,CAAC,EAAE,EAAK,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;MACtD,IAAI,CAAC,sBAAsB,EAAE,CAAA,CAAG,IAAI,CAAC,aAAa,CAAA,MAAE,IAAE,IAAI,CAAC,oBAAoB,CAAA,MAAE,IAAE,IAAI,CAAC,kBAAkB,CAAA,CAAE,CAAC,CAAC;;MAE9G,IAAI,CAAC,2BAA2B,EAAE,CAAA,CAAG,IAAI,CAAC,aAAa,CAAA,MAAE,IAAE,IAAI,CAAC,oBAAoB,CAAA,MAAE,IAAE,IAAI,CAAC,kBAAkB,CAAA,CAAE,CAAC,CAAC;KACpH;;IAED,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAC,CAAC,EAAE;QAC7B,IAAI,CAAC,iBAAiB,EAAE,CAAA,CAAG,CAAC,CAAC,QAAQ,CAAA,OAAG,IAAE,CAAC,CAAC,SAAS,CAAA,CAAE,CAAC,CAAC;QACzD,IAAI,CAAC,6BAA6B,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;KACtD,CAAC,CAAC;;IAEH,IAAI,IAAI,CAAC,SAAS,EAAE;MAClB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAA,GAAG,EAAC;QACzBA,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAC/B,GAAG,CAAC,CAAC,EAAE;UACL,OAAO,CAAC,IAAI,CAAC,kCAAkC,GAAG,GAAG,CAAC,CAAA;SACvD,MAAM;UACL,IAAI,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,CAAA;SAC3E,AAAC;OACH,CAAC,CAAC;KACJ;GACF;CACF,CAAA;;AAED,SAAS,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE;EAC5B,EAAE,CAAC,SAAS,IAAI,IAAI,CAAC;CACtB;;AAED,SAAS,qBAAqB,CAAC,GAAG,CAAC;;EAEjC,IAAI,OAAO,GAAG,iBAAgB,IAAE,GAAG,CAAC,KAAK,CAAA,MAAE,CAAE;;EAE7CA,IAAI,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAA,IAAI,EAAC;IACxD,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACnB,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;MAC1B,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;MACrC,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;KACxC,MAAM;MACL,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;MAC/C,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACpD;IACD,OAAO,IAAI,kBAAiB,GAAE,MAAM,MAAE,GAAE,IAAI,MAAE,CAAE;GACjD,CAAC,CAAC;;EAEH,IAAI,MAAM,IAAI,GAAG,EAAE;IACjB,OAAO,IAAI,4BAA2B,IAAE,GAAG,CAAC,IAAI,CAAA,MAAE,CAAE;GACrD;;EAED,IAAI,eAAe,GAAG,mDAAmD,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EACxF,eAAe,GAAG,eAAe,IAAI,8CAA8C,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EAClG,eAAe,GAAG,eAAe,IAAI,uCAAuC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;EAC/F,IAAI,eAAe,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC;IACxC,OAAO,IAAI,oBAAmB,IAAE,eAAe,CAAC,CAAC,CAAC,CAAA,MAAE,CAAE;IACtD,OAAO,OAAO,CAAC;GAChB;EACD,IAAI,SAAS,IAAI,GAAG,CAAC;IACnB,OAAO,IAAI,yBAAwB,IAAE,GAAG,CAAC,OAAO,CAAA,MAAE,CAAE;GACrD;EACD,IAAI,QAAQ,IAAI,GAAG,EAAE;MACjB,OAAO,IAAI,kBAAiB,IAAE,GAAG,CAAC,MAAM,CAAA,MAAE,CAAE;GAC/C;EACD,IAAI,OAAO,IAAI,GAAG,IAAI,QAAQ,IAAI,GAAG,CAAC;MAClC,OAAO,IAAI,kBAAiB,IAAE,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,CAAA,MAAE,CAAE;GAC5D;;;EAGD,OAAO,OAAO,CAAC;CAChB;;AC3ID0C,IAAMC,MAAI,GAAG,iQAYb,CAAE;;AAEF,aAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjC3C,IAAI,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;EAC5C,MAAM,CAAC,SAAS,GAAG2C,MAAI,CAAC;EACxB3C,IAAI,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;EAClC,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;EACrC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW;IAC1C,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;GAC/B,CAAC,CAAC;CACJ,CAAA;;;;;;;;;;ACfD,CAAC,SAAS,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE;EACzC,IAAI,QAAc,KAAK,QAAQ,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE;IAClF,OAAO,CAAC,OAAO,CAAC,CAAC;GAClB,MAAM,IAAI,OAAO4C,SAAM,KAAK,UAAU,IAAIA,SAAM,CAAC,GAAG,EAAE;IACrDA,SAAM,CAAC,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;GAC9B,MAAM;IACL,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;GAC1B;CACF,CAACtC,cAAI,EAAE,SAAS,eAAe,EAAE,QAAQ,EAAE;;EAE1C,IAAI,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;EAC/C,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,SAAS,eAAe,EAAE,MAAM,EAAE;IAC/D,OAAO,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,gBAAgB,CAAC;GACzD,CAAC;;EAEF,SAAS,UAAU,EAAE,MAAM,EAAE;IAC3B,OAAO,OAAO,MAAM,KAAK,UAAU,CAAC;GACrC;;;;;;EAMD,SAAS,OAAO,EAAE,GAAG,EAAE;IACrB,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,GAAG,OAAO,GAAG,CAAC;GAC5C;;EAED,SAAS,YAAY,EAAE,MAAM,EAAE;IAC7B,OAAO,MAAM,CAAC,OAAO,CAAC,6BAA6B,EAAE,MAAM,CAAC,CAAC;GAC9D;;;;;;EAMD,SAAS,WAAW,EAAE,GAAG,EAAE,QAAQ,EAAE;IACnC,OAAO,GAAG,IAAI,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,CAAC;GACpE;;;;EAID,IAAI,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;EACvC,SAAS,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE;IAC/B,OAAO,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;GACpC;;EAED,IAAI,UAAU,GAAG,IAAI,CAAC;EACtB,SAAS,YAAY,EAAE,MAAM,EAAE;IAC7B,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;GACxC;;EAED,IAAI,SAAS,GAAG;IACd,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;GACd,CAAC;;EAEF,SAAS,UAAU,EAAE,MAAM,EAAE;IAC3B,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,SAAS,aAAa,EAAE,CAAC,EAAE;MACvE,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;KACrB,CAAC,CAAC;GACJ;;EAED,IAAI,OAAO,GAAG,KAAK,CAAC;EACpB,IAAI,OAAO,GAAG,KAAK,CAAC;EACpB,IAAI,QAAQ,GAAG,MAAM,CAAC;EACtB,IAAI,OAAO,GAAG,OAAO,CAAC;EACtB,IAAI,KAAK,GAAG,oBAAoB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;EAwBjC,SAAS,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE;IACtC,IAAI,CAAC,QAAQ;MACX,EAAA,OAAO,EAAE,CAAC,EAAA;;IAEZ,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,QAAQ,GAAG,KAAK,CAAC;;;;IAIrB,SAAS,UAAU,IAAI;MACrB,IAAI,MAAM,IAAI,CAAC,QAAQ,EAAE;QACvB,OAAO,MAAM,CAAC,MAAM;UAClB,EAAA,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,EAAA;OAC/B,MAAM;QACL,MAAM,GAAG,EAAE,CAAC;OACb;;MAED,MAAM,GAAG,KAAK,CAAC;MACf,QAAQ,GAAG,KAAK,CAAC;KAClB;;IAED,IAAI,YAAY,EAAE,YAAY,EAAE,cAAc,CAAC;IAC/C,SAAS,WAAW,EAAE,aAAa,EAAE;MACnC,IAAI,OAAO,aAAa,KAAK,QAAQ;QACnC,EAAA,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAA;;MAElD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;QACvD,EAAA,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,aAAa,CAAC,CAAC,EAAA;;MAEpD,YAAY,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;MACnE,YAAY,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MACnE,cAAc,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAC5E;;IAED,WAAW,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;;IAEnC,IAAI,OAAO,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;;IAEpC,IAAI,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC;IAChD,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE;MACrB,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC;;;MAGpB,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;;MAExC,IAAI,KAAK,EAAE;QACT,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,WAAW,EAAE,EAAE,CAAC,EAAE;UAChE,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;;UAEtB,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE;YACrB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;WAC5B,MAAM;YACL,QAAQ,GAAG,IAAI,CAAC;WACjB;;UAED,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;UAC/C,KAAK,IAAI,CAAC,CAAC;;;UAGX,IAAI,GAAG,KAAK,IAAI;YACd,EAAA,UAAU,EAAE,CAAC,EAAA;SAChB;OACF;;;MAGD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;QAC7B,EAAA,MAAM,EAAA;;MAER,MAAM,GAAG,IAAI,CAAC;;;MAGd,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC;MACrC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;;MAGtB,IAAI,IAAI,KAAK,GAAG,EAAE;QAChB,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvB,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;OACjC,MAAM,IAAI,IAAI,KAAK,GAAG,EAAE;QACvB,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAChC,IAAI,GAAG,GAAG,CAAC;OACZ,MAAM;QACL,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;OACzC;;;MAGD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;QAC7B,EAAA,MAAM,IAAI,KAAK,CAAC,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAA;;MAEpD,KAAK,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;MAC5C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;MAEnB,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE;QAChC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;OACtB,MAAM,IAAI,IAAI,KAAK,GAAG,EAAE;;QAEvB,WAAW,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;;QAE7B,IAAI,CAAC,WAAW;UACd,EAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,CAAC,CAAC,EAAA;;QAElE,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,KAAK;UAC1B,EAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,KAAK,CAAC,CAAC,EAAA;OAC5E,MAAM,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE;QAC1D,QAAQ,GAAG,IAAI,CAAC;OACjB,MAAM,IAAI,IAAI,KAAK,GAAG,EAAE;;QAEvB,WAAW,CAAC,KAAK,CAAC,CAAC;OACpB;KACF;;;IAGD,WAAW,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;;IAE7B,IAAI,WAAW;MACb,EAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAA;;IAEjF,OAAO,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;GACzC;;;;;;EAMD,SAAS,YAAY,EAAE,MAAM,EAAE;IAC7B,IAAI,cAAc,GAAG,EAAE,CAAC;;IAExB,IAAI,KAAK,EAAE,SAAS,CAAC;IACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,SAAS,EAAE,EAAE,CAAC,EAAE;MAC7D,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;;MAElB,IAAI,KAAK,EAAE;QACT,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE;UAC/D,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;UACzB,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;SACzB,MAAM;UACL,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;UAC3B,SAAS,GAAG,KAAK,CAAC;SACnB;OACF;KACF;;IAED,OAAO,cAAc,CAAC;GACvB;;;;;;;;EAQD,SAAS,UAAU,EAAE,MAAM,EAAE;IAC3B,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,IAAI,SAAS,GAAG,YAAY,CAAC;IAC7B,IAAI,QAAQ,GAAG,EAAE,CAAC;;IAElB,IAAI,KAAK,EAAE,OAAO,CAAC;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,SAAS,EAAE,EAAE,CAAC,EAAE;MAC7D,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;;MAElB,QAAQ,KAAK,CAAC,CAAC,CAAC;QACd,KAAK,GAAG,CAAC;QACT,KAAK,GAAG;UACN,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;UACtB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;UACrB,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;UAC1B,MAAM;QACR,KAAK,GAAG;UACN,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;UACzB,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;UACtB,SAAS,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC;UAClF,MAAM;QACR;UACE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;OACzB;KACF;;IAED,OAAO,YAAY,CAAC;GACrB;;;;;;EAMD,SAAS,OAAO,EAAE,MAAM,EAAE;IACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACrB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;IACnB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;GACd;;;;;EAKD,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI;IACtC,OAAO,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;GACzB,CAAC;;;;;;EAMF,OAAO,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,EAAE,EAAE;IAC1C,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;;IAEhC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC;MAC7B,EAAA,OAAO,EAAE,CAAC,EAAA;;IAEZ,IAAI,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;;IAEtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/C,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC;;IAE1B,OAAO,MAAM,CAAC;GACf,CAAC;;;;;;EAMF,OAAO,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,EAAE,EAAE;IACpD,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC;;IAExC,QAAQ,KAAK;MACX,KAAK,CAAC,CAAC;QACL,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;QAClB,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QACf,MAAM;MACR,KAAK,CAAC;QACJ,KAAK,GAAG,EAAE,CAAC;QACX,MAAM;MACR;QACE,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;KAC1C;;IAED,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC;;IAEzB,OAAO,KAAK,CAAC;GACd,CAAC;;;;;;EAMF,SAAS,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE;IACrC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IAChC,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC;GAC7B;;;;;;EAMD,OAAO,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE;IAC5C,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;GAChC,CAAC;;;;;;EAMF,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,IAAI,EAAE;IAChD,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;;IAEvB,IAAI,KAAK,CAAC;IACV,IAAI,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;MAC9B,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;KACrB,MAAM;MACL,IAAI,OAAO,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,GAAG,KAAK,CAAC;;MAEpD,OAAO,OAAO,EAAE;QACd,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;UACzB,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;UACrB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;UACxB,KAAK,GAAG,CAAC,CAAC;;;;;;;;;;;;;UAaV,OAAO,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE;YAC5C,IAAI,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC;cAC5B,EAAA,SAAS,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAA;;YAE/C,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;WAC/B;SACF,MAAM;UACL,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;UAC3B,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SAC7C;;QAED,IAAI,SAAS;UACX,EAAA,MAAM,EAAA;;QAER,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;OAC1B;;MAED,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;KACrB;;IAED,IAAI,UAAU,CAAC,KAAK,CAAC;MACnB,EAAA,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAA;;IAEhC,OAAO,KAAK,CAAC;GACd,CAAC;;;;;;;EAOF,SAAS,MAAM,IAAI;IACjB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;GACjB;;;;;EAKD,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,IAAI;IACnD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;GACjB,CAAC;;;;;;EAMF,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE;IACvD,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACvB,IAAI,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;;IAE7B,IAAI,MAAM,IAAI,IAAI;MAChB,EAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAA;;IAE3D,OAAO,MAAM,CAAC;GACf,CAAC;;;;;;;;;;;EAWF,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;IACnE,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,OAAO,GAAG,CAAC,IAAI,YAAY,OAAO,IAAI,IAAI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;GAC/D,CAAC;;;;;;;;;;;EAWF,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE;;;IAClG,IAAI,MAAM,GAAG,EAAE,CAAC;;IAEhB,IAAI,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,SAAS,EAAE,EAAE,CAAC,EAAE;MAC7D,KAAK,GAAG,SAAS,CAAC;MAClB,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;MAClB,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;;MAElB,IAAI,MAAM,KAAK,GAAG,EAAE,EAAA,KAAK,GAAGA,MAAI,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC,EAAA;WACtF,IAAI,MAAM,KAAK,GAAG,EAAE,EAAA,KAAK,GAAGA,MAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC,EAAA;WAC5F,IAAI,MAAM,KAAK,GAAG,EAAE,EAAA,KAAK,GAAGA,MAAI,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC,EAAA;WAC3F,IAAI,MAAM,KAAK,GAAG,EAAE,EAAA,KAAK,GAAGA,MAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,EAAA;WAChE,IAAI,MAAM,KAAK,MAAM,EAAE,EAAA,KAAK,GAAGA,MAAI,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,EAAA;WACjE,IAAI,MAAM,KAAK,MAAM,EAAE,EAAA,KAAK,GAAGA,MAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAA;;MAEzD,IAAI,KAAK,KAAK,SAAS;QACrB,EAAA,MAAM,IAAI,KAAK,CAAC,EAAA;KACnB;;IAED,OAAO,MAAM,CAAC;GACf,CAAC;;EAEF,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE;;;IACnG,IAAI,IAAI,GAAG,IAAI,CAAC;IAChB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;;;;IAIrC,SAAS,SAAS,EAAE,QAAQ,EAAE;MAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;KACjD;;IAED,IAAI,CAAC,KAAK,EAAE,EAAA,OAAO,EAAA;;IAEnB,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;MAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,WAAW,EAAE,EAAE,CAAC,EAAE;QAChE,MAAM,IAAIA,MAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;OAC3F;KACF,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;MAC9F,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;KACxF,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE;MAC5B,IAAI,OAAO,gBAAgB,KAAK,QAAQ;QACtC,EAAA,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC,EAAA;;;MAGpF,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;;MAExF,IAAI,KAAK,IAAI,IAAI;QACf,EAAA,MAAM,IAAI,KAAK,CAAC,EAAA;KACnB,MAAM;MACL,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;KAC5E;IACD,OAAO,MAAM,CAAC;GACf,CAAC;;EAEF,MAAM,CAAC,SAAS,CAAC,cAAc,GAAG,SAAS,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE;IACrG,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;;;;IAIrC,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;MAClD,EAAA,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC,EAAA;GAC3E,CAAC;;EAEF,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE;IACjF,IAAI,CAAC,QAAQ,EAAE,EAAA,OAAO,EAAA;;IAEtB,IAAI,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,IAAI,KAAK,IAAI,IAAI;MACf,EAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAA;GACzE,CAAC;;EAEF,MAAM,CAAC,SAAS,CAAC,cAAc,GAAG,SAAS,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE;IACzE,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,IAAI,KAAK,IAAI,IAAI;MACf,EAAA,OAAO,KAAK,CAAC,EAAA;GAChB,CAAC;;EAEF,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE;IACrE,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,IAAI,KAAK,IAAI,IAAI;MACf,EAAA,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAA;GACjC,CAAC;;EAEF,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,KAAK,EAAE;IACpD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;GACjB,CAAC;;EAEF,QAAQ,CAAC,IAAI,GAAG,aAAa,CAAC;EAC9B,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;EAC3B,QAAQ,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;;EAG/B,IAAI,aAAa,GAAG,IAAI,MAAM,EAAE,CAAC;;;;;EAKjC,QAAQ,CAAC,UAAU,GAAG,SAAS,UAAU,IAAI;IAC3C,OAAO,aAAa,CAAC,UAAU,EAAE,CAAC;GACnC,CAAC;;;;;;;EAOF,QAAQ,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC/C,OAAO,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;GAC5C,CAAC;;;;;;EAMF,QAAQ,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC3D,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;MAChC,MAAM,IAAI,SAAS,CAAC,kDAAkD;0BAClD,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,2BAA2B;0BACzD,wDAAwD,CAAC,CAAC;KAC/E;;IAED,OAAO,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;GACvD,CAAC;;;;EAIF,QAAQ,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;;;IAGnE,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;;IAEvD,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;MACpB,IAAI,CAAC,MAAM,CAAC,CAAC;KACd,MAAM;MACL,OAAO,MAAM,CAAC;KACf;GACF,CAAC;;;;EAIF,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC;;;EAG7B,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;EAC3B,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;EAC3B,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;;EAEzB,OAAO,QAAQ,CAAC;CACjB,CAAC,EAAE;;;ACnnBJoC,IAAMC,MAAI,GAAG,4lEA8Gb,CAAE;;AAEFD,IAAM,QAAQ,GAAG,s7BA+BjB,CAAA;;AAEA,aAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjC1C,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;EACxC,IAAI,EAAE,EAAE;IACN,EAAE,CAAC,SAAS,GAAG2C,MAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;GACvD;CACF,CAAA;;ACxJDD,IAAMC,MAAI,GAAG,uzDAyDb,CAAE;;AAEF,eAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjC3C,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,CAAA;EACzC,IAAI,EAAE,EAAE;IACNA,IAAI,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC;IAC3B,EAAE,CAAC,SAAS,GAAG2C,MAAI,CAAC;IACpB3C,IAAI,GAAG,GAAG,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,CAAA;;IAExC,IAAI,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;MAC9B,GAAG,CAAC,SAAS,GAAG,6CAA4C,GAAI,GAAG,CAAC,SAAS,CAAC;KAC/E;;IAED,GAAG,CAAC,SAAS,GAAG,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC;IACxC,IAAI,IAAI,CAAC,uBAAuB,EAAE;MAChC,GAAG,CAAC,SAAS,GAAG,+BAA6B,IAAE,IAAI,CAAC,uBAAuB,CAAA,8EAAyE,GAAI,GAAG,CAAC,SAAS,CAAC;KACvK;;IAED,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAClE,EAAE,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC,CAAC;IACxF,EAAE,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,mBAAmB,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,cAAc,GAAG,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;IACjJ,IAAI,MAAM,IAAI,WAAW,GAAG,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QAC1C,MAAM,IAAI,cAAc,GAAG,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QACvD,MAAM,IAAI,aAAa,GAAG,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;QAC9C,MAAM,IAAI,0BAA0B,CAAC;QACrC,MAAM,IAAI,YAAY,GAAG,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QACrD,MAAM,IAAI,YAAY,GAAG,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;QAC1C,MAAM,IAAI,GAAG,CAAC;IAClB,EAAE,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,WAAW,GAAG,MAAM,CAAC;GACzD;;CAEF,CAAA;;ACxFD,eAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjCA,IAAI,GAAG,GAAG,gmBAuBV,CAAE;;EAEFA,IAAI,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;EACvC,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC;EACxB,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;;EAE7CA,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;;;;;;;;EAQ/B,IAAI,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;EAC/D,QAAQ,CAAC,OAAO,CAAC,UAAC,EAAE,CAAC,CAAC,EAAE;IACtB,IAAI,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,GAAG,EAAE;MACP,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;MAC1B,IAAI,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;MAC1C,IAAI,cAAc,GAAG,EAAE,CAAC;MACxB,IAAI,CAAC,GAAG,CAAC,UAAC,GAAG,CAAC,CAAC,EAAE;QACf,IAAI,CAAC,CAAC,CAAC,EAAE,EAAA,cAAc,IAAI,UAAU,CAAC,EAAA;QACtC,cAAc,IAAI,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;OACtD,CAAC,CAAC;MACH,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;MACtD,IAAI,WAAW,GAAG,EAAE,CAAC,SAAS,CAAC;MAC/B,IAAI,WAAW,IAAI,EAAE,EAAE,EAAA,WAAW,IAAI,GAAG,CAAC,EAAA;MAC1C,EAAE,CAAC,SAAS,GAAG,sBAAoB,GAAE,CAAC,qBAAe,GAAE,cAAc,QAAG,GAAE,WAAW,qCAA+B,GAAE,WAAW,mBAAe,CAAE;KACnJ;GACF,CAAC,CAAC;;EAEHA,IAAI,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;EACjD,IAAI,KAAK,EAAE;IACTA,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACjC,SAAS,CAAC,OAAO,CAAC,UAAA,GAAG,EAAC;MACpBA,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;MACjC,EAAE,CAAC,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;MACzD,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;KACpB,CAAC,CAAA;IACF,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;GACvB;;EAED,SAAS,iBAAiB,CAAC,IAAI,CAAC;IAC9B,SAAS,WAAW,CAAC,GAAG,CAAC;MACvB,IAAI,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC;QAC3B,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACtC,OAAO,EAAE,CAAC,CAAC,CAAC;OACb,MAAM;QACL,OAAO,GAAG,CAAC;OACZ;KACF;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;GACjD;;EAED,SAAS,gBAAgB,CAAC,IAAI,CAAC;IAC7B,SAAS,WAAW,CAAC,GAAG,CAAC;MACvB,IAAI,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC;QAC3B,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,UAAA,IAAI,EAAC,SAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAA,CAAC,CAAA;QACpD,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACpB,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,EAAA;QACrD,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,EAAA;QACxE,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,YAAY,GAAG,IAAI,CAAC,EAAA;OAC9D,MAAM;QACL,OAAO,GAAG,CAAC;OACZ;KACF;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;GACzC;;EAED,SAAS,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,CAAC;IAClD,IAAI,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtCA,IAAI,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,UAAA,IAAI,EAAC;MAChC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;MACnB,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1B,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACrC,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;OACjC,MAAM;QACL,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/C,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;OACpD;MACD,IAAI,QAAQ,GAAG,EAAE,CAAC;MAClB,IAAI,MAAM,IAAI,SAAS,EAAE;QACvB,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAA,CAAC,EAAC,SAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAA,CAAC,CAAC;QAC1D,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;OACnC;MACD,OAAO,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC;sBACvB,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;sBACrB,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;KAC3C,CAAC,CAAC;IACH,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;MACpB,IAAI,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;MAC1D,GAAG,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;MACxD,OAAO,GAAG,CAAC;KACZ,MAAM;MACL,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;KACxB;GACF;;EAED,SAAS,YAAY,CAAC,GAAG,EAAE;IACzB,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAA;IAC/C,IAAI,QAAQ,IAAI,GAAG,CAAC;MAClB,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,CAAC;MACpC,KAAK,GAAG,CAAC,KAAK,IAAI,SAAS,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC;MACjD,IAAI,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;KACvC;IACD,IAAI,OAAO,IAAI,GAAG,CAAC;MACjB,IAAI,IAAI,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAA;KAC7B;IACD,IAAI,IAAI,IAAI,EAAE,EAAE,EAAA,IAAI,IAAI,IAAI,CAAA,EAAA;IAC5B,IAAI,WAAW,IAAI,GAAG,CAAC;MACrB,IAAI,IAAI,GAAG,CAAC,SAAS,CAAC;MACtB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAA,IAAI,IAAI,GAAG,CAAC,EAAA;KAC7C;IACD,OAAO,IAAI,CAAC;GACb;;EAED,SAAS,WAAW,CAAC,GAAG,CAAC;IACvB,IAAI,KAAK,IAAI,GAAG,CAAC;MACf,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;MAClB,IAAI,WAAW,GAAG,CAAC,6BAA6B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;MAC5D,IAAI,WAAW,IAAI,IAAI,CAAC;QACtB,GAAG,GAAG,uBAAsB,IAAE,WAAW,CAAC,CAAC,CAAC,CAAA,SAAK,CAAE;OACpD;;MAED,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;QAC1B,IAAI,KAAK,GAAG,KAAK,CAAC;OACnB,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE;QACnC,IAAI,KAAK,GAAG,MAAM,CAAC;OACpB;MACD,OAAO,CAAA,mBAAiB,GAAE,GAAG,SAAI,IAAE,KAAK,EAAE,MAAM,CAAA,UAAM,CAAC,CAAC;KACzD;;aAEQ;MACP,OAAO,EAAE,CAAC;KACX;GACF;EACD,SAAS,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC;IAChC,IAAI,KAAK,IAAI,GAAG,EAAE;MAChB,OAAO,CAAA,CAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAA,gCAA2B,IAAE,GAAG,CAAC,GAAG,CAAA,gDAAyC,IAAE,GAAG,CAAC,GAAG,CAAA,SAAK,CAAC,CAAC;KAC1H,MAAM;MACL,OAAO,EAAE,CAAC;KACX;GACF;;EAED,SAAS,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC;IACpC,IAAI,GAAG,CAAC;MACN,IAAI,IAAI,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,OAAO,CAAA;MACvC,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;MAClC,IAAI,IAAI,aAAa,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;MACxD,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC;QACvB,IAAI,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;OAC7C,MAAM;QACL,IAAI,IAAI,IAAI,CAAA;OACb;MACD,IAAI,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;MAC1B,IAAI,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;MACxB,OAAO,IAAI;;;;;;;;;;;;KAYZ,MAAM;MACL,OAAO,GAAG,CAAC;KACZ;GACF;;EAED,SAAS,UAAU,CAAC,GAAG,CAAC;IACtB,IAAI,GAAG,CAAC;MACN,IAAI,IAAI,GAAG,EAAE,CAAC;MACd,IAAI,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC;MACnC,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC;MACzB,IAAI,IAAI,MAAM,CAAA;;MAEd,IAAI,KAAK,GAAG,aAAa,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC;MACxD,IAAI,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;;MAErF,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;QACzD,IAAI,IAAI,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC;OAC7B,MAAM;QACL,IAAI,IAAI,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;OAChC;MACD,OAAO,IAAI,CAAC;KACb,MAAM;MACL,OAAO,GAAG,CAAC;KACZ;GACF;;;;EAID,SAAS,UAAU,CAAC,GAAG,CAAC;IACtB,IAAI,GAAG,CAAC;MACN,IAAI,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;MACtC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,UAAA,IAAI,EAAC,SAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAA,CAAC,CAAA;MACpD,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;MAChC,IAAI,GAAG,GAAG,uCAAuC,CAAA;MACjD,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;KAC1D;;GAEF;CACF,CAAA;;ACzOD,eAAe,SAAS,GAAG,EAAE,IAAI,EAAE;;EAEjC,IAAI,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;EAC3D,IAAI,SAAS,GAAG,EAAE,CAAC;EACnB,MAAM,CAAC,OAAO,CAAC,UAAC,EAAE,CAAC,CAAC,EAAE;IACpB,IAAI,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACb,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;IAClB,IAAI,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACrD,EAAE,CAAC,SAAS,GAAG,kBAAgB,GAAE,GAAG,qBAAe,GAAE,eAAe,iCAA0B,GAAE,CAAC,kBAAc,CAAE;GAClH,CAAC,CAAC;;EAEHA,IAAI,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;EAC7C,IAAI,MAAM,EAAE;IACVA,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACjC,SAAS,CAAC,OAAO,CAAC,UAAA,OAAO,EAAC;MACxBA,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;MACjC,EAAE,CAAC,SAAS,GAAG,OAAO,CAAC;MACvB,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;KACpB,CAAC,CAAA;IACF,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;GACxB;;CAEF,CAAA;;;;;;;;;AClBD,AAAC,CAAC,WAAW;;;;;;AAMb,IAAI,KAAK,GAAG;EACV,OAAO,EAAE,MAAM;EACf,IAAI,EAAE,mBAAmB;EACzB,MAAM,EAAE,IAAI;EACZ,EAAE,EAAE,2BAA2B;EAC/B,OAAO,EAAE,uCAAuC;EAChD,OAAO,EAAE,IAAI;EACb,QAAQ,EAAE,mCAAmC;EAC7C,UAAU,EAAE,oCAAoC;EAChD,IAAI,EAAE,+DAA+D;EACrE,IAAI,EAAE,8EAA8E;EACpF,GAAG,EAAE,mEAAmE;EACxE,KAAK,EAAE,IAAI;EACX,SAAS,EAAE,gEAAgE;EAC3E,IAAI,EAAE,SAAS;CAChB,CAAC;;AAEF,KAAK,CAAC,MAAM,GAAG,iBAAiB,CAAC;AACjC,KAAK,CAAC,IAAI,GAAG,4CAA4C,CAAC;AAC1D,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;GACnC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC;IACrB,CAAC;;AAEL,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;GAC7B,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC;GACtB,IAAI,EAAE,uCAAuC,CAAC;GAC9C,KAAK,EAAE,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;IACzC,CAAC;;AAEL,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC;GACzC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;IAChB,CAAC;;AAEL,KAAK,CAAC,IAAI,GAAG,QAAQ;IACjB,oDAAoD;IACpD,qDAAqD;IACrD,yDAAyD,CAAC;;AAE9D,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;GAC7B,SAAS,EAAE,iBAAiB,CAAC;GAC7B,QAAQ,EAAE,sBAAsB,CAAC;GACjC,SAAS,EAAE,mCAAmC,CAAC;GAC/C,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC;IAClB,CAAC;;AAEL,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;GACvC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;GACf,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC;GACzB,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC;GAC3B,YAAY,EAAE,KAAK,CAAC,UAAU,CAAC;GAC/B,KAAK,EAAE,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC;GACxB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;IAChB,CAAC;;;;;;AAML,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;;;;;;AAMhC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE;EAClC,MAAM,EAAE,4DAA4D;EACpE,SAAS,EAAE,GAAG;EACd,OAAO,EAAE,uCAAuC;CACjD,CAAC,CAAC;;AAEH,KAAK,CAAC,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;GAC3C,KAAK,EAAE,KAAK;MACT,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,GAAG;MACnD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC;IAChD,CAAC;;;;;;AAML,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE;EAClC,OAAO,EAAE,+DAA+D;EACxE,KAAK,EAAE,2DAA2D;CACnE,CAAC,CAAC;;;;;;AAMH,SAAS,KAAK,CAAC,OAAO,EAAE;EACtB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;EACjB,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;EACvB,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC;EAC1C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;;EAE1B,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;IACpB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;MACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;KAC3B,MAAM;MACL,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;KACxB;GACF;CACF;;;;;;AAMD,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;;;;;;AAMpB,KAAK,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,OAAO,EAAE;EACjC,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;EAC/B,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACvB,CAAC;;;;;;AAMF,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE;EAClC,GAAG,GAAG,GAAG;KACN,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC;KACzB,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;KACtB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;KACvB,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;;EAE5B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;CAC9B,CAAC;;;;;;AAMF,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE;;;EAC7C,IAAI,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;MAC/B,IAAI;MACJ,KAAK;MACL,GAAG;MACH,IAAI;MACJ,CAAC;MACD,IAAI;MACJ,KAAK;MACL,CAAC;MACD,CAAC,CAAC;;EAEN,OAAO,GAAG,EAAE;;IAEV,IAAI,GAAG,GAAGM,MAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACtC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;QACrBA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;UACf,IAAI,EAAE,OAAO;SACd,CAAC,CAAC;OACJ;KACF;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACnC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;MACpCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,CAACA,MAAI,CAAC,OAAO,CAAC,QAAQ;YACxB,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YACvB,GAAG;OACR,CAAC,CAAC;MACH,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACrC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QACZ,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE;OACnB,CAAC,CAAC;MACH,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACtC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM;QACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;OACb,CAAC,CAAC;MACH,SAAS;KACV;;;IAGD,IAAI,GAAG,KAAK,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;MAC/C,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;;MAEnC,IAAI,GAAG;QACL,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC1D,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;QACvD,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;OAC7C,CAAC;;MAEF,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;UACnC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;SACzB,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;UAC3C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;SAC1B,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;UAC1C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;SACxB,MAAM;UACL,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;SACtB;OACF;;MAED,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;OAC/C;;MAEDA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;MAEvB,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACvC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC;QAC7B,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;OACb,CAAC,CAAC;MACH,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACjC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,IAAI;OACX,CAAC,CAAC;MACH,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACzC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;;MAEnCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,kBAAkB;OACzB,CAAC,CAAC;;MAEH,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;;;;;MAKrCA,MAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;;MAE3BA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,gBAAgB;OACvB,CAAC,CAAC;;MAEH,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACnC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;;MAEdA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC;OACzB,CAAC,CAAC;;;MAGH,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAACA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;;MAEpC,IAAI,GAAG,KAAK,CAAC;MACb,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;MACf,CAAC,GAAG,CAAC,CAAC;;MAEN,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QACjB,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;;;;QAId,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QACpB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;;;;QAI9C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;UACxB,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC;UACrB,IAAI,GAAG,CAACA,MAAI,CAAC,OAAO,CAAC,QAAQ;cACzB,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,GAAG,KAAK,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;cACzD,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;SACnC;;;;QAID,IAAIA,MAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;UAC1C,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;UACrC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;YACpD,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;YACxC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;WACX;SACF;;;;;QAKD,KAAK,GAAG,IAAI,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;UACf,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC;UAC7C,IAAI,CAAC,KAAK,EAAE,EAAA,KAAK,GAAG,IAAI,CAAC,EAAA;SAC1B;;QAEDA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;UACf,IAAI,EAAE,KAAK;cACP,kBAAkB;cAClB,iBAAiB;SACtB,CAAC,CAAC;;;QAGHA,MAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;;QAE5BA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;UACf,IAAI,EAAE,eAAe;SACtB,CAAC,CAAC;OACJ;;MAEDA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,UAAU;OACjB,CAAC,CAAC;;MAEH,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACnC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAEA,MAAI,CAAC,OAAO,CAAC,QAAQ;YACvB,WAAW;YACX,MAAM;QACV,GAAG,EAAE,CAACA,MAAI,CAAC,OAAO,CAAC,SAAS;cACtB,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;QACpE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;OACb,CAAC,CAAC;MACH,SAAS;KACV;;;IAGD,IAAI,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;MACpD,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG;QACxC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QACZ,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;OACd,CAAC;MACF,SAAS;KACV;;;IAGD,IAAI,GAAG,KAAK,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;MAC7C,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;;MAEnC,IAAI,GAAG;QACL,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC1D,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;QACvD,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;OACxD,CAAC;;MAEF,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;UACnC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;SACzB,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;UAC3C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;SAC1B,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;UAC1C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;SACxB,MAAM;UACL,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;SACtB;OACF;;MAED,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;WAC1B,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;WAC/B,KAAK,CAAC,QAAQ,CAAC,CAAC;OACpB;;MAEDA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;MAEvB,SAAS;KACV;;;IAGD,IAAI,GAAG,KAAK,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;MACjD,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI;YAC3C,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACnB,GAAG,CAAC,CAAC,CAAC;OACX,CAAC,CAAC;MACH,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;;MAEnC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;OACb,CAAC,CAAC;MACH,SAAS;KACV;;IAED,IAAI,GAAG,EAAE;MACP,MAAM;QACJ,KAAK,CAAC,yBAAyB,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;KACxD;GACF;;EAED,OAAO,IAAI,CAAC,MAAM,CAAC;CACpB,CAAC;;;;;;AAMF,IAAI,MAAM,GAAG;EACX,MAAM,EAAE,6BAA6B;EACrC,QAAQ,EAAE,0BAA0B;EACpC,GAAG,EAAE,IAAI;EACT,GAAG,EAAE,wDAAwD;EAC7D,IAAI,EAAE,yBAAyB;EAC/B,OAAO,EAAE,gCAAgC;EACzC,MAAM,EAAE,kCAAkC;EAC1C,MAAM,EAAE,gDAAgD;EACxD,EAAE,EAAE,uDAAuD;EAC3D,IAAI,EAAE,kCAAkC;EACxC,EAAE,EAAE,kBAAkB;EACtB,GAAG,EAAE,IAAI;EACT,IAAI,EAAE,oCAAoC;CAC3C,CAAC;;AAEF,MAAM,CAAC,OAAO,GAAG,wCAAwC,CAAC;AAC1D,MAAM,CAAC,KAAK,GAAG,gDAAgD,CAAC;;AAEhE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;GAC/B,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC;GACzB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;IACpB,CAAC;;AAEL,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;GACrC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC;;;;;;AAML,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;;;;;;AAMlC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE;EACzC,MAAM,EAAE,gEAAgE;EACxE,EAAE,EAAE,0DAA0D;CAC/D,CAAC,CAAC;;;;;;AAMH,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE;EACpC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;EAC9C,GAAG,EAAE,sCAAsC;EAC3C,GAAG,EAAE,yBAAyB;EAC9B,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;KACvB,IAAI,EAAE,KAAK,CAAC;KACZ,GAAG,EAAE,aAAa,CAAC;MAClB;CACL,CAAC,CAAC;;;;;;AAMH,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,EAAE;EACpC,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;EACrC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;CAC9C,CAAC,CAAC;;;;;;AAMH,SAAS,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE;EACnC,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC;EAC1C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACnB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;EAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,QAAQ,CAAC;EACtD,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;;EAErC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;IACf,MAAM;MACJ,KAAK,CAAC,2CAA2C,CAAC,CAAC;GACtD;;EAED,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;IACpB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;MACvB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;KAC5B,MAAM;MACL,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;KACzB;GACF,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;IAChC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC;GAC9B;CACF;;;;;;AAMD,WAAW,CAAC,KAAK,GAAG,MAAM,CAAC;;;;;;AAM3B,WAAW,CAAC,MAAM,GAAG,SAAS,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE;EACjD,IAAI,MAAM,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;EAC7C,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;CAC3B,CAAC;;;;;;AAMF,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,GAAG,EAAE;;;EAC3C,IAAI,GAAG,GAAG,EAAE;MACR,IAAI;MACJ,IAAI;MACJ,IAAI;MACJ,GAAG,CAAC;;EAER,OAAO,GAAG,EAAE;;IAEV,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACrC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;MACd,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACvC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;QAClB,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;YAC3BA,MAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAChCA,MAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,GAAGA,MAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;OACtC,MAAM;QACL,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,GAAG,IAAI,CAAC;OACb;MACD,GAAG,IAAIA,MAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;MAC5C,SAAS;KACV;;;IAGD,IAAI,CAACA,MAAI,CAAC,MAAM,KAAK,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;MACpD,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MACtB,IAAI,GAAG,IAAI,CAAC;MACZ,GAAG,IAAIA,MAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;MAC5C,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MAClC,IAAI,CAACA,MAAI,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;QACxCA,MAAI,CAAC,MAAM,GAAG,IAAI,CAAC;OACpB,MAAM,IAAIA,MAAI,CAAC,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;QAChDA,MAAI,CAAC,MAAM,GAAG,KAAK,CAAC;OACrB;MACD,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,IAAIA,MAAI,CAAC,OAAO,CAAC,QAAQ;UACxBA,MAAI,CAAC,OAAO,CAAC,SAAS;YACpBA,MAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;UAChB,GAAG,CAAC,CAAC,CAAC,CAAA;MACV,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACnC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,GAAG,IAAI,CAAC;MACnB,GAAG,IAAIA,MAAI,CAAC,UAAU,CAAC,GAAG,EAAE;QAC1B,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QACZ,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;OACd,CAAC,CAAC;MACHA,MAAI,CAAC,MAAM,GAAG,KAAK,CAAC;MACpB,SAAS;KACV;;;IAGD,IAAI,CAAC,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;YAC/B,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;MAC1C,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;MAC/C,IAAI,GAAGA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;MACtC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QACvB,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QAChC,SAAS;OACV;MACDA,MAAI,CAAC,MAAM,GAAG,IAAI,CAAC;MACnB,GAAG,IAAIA,MAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;MAClCA,MAAI,CAAC,MAAM,GAAG,KAAK,CAAC;MACpB,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACrC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,IAAIA,MAAI,CAAC,QAAQ,CAAC,MAAM,CAACA,MAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC3D,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACjC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,IAAIA,MAAI,CAAC,QAAQ,CAAC,EAAE,CAACA,MAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MACvD,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACnC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,IAAIA,MAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;MACpD,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACjC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,IAAIA,MAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;MAC1B,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MAClC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,IAAIA,MAAI,CAAC,QAAQ,CAAC,GAAG,CAACA,MAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC9C,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACnC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,IAAIA,MAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAACA,MAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC5D,SAAS;KACV;;IAED,IAAI,GAAG,EAAE;MACP,MAAM;QACJ,KAAK,CAAC,yBAAyB,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;KACxD;GACF;;EAED,OAAO,GAAG,CAAC;CACZ,CAAC;;;;;;AAMF,WAAW,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,GAAG,EAAE,IAAI,EAAE;EACrD,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;MACxB,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;;EAEnD,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;MAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MACpD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACtD,CAAC;;;;;;AAMF,WAAW,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,IAAI,EAAE;EACjD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;EAC3C,OAAO,IAAI;;KAER,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC;;KAEzB,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC;;KAExB,OAAO,CAAC,yBAAyB,EAAE,UAAU,CAAC;;KAE9C,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;;KAEvB,OAAO,CAAC,8BAA8B,EAAE,UAAU,CAAC;;KAEnD,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;;KAEvB,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;CAChC,CAAC;;;;;;AAMF,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,IAAI,EAAE;EAC5C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;EACtC,IAAI,GAAG,GAAG,EAAE;MACR,CAAC,GAAG,IAAI,CAAC,MAAM;MACf,CAAC,GAAG,CAAC;MACL,EAAE,CAAC;;EAEP,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;IACjB,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,EAAE;MACvB,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;KAC5B;IACD,GAAG,IAAI,IAAI,GAAG,EAAE,GAAG,GAAG,CAAC;GACxB;;EAED,OAAO,GAAG,CAAC;CACZ,CAAC;;;;;;AAMF,SAAS,QAAQ,CAAC,OAAO,EAAE;EACzB,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;CAC9B;;AAED,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;EACtD,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;IAC1B,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7C,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,IAAI,EAAE;MAC/B,OAAO,GAAG,IAAI,CAAC;MACf,IAAI,GAAG,GAAG,CAAC;KACZ;GACF;;EAED,IAAI,CAAC,IAAI,EAAE;IACT,OAAO,aAAa;SACf,OAAO,GAAG,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrC,iBAAiB,CAAC;GACvB;;EAED,OAAO,oBAAoB;MACvB,IAAI,CAAC,OAAO,CAAC,UAAU;MACvB,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC;MAClB,IAAI;OACH,OAAO,GAAG,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;MACrC,mBAAmB,CAAC;CACzB,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,KAAK,EAAE;EAC9C,OAAO,gBAAgB,GAAG,KAAK,GAAG,iBAAiB,CAAC;CACrD,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE;EACvC,OAAO,IAAI,CAAC;CACb,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE;EACtD,OAAO,IAAI;MACP,KAAK;MACL,OAAO;MACP,IAAI,CAAC,OAAO,CAAC,YAAY;MACzB,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;MACzC,IAAI;MACJ,IAAI;MACJ,KAAK;MACL,KAAK;MACL,KAAK,CAAC;CACX,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,EAAE,GAAG,WAAW;EACjC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAC;CAClD,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,OAAO,EAAE;EAChD,IAAI,IAAI,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC;EACjC,OAAO,GAAG,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;CACxD,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,IAAI,EAAE;EAC3C,OAAO,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CAClC,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,IAAI,EAAE;EAC5C,OAAO,KAAK,GAAG,IAAI,GAAG,QAAQ,CAAC;CAChC,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,MAAM,EAAE,IAAI,EAAE;EAChD,OAAO,WAAW;MACd,WAAW;MACX,MAAM;MACN,YAAY;MACZ,WAAW;MACX,IAAI;MACJ,YAAY;MACZ,YAAY,CAAC;CAClB,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,OAAO,EAAE;EAC9C,OAAO,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;CACvC,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,OAAO,EAAE,KAAK,EAAE;EACtD,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;EACtC,IAAI,GAAG,GAAG,KAAK,CAAC,KAAK;MACjB,GAAG,GAAG,IAAI,GAAG,qBAAqB,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI;MACvD,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC;EACrB,OAAO,GAAG,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;CAC5C,CAAC;;;AAGF,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,IAAI,EAAE;EACzC,OAAO,UAAU,GAAG,IAAI,GAAG,WAAW,CAAC;CACxC,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,IAAI,EAAE;EACrC,OAAO,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC;CAChC,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,IAAI,EAAE;EAC3C,OAAO,QAAQ,GAAG,IAAI,GAAG,SAAS,CAAC;CACpC,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,EAAE,GAAG,WAAW;EACjC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;CAC9C,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,IAAI,EAAE;EACtC,OAAO,OAAO,GAAG,IAAI,GAAG,QAAQ,CAAC;CAClC,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;EACpD,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;IACzB,IAAI;MACF,IAAI,IAAI,GAAG,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SAC1C,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;SACtB,WAAW,EAAE,CAAC;KAClB,CAAC,OAAO,CAAC,EAAE;MACV,OAAO,EAAE,CAAC;KACX;IACD,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;MACxE,OAAO,EAAE,CAAC;KACX;GACF;EACD,IAAI,GAAG,GAAG,WAAW,GAAG,IAAI,GAAG,GAAG,CAAC;EACnC,IAAI,KAAK,EAAE;IACT,GAAG,IAAI,UAAU,GAAG,KAAK,GAAG,GAAG,CAAC;GACjC;EACD,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,MAAM,CAAC;EAC3B,OAAO,GAAG,CAAC;CACZ,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;EACrD,IAAI,GAAG,GAAG,YAAY,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,GAAG,CAAC;EACvD,IAAI,KAAK,EAAE;IACT,GAAG,IAAI,UAAU,GAAG,KAAK,GAAG,GAAG,CAAC;GACjC;EACD,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,GAAG,GAAG,CAAC;EACvC,OAAO,GAAG,CAAC;CACZ,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE;EACvC,OAAO,IAAI,CAAC;CACb,CAAC;;;;;;AAMF,SAAS,MAAM,CAAC,OAAO,EAAE;EACvB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;EACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EAClB,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC;EAC1C,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,QAAQ,CAAC;EAC9D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;EACtC,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;CACtC;;;;;;AAMD,MAAM,CAAC,KAAK,GAAG,SAAS,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE;EAC9C,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;EAC3C,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;CAC1B,CAAC;;;;;;AAMF,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,GAAG,EAAE;;;EACrC,IAAI,CAAC,MAAM,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;EACtE,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;;EAE5B,IAAI,GAAG,GAAG,EAAE,CAAC;EACb,OAAO,IAAI,CAAC,IAAI,EAAE,EAAE;IAClB,GAAG,IAAIA,MAAI,CAAC,GAAG,EAAE,CAAC;GACnB;;EAED,OAAO,GAAG,CAAC;CACZ,CAAC;;;;;;AAMF,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,WAAW;EACjC,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;CACvC,CAAC;;;;;;AAMF,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,WAAW;EACjC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;CACjD,CAAC;;;;;;AAMF,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,WAAW;;;EACtC,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;;EAE3B,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,EAAE;IAClC,IAAI,IAAI,IAAI,GAAGA,MAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC;GACjC;;EAED,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CACjC,CAAC;;;;;;AAMF,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,WAAW;;;EAChC,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI;IACrB,KAAK,OAAO,EAAE;MACZ,OAAO,EAAE,CAAC;KACX;IACD,KAAK,IAAI,EAAE;MACT,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;KAC3B;IACD,KAAK,SAAS,EAAE;MACd,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO;QAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,KAAK;QAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KACpB;IACD,KAAK,MAAM,EAAE;MACX,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI;QACvC,IAAI,CAAC,KAAK,CAAC,IAAI;QACf,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;KACvB;IACD,KAAK,OAAO,EAAE;MACZ,IAAI,MAAM,GAAG,EAAE;UACX,IAAI,GAAG,EAAE;UACT,CAAC;UACD,GAAG;UACH,IAAI;UACJ,KAAK;UACL,CAAC,CAAC;;;MAGN,IAAI,GAAG,EAAE,CAAC;MACV,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC7C,KAAK,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAEA,MAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,IAAI,IAAIA,MAAI,CAAC,QAAQ,CAAC,SAAS;UAC7BA,MAAI,CAAC,MAAM,CAAC,MAAM,CAACA,MAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;UACxC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAEA,MAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;SAC7C,CAAC;OACH;MACD,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;MAEvC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC5C,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;;QAE1B,IAAI,GAAG,EAAE,CAAC;QACV,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;UAC/B,IAAI,IAAIA,MAAI,CAAC,QAAQ,CAAC,SAAS;YAC7BA,MAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1B,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAEA,MAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;WAC9C,CAAC;SACH;;QAED,IAAI,IAAIA,MAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;OACtC;MACD,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;KAC1C;IACD,KAAK,kBAAkB,EAAE;MACvB,IAAI,IAAI,GAAG,EAAE,CAAC;;MAEd,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,gBAAgB,EAAE;QAC5C,IAAI,IAAIA,MAAI,CAAC,GAAG,EAAE,CAAC;OACpB;;MAED,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KACvC;IACD,KAAK,YAAY,EAAE;MACjB,IAAI,IAAI,GAAG,EAAE;UACT,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;;MAEjC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,UAAU,EAAE;QACtC,IAAI,IAAIA,MAAI,CAAC,GAAG,EAAE,CAAC;OACpB;;MAED,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KAC1C;IACD,KAAK,iBAAiB,EAAE;MACtB,IAAI,IAAI,GAAG,EAAE,CAAC;;MAEd,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,eAAe,EAAE;QAC3C,IAAI,IAAIA,MAAI,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM;YAC9BA,MAAI,CAAC,SAAS,EAAE;YAChBA,MAAI,CAAC,GAAG,EAAE,CAAC;OAChB;;MAED,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACrC;IACD,KAAK,kBAAkB,EAAE;MACvB,IAAI,IAAI,GAAG,EAAE,CAAC;;MAEd,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,eAAe,EAAE;QAC3C,IAAI,IAAIA,MAAI,CAAC,GAAG,EAAE,CAAC;OACpB;;MAED,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACrC;IACD,KAAK,MAAM,EAAE;MACX,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;UAChD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;UACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;MACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACjC;IACD,KAAK,WAAW,EAAE;MAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;KACrE;IACD,KAAK,MAAM,EAAE;MACX,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;KAClD;GACF;CACF,CAAC;;;;;;AAMF,SAAS,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE;EAC5B,OAAO,IAAI;KACR,OAAO,CAAC,CAAC,MAAM,GAAG,cAAc,GAAG,IAAI,EAAE,OAAO,CAAC;KACjD,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;KACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;KACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;KACvB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;CAC3B;;AAED,SAAS,QAAQ,CAAC,IAAI,EAAE;;EAEtB,OAAO,IAAI,CAAC,OAAO,CAAC,2CAA2C,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE;IAC9E,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IACpB,IAAI,CAAC,KAAK,OAAO,EAAE,EAAA,OAAO,GAAG,CAAC,EAAA;IAC9B,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;MACvB,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;UACtB,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;UACjD,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;KAC1C;IACD,OAAO,EAAE,CAAC;GACX,CAAC,CAAC;CACJ;;AAED,SAAS,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE;EAC3B,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;EACrB,GAAG,GAAG,GAAG,IAAI,EAAE,CAAC;EAChB,OAAO,SAAS,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE;IAC9B,IAAI,CAAC,IAAI,EAAE,EAAA,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,EAAA;IACzC,GAAG,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC;IACxB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IACxC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACjC,OAAO,IAAI,CAAC;GACb,CAAC;CACH;;AAED,SAAS,IAAI,GAAG,EAAE;AAClB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;;AAEjB,SAAS,KAAK,CAAC,GAAG,EAAE;;;EAClB,IAAI,CAAC,GAAG,CAAC;MACL,MAAM;MACN,GAAG,CAAC;;EAER,OAAO,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAChC,MAAM,GAAGK,WAAS,CAAC,CAAC,CAAC,CAAC;IACtB,KAAK,GAAG,IAAI,MAAM,EAAE;MAClB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;QACrD,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;OACxB;KACF;GACF;;EAED,OAAO,GAAG,CAAC;CACZ;;;;;;;AAOD,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE;EAClC,IAAI,QAAQ,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;IACzC,IAAI,CAAC,QAAQ,EAAE;MACb,QAAQ,GAAG,GAAG,CAAC;MACf,GAAG,GAAG,IAAI,CAAC;KACZ;;IAED,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;;IAE5C,IAAI,SAAS,GAAG,GAAG,CAAC,SAAS;QACzB,MAAM;QACN,OAAO;QACP,CAAC,GAAG,CAAC,CAAC;;IAEV,IAAI;MACF,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;KAC7B,CAAC,OAAO,CAAC,EAAE;MACV,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;KACpB;;IAED,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;;IAExB,IAAI,IAAI,GAAG,SAAS,GAAG,EAAE;MACvB,IAAI,GAAG,EAAE;QACP,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;QAC1B,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;OACtB;;MAED,IAAI,GAAG,CAAC;;MAER,IAAI;QACF,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;OACjC,CAAC,OAAO,CAAC,EAAE;QACV,GAAG,GAAG,CAAC,CAAC;OACT;;MAED,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;;MAE1B,OAAO,GAAG;UACN,QAAQ,CAAC,GAAG,CAAC;UACb,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KACzB,CAAC;;IAEF,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;MACtC,OAAO,IAAI,EAAE,CAAC;KACf;;IAED,OAAO,GAAG,CAAC,SAAS,CAAC;;IAErB,IAAI,CAAC,OAAO,EAAE,EAAA,OAAO,IAAI,EAAE,CAAC,EAAA;;IAE5B,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;MAC7B,CAAC,SAAS,KAAK,EAAE;QACf,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;UACzB,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,CAAC;SAC5B;QACD,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,GAAG,EAAE,IAAI,EAAE;UAC3D,IAAI,GAAG,EAAE,EAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAA;UAC1B,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE;YACvC,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,CAAC;WAC5B;UACD,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;UAClB,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;UACrB,EAAE,OAAO,IAAI,IAAI,EAAE,CAAC;SACrB,CAAC,CAAC;OACJ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;KACf;;IAED,OAAO;GACR;EACD,IAAI;IACF,IAAI,GAAG,EAAE,EAAA,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,EAAA;IAC/C,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;GAC/C,CAAC,OAAO,CAAC,EAAE;IACV,CAAC,CAAC,OAAO,IAAI,yDAAyD,CAAC;IACvE,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE;MACnC,OAAO,+BAA+B;UAClC,MAAM,CAAC,CAAC,CAAC,OAAO,GAAG,EAAE,EAAE,IAAI,CAAC;UAC5B,QAAQ,CAAC;KACd;IACD,MAAM,CAAC,CAAC;GACT;CACF;;;;;;AAMD,MAAM,CAAC,OAAO;AACd,MAAM,CAAC,UAAU,GAAG,SAAS,GAAG,EAAE;EAChC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;EAC5B,OAAO,MAAM,CAAC;CACf,CAAC;;AAEF,MAAM,CAAC,QAAQ,GAAG;EAChB,GAAG,EAAE,IAAI;EACT,MAAM,EAAE,IAAI;EACZ,MAAM,EAAE,KAAK;EACb,QAAQ,EAAE,KAAK;EACf,QAAQ,EAAE,KAAK;EACf,SAAS,EAAE,IAAI;EACf,MAAM,EAAE,IAAI;EACZ,UAAU,EAAE,KAAK;EACjB,MAAM,EAAE,KAAK;EACb,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,OAAO;EACnB,WAAW,EAAE,KAAK;EAClB,YAAY,EAAE,EAAE;EAChB,QAAQ,EAAE,IAAI,QAAQ;EACtB,KAAK,EAAE,KAAK;CACb,CAAC;;;;;;AAMF,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;;AAE7B,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;;AAE3B,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;;AAEzB,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;AACjC,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC;;AAExC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC;;AAEtB,IAAI,QAAa,KAAK,WAAW,IAAI,QAAc,KAAK,QAAQ,EAAE;EAChE,cAAc,GAAG,MAAM,CAAC;CACzB,MAAM,IAAI,OAAOiC,SAAM,KAAK,UAAU,IAAIA,SAAM,CAAC,GAAG,EAAE;EACrDA,SAAM,CAAC,WAAW,EAAE,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC;CACvC,MAAM;EACL,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;CACtB;;CAEA,EAAE,IAAI,CAAC,WAAW;EACjB,OAAO,IAAI,KAAK,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,GAAGC,cAAM,CAAC,CAAC;CAClE,EAAE,CAAC,CAAC;;;ACnwCL,MAAM,CAAC,UAAU,CAAC;EAChB,GAAG,EAAE,IAAI;EACT,WAAW,EAAE,IAAI;CAClB,CAAC,CAAC;;AAEH,eAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjC7C,IAAI,gBAAgB,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;EACzE,gBAAgB,CAAC,OAAO,CAAC,UAAA,EAAE,EAAC;IAC1BA,IAAI,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC;;IAE3B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACpCA,IAAI,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IAC9D,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;;IAEzB,EAAE,CAAC,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;GAChC,CAAC,CAAC;CACJ,CAAA;;;;;;;ACdD,IAAI,KAAK,GAAG,CAAC,OAAO,MAAM,KAAK,WAAW;GACvC,MAAM;;EAEP,CAAC,OAAO,iBAAiB,KAAK,WAAW,IAAI,IAAI,YAAY,iBAAiB;IAC5E,IAAI;IACJ,EAAE;EACJ,CAAC;;;;;;;;AAQH,IAAI,KAAK,GAAG,CAAC,UAAU;;;AAGvB,IAAI,IAAI,GAAG,0BAA0B,CAAC;AACtC,IAAI,QAAQ,GAAG,CAAC,CAAC;;AAEjB,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG;CACrB,IAAI,EAAE;EACL,MAAM,EAAE,UAAU,MAAM,EAAE;GACzB,IAAI,MAAM,YAAY,KAAK,EAAE;IAC5B,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3E,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,OAAO,EAAE;IAC3C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM;IACN,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACnF;GACD;;EAED,IAAI,EAAE,UAAU,CAAC,EAAE;GAClB,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;GACtE;;EAED,KAAK,EAAE,UAAU,GAAG,EAAE;GACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;IACjB,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1D;GACD,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC;GACnB;;;EAGD,KAAK,EAAE,UAAU,CAAC,EAAE;GACnB,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;GAE1B,QAAQ,IAAI;IACX,KAAK,QAAQ;KACZ,IAAI,KAAK,GAAG,EAAE,CAAC;;KAEf,KAAK,IAAI,GAAG,IAAI,CAAC,EAAE;MAClB,IAAI,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;OAC1B,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;OAClC;MACD;;KAED,OAAO,KAAK,CAAC;;IAEd,KAAK,OAAO;;KAEX,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAChE;;GAED,OAAO,CAAC,CAAC;GACT;EACD;;CAED,SAAS,EAAE;EACV,MAAM,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE;GAC5B,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;;GAEzC,KAAK,IAAI,GAAG,IAAI,KAAK,EAAE;IACtB,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB;;GAED,OAAO,IAAI,CAAC;GACZ;;;;;;;;;;;EAWD,YAAY,EAAE,UAAU,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;GACrD,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC;GAC3B,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;;GAE3B,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE;IAC1B,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;;IAEtB,KAAK,IAAI,QAAQ,IAAI,MAAM,EAAE;KAC5B,IAAI,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;MACpC,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;MACrC;KACD;;IAED,OAAO,OAAO,CAAC;IACf;;GAED,IAAI,GAAG,GAAG,EAAE,CAAC;;GAEb,KAAK,IAAI,KAAK,IAAI,OAAO,EAAE;;IAE1B,IAAI,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;;KAElC,IAAI,KAAK,IAAI,MAAM,EAAE;;MAEpB,KAAK,IAAI,QAAQ,IAAI,MAAM,EAAE;;OAE5B,IAAI,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;QACpC,GAAG,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjC;OACD;MACD;;KAED,GAAG,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;KAC5B;IACD;;;GAGD,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,GAAG,EAAE,KAAK,EAAE;IACjD,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,MAAM,EAAE;KAC5C,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;KAChB;IACD,CAAC,CAAC;;GAEH,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;GAC1B;;;EAGD,GAAG,EAAE,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;GACzC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;GACxB,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE;IAChB,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;KACxB,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC;;KAErC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;MACnE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;MACnC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;MAC/C;UACI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;MACvE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;MACnC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;MAC5C;KACD;IACD;GACD;EACD;CACD,OAAO,EAAE,EAAE;;CAEX,YAAY,EAAE,SAAS,KAAK,EAAE,QAAQ,EAAE;EACvC,IAAI,GAAG,GAAG;GACT,QAAQ,EAAE,QAAQ;GAClB,QAAQ,EAAE,kGAAkG;GAC5G,CAAC;;EAEF,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;;EAExC,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;;EAEvE,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG;GAChD,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,KAAK,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;GAC1D;EACD;;CAED,gBAAgB,EAAE,SAAS,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE;;EAEpD,IAAI,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;;EAExC,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;GAC9C,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;GAC3B;;EAED,IAAI,MAAM,EAAE;GACX,QAAQ,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;GACpE,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;GAChC;;;EAGD,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,YAAY,GAAG,QAAQ,CAAC;;;EAGvG,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;;EAE5B,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;GACjC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,YAAY,GAAG,QAAQ,CAAC;GACrG;;EAED,IAAI,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC;;EAE/B,IAAI,GAAG,GAAG;GACT,OAAO,EAAE,OAAO;GAChB,QAAQ,EAAE,QAAQ;GAClB,OAAO,EAAE,OAAO;GAChB,IAAI,EAAE,IAAI;GACV,CAAC;;EAEF,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;;EAExC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;GAC9B,IAAI,GAAG,CAAC,IAAI,EAAE;IACb,GAAG,CAAC,OAAO,CAAC,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC;IACnC;GACD,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;GAC7B,OAAO;GACP;;EAED,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;;EAErC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;GAC1B,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;;GAEpC,MAAM,CAAC,SAAS,GAAG,SAAS,GAAG,EAAE;IAChC,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,IAAI,CAAC;;IAE/B,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;;IAElC,GAAG,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG,CAAC,eAAe,CAAC;;IAE5C,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAC7B,CAAC;;GAEF,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;IACjC,QAAQ,EAAE,GAAG,CAAC,QAAQ;IACtB,IAAI,EAAE,GAAG,CAAC,IAAI;IACd,cAAc,EAAE,IAAI;IACpB,CAAC,CAAC,CAAC;GACJ;OACI;GACJ,GAAG,CAAC,eAAe,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;;GAEvE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;;GAElC,GAAG,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG,CAAC,eAAe,CAAC;;GAE5C,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;GAEnC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;GACpC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;GAC7B;EACD;;CAED,SAAS,EAAE,UAAU,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE;EAC7C,IAAI,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;EACvC,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;EACxD;;CAED,QAAQ,EAAE,SAAS,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE;EAC3C,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;;EAEpB,IAAI,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;;EAEpB,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;;EAExB,IAAI,IAAI,EAAE;GACT,KAAK,IAAI,KAAK,IAAI,IAAI,EAAE;IACvB,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B;;GAED,OAAO,OAAO,CAAC,IAAI,CAAC;GACpB;;EAED,SAAS,EAAE,KAAK,IAAI,KAAK,IAAI,OAAO,EAAE;GACrC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;IACrD,SAAS;IACT;;GAED,IAAI,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;GAC9B,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,OAAO,IAAI,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC;;GAEvE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;IACzC,IAAI,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC;KACxB,MAAM,GAAG,OAAO,CAAC,MAAM;KACvB,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU;KACjC,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM;KACzB,gBAAgB,GAAG,CAAC;KACpB,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;;IAEvB,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE;;KAEtC,IAAI,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;KAC5D,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,GAAG,GAAG,CAAC,CAAC;KAC9D;;IAED,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC;;;IAGrC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;;KAErE,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;;KAEpB,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;;MAEhC,MAAM,SAAS,CAAC;MAChB;;KAED,IAAI,GAAG,YAAY,KAAK,EAAE;MACzB,SAAS;MACT;;KAED,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;;KAEtB,IAAI,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;SACzB,MAAM,GAAG,CAAC,CAAC;;;KAGf,IAAI,CAAC,KAAK,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;MAC/C,OAAO,CAAC,SAAS,GAAG,GAAG,CAAC;MACxB,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;MAC3B,IAAI,CAAC,KAAK,EAAE;OACX,MAAM;OACN;;MAED,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,IAAI,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;UACvD,EAAE,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM;UAClC,CAAC,GAAG,CAAC;UACL,CAAC,GAAG,GAAG,CAAC;;MAEZ,KAAK,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE;OACrD,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;;OAEtB,IAAI,IAAI,IAAI,CAAC,EAAE;QACd,EAAE,CAAC,CAAC;QACJ,GAAG,GAAG,CAAC,CAAC;QACR;OACD;;;;;;MAMD,IAAI,MAAM,CAAC,CAAC,CAAC,YAAY,KAAK,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE;OACvD,SAAS;OACT;;;MAGD,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;MACf,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;MACzB,KAAK,CAAC,KAAK,IAAI,GAAG,CAAC;MACnB;;KAED,IAAI,CAAC,KAAK,EAAE;MACX,SAAS;MACT;;KAED,GAAG,UAAU,EAAE;MACd,gBAAgB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;MACnC;;KAED,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,GAAG,gBAAgB;SACrC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;SACxC,EAAE,GAAG,IAAI,GAAG,KAAK,CAAC,MAAM;SACxB,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;SAC3B,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;;KAE1B,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;;KAEvB,IAAI,MAAM,EAAE;MACX,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;MAClB;;KAED,IAAI,OAAO,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;;KAEhG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;KAEnB,IAAI,KAAK,EAAE;MACV,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;MACjB;;KAED,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;KAC3C;IACD;GACD;;EAED,OAAO,MAAM,CAAC;EACd;;CAED,KAAK,EAAE;EACN,GAAG,EAAE,EAAE;;EAEP,GAAG,EAAE,UAAU,IAAI,EAAE,QAAQ,EAAE;GAC9B,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;;GAExB,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;;GAEhC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;GAC3B;;EAED,GAAG,EAAE,UAAU,IAAI,EAAE,GAAG,EAAE;GACzB,IAAI,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;;GAElC,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;IACpC,OAAO;IACP;;GAED,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG;IACnD,QAAQ,CAAC,GAAG,CAAC,CAAC;IACd;GACD;EACD;CACD,CAAC;;AAEF,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,SAAS,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE;CACxE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;CACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;CACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;;CAEnB,IAAI,CAAC,MAAM,GAAG,CAAC,UAAU,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;CAC1C,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;CACvB,CAAC;;AAEF,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE;CAC/C,IAAI,OAAO,CAAC,IAAI,QAAQ,EAAE;EACzB,OAAO,CAAC,CAAC;EACT;;CAED,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE;EAC/B,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,OAAO,EAAE;GAC9B,OAAO,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;GAC7C,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;EACZ;;CAED,IAAI,GAAG,GAAG;EACT,IAAI,EAAE,CAAC,CAAC,IAAI;EACZ,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC;EACrD,GAAG,EAAE,MAAM;EACX,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC;EAC1B,UAAU,EAAE,EAAE;EACd,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,MAAM;EACd,CAAC;;CAEF,IAAI,GAAG,CAAC,IAAI,IAAI,SAAS,EAAE;EAC1B,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC;EACtC;;CAED,IAAI,CAAC,CAAC,KAAK,EAAE;EACZ,IAAI,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,OAAO,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;EACrE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;EACjD;;CAED,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;;CAEzB,IAAI,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE;EAC/D,OAAO,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,GAAG,CAAC;EAChF,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;CAEb,OAAO,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,UAAU,GAAG,GAAG,GAAG,UAAU,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;;CAElJ,CAAC;;AAEF,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;CACpB,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;;EAE5B,OAAO,KAAK,CAAC,KAAK,CAAC;EACnB;;CAED,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,GAAG,EAAE;EAC/C,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;MAC9B,IAAI,GAAG,OAAO,CAAC,QAAQ;MACvB,IAAI,GAAG,OAAO,CAAC,IAAI;MACnB,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;;EAE5C,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;EAC9D,IAAI,cAAc,EAAE;GACnB,KAAK,CAAC,KAAK,EAAE,CAAC;GACd;EACD,EAAE,KAAK,CAAC,CAAC;;CAEV,OAAO,KAAK,CAAC,KAAK,CAAC;CACnB;;;AAGD,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;;AAEpG,IAAI,MAAM,EAAE;CACX,CAAC,CAAC,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC;;CAExB,IAAI,QAAQ,CAAC,gBAAgB,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE;EACrE,GAAG,QAAQ,CAAC,UAAU,KAAK,SAAS,EAAE;GACrC,IAAI,MAAM,CAAC,qBAAqB,EAAE;IACjC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IAC7C,MAAM;IACN,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IACtC;GACD;OACI;GACJ,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC;GAC9D;EACD;CACD;;AAED,OAAO,KAAK,CAAC,KAAK,CAAC;;CAElB,GAAG,CAAC;;AAEL,IAAI,QAAa,KAAK,WAAW,IAAI,MAAM,CAAC,OAAO,EAAE;CACpD,cAAc,GAAG,KAAK,CAAC;CACvB;;;AAGD,IAAI,OAAO6C,cAAM,KAAK,WAAW,EAAE;CAClCA,cAAM,CAAC,KAAK,GAAG,KAAK,CAAC;CACrB;;;;;;;AAOD,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG;CACxB,SAAS,EAAE,iBAAiB;CAC5B,QAAQ,EAAE,gBAAgB;CAC1B,SAAS,EAAE,qBAAqB;CAChC,OAAO,EAAE,yBAAyB;CAClC,KAAK,EAAE;EACN,OAAO,EAAE,uGAAuG;EAChH,MAAM,EAAE;GACP,KAAK,EAAE;IACN,OAAO,EAAE,iBAAiB;IAC1B,MAAM,EAAE;KACP,aAAa,EAAE,OAAO;KACtB,WAAW,EAAE,cAAc;KAC3B;IACD;GACD,YAAY,EAAE;IACb,OAAO,EAAE,iCAAiC;IAC1C,MAAM,EAAE;KACP,aAAa,EAAE,QAAQ;KACvB;IACD;GACD,aAAa,EAAE,MAAM;GACrB,WAAW,EAAE;IACZ,OAAO,EAAE,WAAW;IACpB,MAAM,EAAE;KACP,WAAW,EAAE,cAAc;KAC3B;IACD;;GAED;EACD;CACD,QAAQ,EAAE,mBAAmB;CAC7B,CAAC;;;AAGF,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,EAAE;;CAErC,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;EAC1B,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;EAC5D;CACD,CAAC,CAAC;;AAEH,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;AAC7C,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;AAC9C,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;AAChD,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;;;;;;;AAO7C,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG;CACrB,SAAS,EAAE,kBAAkB;CAC7B,QAAQ,EAAE;EACT,OAAO,EAAE,2BAA2B;EACpC,MAAM,EAAE;GACP,MAAM,EAAE,SAAS;;GAEjB;EACD;CACD,KAAK,EAAE,8DAA8D;CACrE,UAAU,EAAE,8BAA8B;CAC1C,QAAQ,EAAE;EACT,OAAO,EAAE,6CAA6C;EACtD,MAAM,EAAE,IAAI;EACZ;CACD,UAAU,EAAE,wBAAwB;CACpC,WAAW,EAAE,iBAAiB;CAC9B,UAAU,EAAE,mBAAmB;CAC/B,aAAa,EAAE,UAAU;CACzB,CAAC;;AAEF,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;;AAElF,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE;CAC3B,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,EAAE;EAC7C,OAAO,EAAE;GACR,OAAO,EAAE,yCAAyC;GAClD,UAAU,EAAE,IAAI;GAChB,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG;GAC3B,KAAK,EAAE,cAAc;GACrB;EACD,CAAC,CAAC;;CAEH,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE;EACpD,YAAY,EAAE;GACb,OAAO,EAAE,sBAAsB;GAC/B,MAAM,EAAE;IACP,WAAW,EAAE;KACZ,OAAO,EAAE,YAAY;KACrB,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM;KACzC;IACD,aAAa,EAAE,uBAAuB;IACtC,YAAY,EAAE;KACb,OAAO,EAAE,KAAK;KACd,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG;KAC3B;IACD;GACD,KAAK,EAAE,cAAc;GACrB;EACD,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;CAC/B;;;;;;AAMD,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG;CACvB,SAAS,EAAE;EACV;GACC,OAAO,EAAE,2BAA2B;GACpC,UAAU,EAAE,IAAI;GAChB;EACD;GACC,OAAO,EAAE,kBAAkB;GAC3B,UAAU,EAAE,IAAI;GAChB;EACD;CACD,QAAQ,EAAE;EACT,OAAO,EAAE,8CAA8C;EACvD,MAAM,EAAE,IAAI;EACZ;CACD,YAAY,EAAE;EACb,OAAO,EAAE,sGAAsG;EAC/G,UAAU,EAAE,IAAI;EAChB,MAAM,EAAE;GACP,WAAW,EAAE,SAAS;GACtB;EACD;CACD,SAAS,EAAE,0GAA0G;CACrH,SAAS,EAAE,kBAAkB;CAC7B,UAAU,EAAE,mBAAmB;CAC/B,QAAQ,EAAE,+CAA+C;CACzD,UAAU,EAAE,yDAAyD;CACrE,aAAa,EAAE,eAAe;CAC9B,CAAC;;;;;;;AAOF,KAAK,CAAC,SAAS,CAAC,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE;CAC5D,SAAS,EAAE,2TAA2T;CACtU,QAAQ,EAAE,8EAA8E;;CAExF,UAAU,EAAE,uDAAuD;CACnE,UAAU,EAAE,kEAAkE;CAC9E,CAAC,CAAC;;AAEH,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,SAAS,EAAE;CACrD,OAAO,EAAE;EACR,OAAO,EAAE,8EAA8E;EACvF,UAAU,EAAE,IAAI;EAChB,MAAM,EAAE,IAAI;EACZ;CACD,CAAC,CAAC;;AAEH,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,QAAQ,EAAE;CACpD,iBAAiB,EAAE;EAClB,OAAO,EAAE,uBAAuB;EAChC,MAAM,EAAE,IAAI;EACZ,MAAM,EAAE;GACP,eAAe,EAAE;IAChB,OAAO,EAAE,aAAa;IACtB,MAAM,EAAE;KACP,2BAA2B,EAAE;MAC5B,OAAO,EAAE,WAAW;MACpB,KAAK,EAAE,aAAa;MACpB;KACD,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,UAAU;KAChC;IACD;GACD,QAAQ,EAAE,SAAS;GACnB;EACD;CACD,CAAC,CAAC;;AAEH,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE;CAC3B,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,EAAE;EAC7C,QAAQ,EAAE;GACT,OAAO,EAAE,2CAA2C;GACpD,UAAU,EAAE,IAAI;GAChB,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,UAAU;GAClC,KAAK,EAAE,qBAAqB;GAC5B;EACD,CAAC,CAAC;CACH;;AAED,KAAK,CAAC,SAAS,CAAC,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC;;;;;;AAMhD,CAAC,YAAY;CACZ,IAAI,OAAO,IAAI,KAAK,WAAW,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;EAC5F,OAAO;EACP;;CAED,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,WAAW;;EAErC,IAAI,UAAU,GAAG;GAChB,IAAI,EAAE,YAAY;GAClB,IAAI,EAAE,QAAQ;GACd,IAAI,EAAE,MAAM;GACZ,KAAK,EAAE,YAAY;GACnB,MAAM,EAAE,YAAY;GACpB,IAAI,EAAE,MAAM;GACZ,KAAK,EAAE,OAAO;GACd,GAAG,EAAE,GAAG;GACR,KAAK,EAAE,OAAO;GACd,CAAC;;EAEF,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE;GAC3B,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,GAAG,EAAE;IAC7F,IAAI,GAAG,GAAG,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;;IAEvC,IAAI,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC;IAC3B,IAAI,IAAI,GAAG,gCAAgC,CAAC;IAC5C,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;KAC9C,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;KAC3B;;IAED,IAAI,MAAM,EAAE;KACX,QAAQ,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KACpD;;IAED,IAAI,CAAC,QAAQ,EAAE;KACd,IAAI,SAAS,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KACrD,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;KAC9C;;IAED,IAAI,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC1C,IAAI,CAAC,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;;IAExC,GAAG,CAAC,WAAW,GAAG,EAAE,CAAC;;IAErB,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;;IAE9B,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;;IAEtB,IAAI,GAAG,GAAG,IAAI,cAAc,EAAE,CAAC;;IAE/B,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;;IAE3B,GAAG,CAAC,kBAAkB,GAAG,YAAY;KACpC,IAAI,GAAG,CAAC,UAAU,IAAI,CAAC,EAAE;;MAExB,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,YAAY,EAAE;OACzC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,YAAY,CAAC;;OAEpC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;OAC7B;WACI,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE;OAC3B,IAAI,CAAC,WAAW,GAAG,UAAU,GAAG,GAAG,CAAC,MAAM,GAAG,wBAAwB,GAAG,GAAG,CAAC,UAAU,CAAC;OACvF;WACI;OACJ,IAAI,CAAC,WAAW,GAAG,0CAA0C,CAAC;OAC9D;MACD;KACD,CAAC;;IAEF,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC,CAAC;GACH;;EAED,CAAC;;CAEF,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;;CAExE,GAAG,CAAC;;;ACxxBL,aAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjC7C,IAAI,YAAY,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;EAClE,YAAY,CAAC,OAAO,CAAC,UAAA,EAAE,EAAC;IACtBA,IAAI,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC;IAC7B,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC;IAClBA,IAAI,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IAC3CA,IAAI,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE;;MAEnC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;MACpCA,IAAI,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;MAChC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;MAC9D,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;MACzBA,IAAI,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;MACjC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;MACjB,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;KACnB,MAAM;MACL,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;KACnB;IACDA,IAAI,WAAW,GAAG,OAAO,CAAC;IAC1B,IAAI8C,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;MAC7B,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,QAAQ,CAAC,CAAC;MAChD,WAAW,GAAGA,KAAK,CAAC,SAAS,CAAC,OAAO,EAAEA,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;KACnE;IACD,CAAC,CAAC,SAAS,GAAG,WAAW,CAAC;GAC3B,CAAC,CAAC;CACJ,CAAA;;AC5BD,cAAe,SAAS,GAAG,EAAE,IAAI,EAAE;;EAEjC,IAAI,SAAS,GAAG,GAAG,CAAC,gBAAgB;IAClC,GAAG,CAAC,IAAI;IACR,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS;GACrC,CAAC;EACF,OAAO,SAAS,CAAC,QAAQ,EAAE,EAAE;IAC3B,IAAI,CAAC,GAAG,SAAS,CAAC,WAAW;QACzB,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC;IACvB,IAAI,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE;MACzB,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;MACpB,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;MACzB,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC;KACpB;GACF;CACF,CAAA;;AAED,SAAS,UAAU,CAAC,IAAI,EAAE;EACxB,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;EAChC,IAAI,MAAM,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;EAC1L,OAAO,MAAM;SACN,MAAM,CAAC,QAAQ,KAAK,QAAQ;SAC5B,MAAM,CAAC,QAAQ,KAAK,OAAO;SAC3B,MAAM,CAAC,QAAQ,KAAK,MAAM;SAC1B,MAAM,CAAC,QAAQ,KAAK,KAAK;SACzB,MAAM,CAAC,QAAQ,KAAK,MAAM;SAC1B,MAAM,CAAC,QAAQ,KAAK,WAAW;SAC/B,MAAM,CAAC,QAAQ,KAAK,WAAW;SAC/B,MAAM,CAAC,QAAQ,KAAK,SAAS;SAC7B,MAAM,CAAC,QAAQ,KAAK,SAAS;SAC7B,MAAM,CAAC,QAAQ,KAAK,iBAAiB;SACrC,MAAM,CAAC,QAAQ,KAAK,WAAW;SAC/B,MAAM,CAAC,QAAQ,KAAK,CAAC;SACrB,CAAC,MAAM,CAAC;CAChB;;;;;;;;;;;;;AAaD,SAAS,WAAW,CAAC,IAAI,CAAC;;;EAGxB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;EACrC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;;;EAGtD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;;;EAGnC,IAAI,IAAI,GAAG,QAAQ,CAAC;EACpB,IAAI,sBAAsB,GAAG,WAAW,CAAC;EACzC,IAAI,oBAAoB,GAAG,mBAAmB,CAAC;;EAE/C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC;EACzD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC;;EAEvD,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,MAAM,CAAC,IAAI,EAAE;;EAEpB,IAAI,GAAG,IAAI;KACR,OAAO,CAAC,4BAA4B,EAAE,YAAY,CAAC;KACnD,OAAO,CAAC,2CAA2C,EAAE,YAAY,CAAC;KAClE,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC;KAChC,OAAO,CAAC,cAAc,EAAE,YAAY,CAAC;KACrC,OAAO,CAAC,mBAAmB,EAAE,YAAY,CAAC;KAC1C,OAAO,CAAC,oCAAoC,EAAE,YAAY,CAAC;KAC3D,OAAO,CAAC,gEAAgE,EAAE,YAAY,CAAC;KACvF,OAAO,CAAC,+FAA+F,EAAE,UAAU,CAAC;KACpH,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC;KACzB,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC;KAC5B,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;;;EAG3B,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;EACjC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;EACjC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;EACjC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;;EAEjC,OAAO,IAAI,CAAC;CACb,AAED,AAMC,AAAC;;;;AC/FF,eAAe,SAAS,GAAG,EAAE;EAC3B9C,IAAI,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;EACpC,CAAC,CAAC,WAAW,GAAG+C,MAAI,CAAC;EACrB,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;CAC1C,CAAA;;ACND;;AAEA,uBAAe,SAAS,IAAI,EAAE;;;EAG5B,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC;;EAE9B,IAAI,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;EACpD,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC;MAClG,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;MACrC,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,eAAe,CAAC;;EAElG,IAAI,QAAQ;IACV,CAAC,SAAS,GAAG;;MAEX,EAAE,KAAK,EAAE;QACP,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE,sCAAsC;QAC7C,WAAW,EAAE,2CAA2C;QACxD,oBAAoB,EAAE,wFAAwF;OAC/G,CAAC;;MAEF,EAAE,IAAI,EAAE;QACN,CAAC,YAAY,EAAE,QAAQ,CAAC;QACxB,CAAC,SAAS,EAAE,eAAe,CAAC;QAC5B,CAAC,SAAS,EAAE;UACV,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;UAC5C,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAC7C,CAAC;QACF,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EACzC,CAAC;;MAEF,CAAC,IAAI,EAAE;QACL,CAAC,OAAO,EAAE;;UAER,CAAC,gBAAgB,EAAE;YACjB,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YAC3D,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YAC1F,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YACzB,CAAC,QAAQ,EAAE;cACT,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;cACvB,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAC7B,CAAC,EACH,CAAC;;UAEF,CAAC,aAAa,EAAE;YACd,CAAC,gBAAgB,EAAE;cACjB,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;cAC1B,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,EAC3B,CAAC;YACF,CAAC,cAAc,EAAE;cACf,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EACtB,CAAC;YACF,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EACpB,CAAC;;UAEF,CAAC,eAAe,EAAE;YAChB,CAAC,MAAM,EAAE;cACP,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EACpB,CAAC;YACF,EAAE,YAAY;cACZ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,MAAM,EAAE,GAAG,EAAE,SAAG;gBAChC,CAAC,WAAW,EAAE;kBACZ,EAAE,KAAK,EAAE;oBACP,gBAAgB,EAAE,QAAQ;oBAC1B,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,OAAO,GAAG,YAAY;mBAC7C,CAAC;kBACF,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC;kBAC9B,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC;kBAC1B,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC;;iBAElC,CAAC;eACH,GAAA,CAAC;aACH;YACD,CAAC,gBAAgB,EAAE;gBACf,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;gBAC1B,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACrB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;aAC7B,CAAC;YACF,EAAE,cAAc,EAAE;cAChB,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC;aACxB,CAAC;YACF,CAAC,QAAQ,EAAE;cACT,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;;cAEf,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,EACrB,CAAC;YACF,CAAC,aAAa;cACZ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAA,GAAG,EAAC,SACnB,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAA,CAAC;aAC/C;;WAEF,CAAC,EAEH,CAAC,EACH,CAAC,EACH,CAAC,CAAC;;EAEL,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC;CACtB,CAAA;;AAED,SAAS,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC;EAC7B,IAAI,GAAG,IAAI,SAAS,EAAE,EAAA,OAAO,EAAE,CAAC,EAAA;EAChC,IAAI,IAAI,GAAG,EAAE,CAAC;EACd,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;EAC/B,IAAI,OAAO,IAAI,GAAG;IAChB,EAAA,IAAI,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAA;EACxC,IAAI,QAAQ,IAAI,GAAG;IACjB,EAAA,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAA;EACzE,IAAI,SAAS,IAAI,GAAG;IAClB,EAAA,IAAI,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAA;EAC1C,IAAI,WAAW,IAAI,GAAG;IACpB,EAAA,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAA;EAC3C,IAAI,QAAQ,IAAI,GAAG;IACjB,EAAA,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAA;EAClC,IAAI,OAAO,IAAI,GAAG;IAChB,EAAA,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAA;EAChC,IAAI,KAAK,IAAI,GAAG;IACd,EAAA,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAA;EAC5B,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;CACxB;;AAED,SAAS,GAAG,CAAC,GAAG,EAAE;;EAEhB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,EAAA,OAAO,GAAG,CAAC,EAAA;EACxC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,EAAA,OAAO,EAAE,CAAC,GAAG,CAAC,EAAA;EAC3C/C,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC5B,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,EAAA,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,EAAA;EACvEA,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;EACnB,IAAI,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;EAC7B,IAAI,IAAI,GAAG,EAAE,CAAC;EACd,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9B,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,KAAK,IAAI,CAAC,KAAK,YAAY,EAAE;MAC3B,IAAI,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;MAC1B,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MACnC,IAAI,OAAO,IAAI,QAAQ,EAAE;QACvB,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;OACrB,MAAM;;QAEL,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;OACnB;KACF;GACF,MAAM;IACL,OAAO,GAAG,YAAY,CAAC;GACxB;EACD,IAAI,OAAO,IAAI,SAAS,CAAC;IACvB,OAAO,GAAG,WAAW,CAAA;GACtB;;EAEDA,IAAI,WAAW,GAAG,EAAE,CAAC;EACrB,KAAK,IAAI,CAAC,IAAI,IAAI,EAAE;IAClB,WAAW,IAAI,GAAE,GAAE,CAAC,QAAI,IAAE,IAAI,CAAC,CAAC,CAAC,CAAA,OAAG,CAAA;GACrC;;;EAGD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACzB,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,UAAA,CAAC,EAAC,SAAG,IAAI,GAAG,CAAC,GAAA,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC/C,IAAI,MAAM,GAAG,GAAE,GAAE,IAAI,GAAG,WAAW,QAAI,GAAE,OAAO,SAAK,GAAE,IAAI,MAAE,CAAE;GAChE,MAAM;IACL,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;IACvB,IAAI,MAAM,GAAG,GAAE,GAAE,IAAI,GAAG,WAAW,MAAE,GAAE,OAAO,OAAG,GAAE,IAAI,MAAE,CAAE;GAC5D;EACD,OAAO,MAAM,CAAC;CACf;;;;ACpKD0C,IAAMC,MAAI,GAAG,8tCAoET,GAAE,IAAI,4MASV,CAAA;;AAEA,aAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjC3C,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;EACxC,GAAG,EAAE,EAAE;IACL,EAAE,CAAC,SAAS,GAAG2C,MAAI,CAAC;GACrB,MAAM;IACL3C,IAAI,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAC5C,MAAM,CAAC,SAAS,GAAG2C,MAAI,CAAC;IACxB3C,IAAI,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;GACtC;CACF,CAAA;;ACzFDA,IAAI2C,MAAI,GAAG,2pBAiCP,GAAE,IAAI,2FAIV,CAAE;;AAEF,aAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjC3C,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;EACxC,GAAG,EAAE,EAAE;IACL,EAAE,CAAC,SAAS,GAAG2C,MAAI,CAAC;GACrB,MAAM;IACL3C,IAAI,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAC5C,MAAM,CAAC,SAAS,GAAG2C,MAAI,CAAC;IACxB3C,IAAI,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;GACvB;CACF,CAAA;;AChCD,SAAS,iBAAiB,CAAC,GAAG,EAAE;EAC9B,IAAI,CAAC,GAAG,CAAC,CAAC;EACV,MAAM,CAAC,GAAG,CAAC,CAAC;CACb;;AAED,SAAS,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE;EAC/B,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACvB,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACxB,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACtB,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EAChB,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EAClB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACpB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACpB+C,MAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EAChB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACpB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACpB,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACnB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;CACrB;;;AAGD,GAAG,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE;EAC5B/C,IAAI,IAAI,GAAG,EAAE,CAAC;EACd,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;EACnC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,UAAC,KAAK,EAAE;IAC3D,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;;IAEpC,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE;MACpF,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;KAC/B;IACD,gBAAgB,CAAC,IAAI,CAAC,CAAC;GACxB,CAAC,CAAC;CACJ;;;AAGD,SAASgD,QAAM,CAAC,GAAG,EAAE,IAAI,EAAE;EACzB,iBAAiB,CAAC,GAAG,CAAC,CAAC;EACvB,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;;EAExBhD,IAAI,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,8CAA8C,CAAC,CAAC;EAC1E,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,AAAC;CAC5C;;;AAGD,SAAS,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE;EAC7B,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EAClB,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;CACnB,AAED,AACA,AACA,AAA8C;;;;;;;;"} \ No newline at end of file +{"version":3,"file":null,"sources":["../components/html.js","../components/styles.js","../node_modules/js-yaml/lib/js-yaml/common.js","../node_modules/js-yaml/lib/js-yaml/exception.js","../node_modules/js-yaml/lib/js-yaml/mark.js","../node_modules/js-yaml/lib/js-yaml/type.js","../node_modules/js-yaml/lib/js-yaml/schema.js","../node_modules/js-yaml/lib/js-yaml/type/str.js","../node_modules/js-yaml/lib/js-yaml/type/seq.js","../node_modules/js-yaml/lib/js-yaml/type/map.js","../node_modules/js-yaml/lib/js-yaml/schema/failsafe.js","../node_modules/js-yaml/lib/js-yaml/type/null.js","../node_modules/js-yaml/lib/js-yaml/type/bool.js","../node_modules/js-yaml/lib/js-yaml/type/int.js","../node_modules/js-yaml/lib/js-yaml/type/float.js","../node_modules/js-yaml/lib/js-yaml/schema/json.js","../node_modules/js-yaml/lib/js-yaml/schema/core.js","../node_modules/js-yaml/lib/js-yaml/type/timestamp.js","../node_modules/js-yaml/lib/js-yaml/type/merge.js","../node_modules/js-yaml/lib/js-yaml/type/binary.js","../node_modules/js-yaml/lib/js-yaml/type/omap.js","../node_modules/js-yaml/lib/js-yaml/type/pairs.js","../node_modules/js-yaml/lib/js-yaml/type/set.js","../node_modules/js-yaml/lib/js-yaml/schema/default_safe.js","../node_modules/js-yaml/lib/js-yaml/type/js/undefined.js","../node_modules/js-yaml/lib/js-yaml/type/js/regexp.js","../node_modules/js-yaml/lib/js-yaml/type/js/function.js","../node_modules/js-yaml/lib/js-yaml/schema/default_full.js","../node_modules/js-yaml/lib/js-yaml/loader.js","../node_modules/js-yaml/lib/js-yaml/dumper.js","../node_modules/js-yaml/lib/js-yaml.js","../node_modules/js-yaml/index.js","../components/front-matter.js","../node_modules/bibtex-parse-js/bibtexParse.js","../components/bibliography.js","../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/utcMinute.js","../node_modules/d3-time/src/utcHour.js","../node_modules/d3-time/src/utcDay.js","../node_modules/d3-time/src/utcWeek.js","../node_modules/d3-time/src/utcMonth.js","../node_modules/d3-time/src/utcYear.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-time-format/src/isoFormat.js","../node_modules/d3-time-format/src/isoParse.js","../components/expand-data.js","../../node_modules/escape-html/index.js","../components/meta.js","../components/banner.js","../node_modules/mustache/mustache.js","../components/byline.js","../components/appendix.js","../components/citation.js","../components/footnote.js","../node_modules/marked/lib/marked.js","../components/markdown.js","../node_modules/prismjs/prism.js","../components/code.js","../components/typeset.js","../components/hover-box-include.js","../components/generate-crossref.js","../components/header.js","../components/footer.js","../index.js"],"sourcesContent":["export default function(dom) {\n if (!dom.querySelector(\"html\").getAttribute(\"lang\")) {\n dom.querySelector(\"html\").setAttribute(\"lang\", \"en\")\n }\n\n let head = dom.querySelector(\"head\");\n\n if (!dom.querySelector(\"meta[charset]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"charset\", \"utf-8\");\n head.appendChild(meta);\n }\n if (!dom.querySelector(\"meta[name=viewport]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"name\", \"viewport\");\n meta.setAttribute(\"content\", \"width=device-width, initial-scale=1\");\n head.appendChild(meta);\n }\n}\n","import base from './styles-base.css';\nimport layout from './styles-layout.css';\nimport article from './styles-article.css';\nimport code from './styles-code.css';\nimport print from './styles-print.css';\n\nexport default function(dom) {\n let s = dom.createElement(\"style\");\n s.textContent = base + layout + article + code + print;\n dom.querySelector(\"head\").appendChild(s);\n}\n","'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n var result = this.name + ': ';\n\n result += this.reason || '(unknown reason)';\n\n if (!compact && this.mark) {\n result += ' ' + this.mark.toString();\n }\n\n return result;\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n\nvar common = require('./common');\n\n\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\n\n\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head, start, tail, end, snippet;\n\n if (!this.buffer) return null;\n\n indent = indent || 4;\n maxLength = maxLength || 75;\n\n head = '';\n start = this.position;\n\n while (start > 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n\n tail = '';\n end = this.position;\n\n while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n\n snippet = this.buffer.slice(start, end);\n\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' +\n common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\n\nMark.prototype.toString = function toString(compact) {\n var snippet, where = '';\n\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n if (!compact) {\n snippet = this.getSnippet();\n\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n\n return where;\n};\n\n\nmodule.exports = Mark;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name, result) {\n var exclude = [];\n\n schema.include.forEach(function (includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n\n schema[name].forEach(function (currentType) {\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n exclude.push(previousIndex);\n }\n });\n\n result.push(currentType);\n });\n\n return result.filter(function (type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {}\n }, index, length;\n\n function collectType(type) {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n\n this.implicit.forEach(function (type) {\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n });\n\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\n\nSchema.DEFAULT = null;\n\n\nSchema.create = function createSchema() {\n var schemas, types;\n\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n\n if (!schemas.every(function (schema) { return schema instanceof Schema; })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n\n if (!types.every(function (type) { return type instanceof Type; })) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n return new Schema({\n include: schemas,\n explicit: types\n });\n};\n\n\nmodule.exports = Schema;\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 8\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 10 (except 0) or base 60\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch === ':') break;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n if (!hasDigits) return false;\n\n // if !base60 - done;\n if (ch !== ':') return true;\n\n // base60 almost not used, no needs to optimize\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch, base, digits = [];\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value, 16);\n return sign * parseInt(value, 8);\n }\n\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseInt(v, 10));\n });\n\n value = 0;\n base = 1;\n\n digits.forEach(function (d) {\n value += (d * base);\n base *= 60;\n });\n\n return sign * value;\n\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (object) { return '0b' + object.toString(2); },\n octal: function (object) { return '0' + object.toString(8); },\n decimal: function (object) { return object.toString(10); },\n hexadecimal: function (object) { return '0x' + object.toString(16).toUpperCase(); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n '^(?:[-+]?(?:[0-9][0-9_]*)\\\\.[0-9_]*(?:[eE][-+][0-9]+)?' +\n '|\\\\.[0-9_]+(?:[eE][-+][0-9]+)?' +\n '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' +\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data)) return false;\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign, base, digits;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n\n } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n\n value = 0.0;\n base = 1;\n\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n\n return sign * value;\n\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./failsafe')\n ],\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./json')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\nvar NodeBuffer;\n\ntry {\n // A trick for browserified version, to not include `Buffer` shim\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n // Wrap into Buffer for NodeJS and leave Array for browser\n if (NodeBuffer) return new NodeBuffer(result);\n\n return result;\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./core')\n ],\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n return true;\n}\n\nfunction constructJavascriptUndefined() {\n /*eslint-disable no-undefined*/\n return undefined;\n}\n\nfunction representJavascriptUndefined() {\n return '';\n}\n\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n if (data === null) return false;\n if (data.length === 0) return false;\n\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // if regexp starts with '/' it can have modifiers and must be properly closed\n // `/foo/gim` - modifiers tail can be maximum 3 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n\n if (modifiers.length > 3) return false;\n // if expression starts with /, is should be properly terminated\n if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n }\n\n return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // `/foo/gim` - tail can be maximum 4 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n\n return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object /*, style*/) {\n var result = '/' + object.source + '/';\n\n if (object.global) result += 'g';\n if (object.multiline) result += 'm';\n if (object.ignoreCase) result += 'i';\n\n return result;\n}\n\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n","'use strict';\n\nvar esprima;\n\n// Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n// If not found - try to fallback to window.esprima. If not\n// found too - then fail to parse.\n//\ntry {\n // workaround to exclude package from browserify list.\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n /*global window */\n if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n if (data === null) return false;\n\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true });\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction constructJavascriptFunction(data) {\n /*jslint evil:true*/\n\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true }),\n params = [],\n body;\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n throw new Error('Failed to resolve function');\n }\n\n ast.body[0].expression.params.forEach(function (param) {\n params.push(param.name);\n });\n\n body = ast.body[0].expression.body.range;\n\n // Esprima's ranges include the first '{' and the last '}' characters on\n // function expressions. So cut them out.\n /*eslint-disable no-new-func*/\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n}\n\nfunction representJavascriptFunction(object /*, style*/) {\n return object.toString();\n}\n\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n","// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [\n require('./default_safe')\n ],\n explicit: [\n require('../type/js/undefined'),\n require('../type/js/regexp'),\n require('../type/js/function')\n ]\n});\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00);\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n return new YAMLException(\n message,\n new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length;\n _position < _length;\n _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode) {\n var index, quantity;\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n throwError(state, 'duplicated mapping key');\n }\n _result[keyNode] = valueNode;\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else {\n break; // Reading is done. Go to the epilogue.\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if (state.lineIndent > nodeIndent && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!state.anchorMap.hasOwnProperty(alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag !== null && state.tag !== '!') {\n if (state.tag === '?') {\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length;\n typeIndex < typeQuantity;\n typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only assigned to plain scalars. So, it isn't\n // needed to check for 'kind' conformity.\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = {};\n state.anchorMap = {};\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n var documents = loadDocuments(input, options), index, length;\n\n for (index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nfunction safeLoadAll(input, output, options) {\n loadAll(input, output, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nfunction safeLoad(input, options) {\n return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// Simplified test for values allowed after the first character in plain style.\nfunction isPlainSafe(c) {\n // Uses a subset of nb-char - c-flow-indicator - \":\" - \"#\"\n // where nb-char ::= c-printable - b-char - c-byte-order-mark.\n return isPrintable(c) && c !== 0xFEFF\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // - \":\" - \"#\"\n && c !== CHAR_COLON\n && c !== CHAR_SHARP;\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n return isPrintable(c) && c !== 0xFEFF\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {\n var i;\n var char;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(string.charCodeAt(0))\n && !isWhitespace(string.charCodeAt(string.length - 1));\n\n if (singleLineOnly) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n return plain && !testAmbiguousType(string)\n ? STYLE_PLAIN : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (string[0] === ' ' && indentPerLevel > 9) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey) {\n state.dump = (function () {\n if (string.length === 0) {\n return \"''\";\n }\n if (!state.noCompatMode &&\n DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n return \"'\" + string + \"'\";\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = (string[0] === ' ') ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char;\n var escapeSeq;\n\n for (var i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n result += !escapeSeq && isPrintable(char)\n ? string[i]\n : escapeSeq || encodeHex(char);\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level, object[index], false, false)) {\n if (index !== 0) _result += ', ';\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || index !== 0) {\n _result += generateNextLine(state, level);\n }\n _result += '- ' + state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (index !== 0) pairBuffer += ', ';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + ': ';\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || index !== 0) {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n state.tag = explicit ? type.tag : '?';\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n writeBlockSequence(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey);\n }\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n state.dump = '!<' + state.tag + '> ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n if (writeNode(state, 0, input, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nfunction safeDump(input, options) {\n return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n","'use strict';\n\n\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\n\n\nfunction deprecated(name) {\n return function () {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\n\n\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\n\n// Deprecated schema names from JS-YAML 2.0.x\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\n\n// Deprecated functions from JS-YAML 1.x.x\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","'use strict';\n\n\nvar yaml = require('./lib/js-yaml.js');\n\n\nmodule.exports = yaml;\n","import ymlParse from \"js-yaml\";\n\nexport default function(dom, data) {\n let localData = {};\n let el = dom.querySelector('script[type=\"text/front-matter\"]');\n if (el) {\n let text = el.textContent;\n localData = ymlParse.safeLoad(text);\n }\n\n data.title = localData.title ? localData.title : \"Untitled\";\n data.description = localData.description ? localData.description : \"No description.\";\n\n data.authors = localData.authors ? localData.authors : [];\n\n data.authors = data.authors.map((author, i) =>{\n let a = {};\n let name = Object.keys(author)[0];\n if ((typeof author) === \"string\") {\n name = author;\n } else {\n a.personalURL = author[name];\n }\n let names = name.split(\" \");\n a.name = name;\n a.firstName = names.slice(0, names.length - 1).join(\" \");\n a.lastName = names[names.length -1];\n if(localData.affiliations[i]) {\n let affiliation = Object.keys(localData.affiliations[i])[0];\n if ((typeof localData.affiliations[i]) === \"string\") {\n affiliation = localData.affiliations[i]\n } else {\n a.affiliationURL = localData.affiliations[i][affiliation];\n }\n a.affiliation = affiliation;\n }\n return a;\n });\n \n\n}\n","/* start bibtexParse 0.0.22 */\n\n//Original work by Henrik Muehe (c) 2010\n//\n//CommonJS port by Mikola Lysenko 2013\n//\n//Port to Browser lib by ORCID / RCPETERS\n//\n//Issues:\n//no comment handling within strings\n//no string concatenation\n//no variable values yet\n//Grammar implemented here:\n//bibtex -> (string | preamble | comment | entry)*;\n//string -> '@STRING' '{' key_equals_value '}';\n//preamble -> '@PREAMBLE' '{' value '}';\n//comment -> '@COMMENT' '{' value '}';\n//entry -> '@' key '{' key ',' key_value_list '}';\n//key_value_list -> key_equals_value (',' key_equals_value)*;\n//key_equals_value -> key '=' value;\n//value -> value_quotes | value_braces | key;\n//value_quotes -> '\"' .*? '\"'; // not quite\n//value_braces -> '{' .*? '\"'; // not quite\n(function(exports) {\n\n function BibtexParser() {\n \n this.months = [\"jan\", \"feb\", \"mar\", \"apr\", \"may\", \"jun\", \"jul\", \"aug\", \"sep\", \"oct\", \"nov\", \"dec\"];\n this.notKey = [',','{','}',' ','='];\n this.pos = 0;\n this.input = \"\";\n this.entries = new Array();\n\n this.currentEntry = \"\";\n\n this.setInput = function(t) {\n this.input = t;\n };\n\n this.getEntries = function() {\n return this.entries;\n };\n\n this.isWhitespace = function(s) {\n return (s == ' ' || s == '\\r' || s == '\\t' || s == '\\n');\n };\n\n this.match = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n this.pos += s.length;\n } else {\n throw \"Token mismatch, expected \" + s + \", found \"\n + this.input.substring(this.pos);\n };\n this.skipWhitespace(canCommentOut);\n };\n\n this.tryMatch = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n return true;\n } else {\n return false;\n };\n this.skipWhitespace(canCommentOut);\n };\n\n /* when search for a match all text can be ignored, not just white space */\n this.matchAt = function() {\n while (this.input.length > this.pos && this.input[this.pos] != '@') {\n this.pos++;\n };\n\n if (this.input[this.pos] == '@') {\n return true;\n };\n return false;\n };\n\n this.skipWhitespace = function(canCommentOut) {\n while (this.isWhitespace(this.input[this.pos])) {\n this.pos++;\n };\n if (this.input[this.pos] == \"%\" && canCommentOut == true) {\n while (this.input[this.pos] != \"\\n\") {\n this.pos++;\n };\n this.skipWhitespace(canCommentOut);\n };\n };\n\n this.value_braces = function() {\n var bracecount = 0;\n this.match(\"{\", false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '}') {\n if (bracecount > 0) {\n bracecount--;\n } else {\n var end = this.pos;\n this.match(\"}\", false);\n return this.input.substring(start, end);\n };\n } else if (this.input[this.pos] == '{') {\n bracecount++;\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value\";\n };\n };\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.value_comment = function() {\n var str = '';\n var brcktCnt = 0;\n while (!(this.tryMatch(\"}\", false) && brcktCnt == 0)) {\n str = str + this.input[this.pos];\n if (this.input[this.pos] == '{')\n brcktCnt++;\n if (this.input[this.pos] == '}')\n brcktCnt--;\n if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n this.pos++;\n };\n return str;\n };\n\n this.value_quotes = function() {\n this.match('\"', false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '\"') {\n var end = this.pos;\n this.match('\"', false);\n return this.input.substring(start, end);\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n }\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.single_value = function() {\n var start = this.pos;\n if (this.tryMatch(\"{\")) {\n return this.value_braces();\n } else if (this.tryMatch('\"')) {\n return this.value_quotes();\n } else {\n var k = this.key();\n if (k.match(\"^[0-9]+$\"))\n return k;\n else if (this.months.indexOf(k.toLowerCase()) >= 0)\n return k.toLowerCase();\n else\n throw \"Value expected:\" + this.input.substring(start) + ' for key: ' + k;\n \n };\n };\n\n this.value = function() {\n var values = [];\n values.push(this.single_value());\n while (this.tryMatch(\"#\")) {\n this.match(\"#\");\n values.push(this.single_value());\n };\n return values.join(\"\");\n };\n\n this.key = function() {\n var start = this.pos;\n while (true) {\n if (this.pos >= this.input.length) {\n throw \"Runaway key\";\n };\n // а-яА-Я is Cyrillic\n //console.log(this.input[this.pos]);\n if (this.notKey.indexOf(this.input[this.pos]) >= 0) {\n return this.input.substring(start, this.pos);\n } else {\n this.pos++;\n \n };\n };\n };\n\n this.key_equals_value = function() {\n var key = this.key();\n if (this.tryMatch(\"=\")) {\n this.match(\"=\");\n var val = this.value();\n return [ key, val ];\n } else {\n throw \"... = value expected, equals sign missing:\"\n + this.input.substring(this.pos);\n };\n };\n\n this.key_value_list = function() {\n var kv = this.key_equals_value();\n this.currentEntry['entryTags'] = {};\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n while (this.tryMatch(\",\")) {\n this.match(\",\");\n // fixes problems with commas at the end of a list\n if (this.tryMatch(\"}\")) {\n break;\n }\n ;\n kv = this.key_equals_value();\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n };\n };\n\n this.entry_body = function(d) {\n this.currentEntry = {};\n this.currentEntry['citationKey'] = this.key();\n this.currentEntry['entryType'] = d.substring(1);\n this.match(\",\");\n this.key_value_list();\n this.entries.push(this.currentEntry);\n };\n\n this.directive = function() {\n this.match(\"@\");\n return \"@\" + this.key();\n };\n\n this.preamble = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'PREAMBLE';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.comment = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'COMMENT';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.entry = function(d) {\n this.entry_body(d);\n };\n\n this.bibtex = function() {\n while (this.matchAt()) {\n var d = this.directive();\n this.match(\"{\");\n if (d == \"@STRING\") {\n this.string();\n } else if (d == \"@PREAMBLE\") {\n this.preamble();\n } else if (d == \"@COMMENT\") {\n this.comment();\n } else {\n this.entry(d);\n }\n this.match(\"}\");\n };\n };\n };\n \n exports.toJSON = function(bibtex) {\n var b = new BibtexParser();\n b.setInput(bibtex);\n b.bibtex();\n return b.entries;\n };\n\n /* added during hackathon don't hate on me */\n exports.toBibtex = function(json) {\n var out = '';\n for ( var i in json) {\n out += \"@\" + json[i].entryType;\n out += '{';\n if (json[i].citationKey)\n out += json[i].citationKey + ', ';\n if (json[i].entry)\n out += json[i].entry ;\n if (json[i].entryTags) {\n var tags = '';\n for (var jdx in json[i].entryTags) {\n if (tags.length != 0)\n tags += ', ';\n tags += jdx + '= {' + json[i].entryTags[jdx] + '}';\n }\n out += tags;\n }\n out += '}\\n\\n';\n }\n return out;\n \n };\n\n})(typeof exports === 'undefined' ? this['bibtexParse'] = {} : exports);\n\n/* end bibtexParse */\n","import bibtexParse from \"bibtex-parse-js\";\n\nexport default function(dom, data) {\n let el = dom.querySelector('script[type=\"text/bibliography\"]');\n let citations = [];\n let bibliography = {};\n //TODO If we don't have a local element, make a request for the document.\n if (el) {\n let rawBib = el.textContent;\n let parsed = bibtexParse.toJSON(rawBib);\n if(parsed) {\n parsed.forEach(e => {\n for (var k in e.entryTags){\n var val = e.entryTags[k];\n val = val.replace(/[\\t\\n ]+/g, \" \");\n val = val.replace(/{\\\\[\"^`\\.'acu~Hvs]( )?([a-zA-Z])}/g,\n (full, x, char) => char);\n val = val.replace(/{\\\\([a-zA-Z])}/g,\n (full, char) => char);\n e.entryTags[k] = val;\n }\n bibliography[e.citationKey] = e.entryTags;\n bibliography[e.citationKey].type = e.entryType;\n });\n }\n\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach(el => {\n let key = el.getAttribute(\"key\");\n if (key) {\n let citationKeys = key.split(\",\");\n citationKeys.forEach(key => {\n if (citations.indexOf(key) == -1){\n citations.push(key);\n if (!(key in bibliography)){\n console.warn(\"No bibliography entry found for: \" + key);\n }\n }\n });\n }\n });\n }\n data.bibliography = bibliography;\n data.citations = citations;\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(new Date(+start)); while (offseti(start, step), floori(start), start < stop)\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) while (--step >= 0) while (offseti(date, 1), !test(date)) {} // eslint-disable-line no-empty\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(Math.floor(date / durationSecond) * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(Math.floor(date / durationMinute) * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute} from \"./duration\";\n\nvar hour = interval(function(date) {\n var offset = date.getTimezoneOffset() * durationMinute % durationHour;\n if (offset < 0) offset += durationHour;\n date.setTime(Math.floor((+date - offset) / durationHour) * durationHour + offset);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval\";\nimport {durationWeek} from \"./duration\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {timeDay, timeSunday, timeMonday, timeYear, utcDay, utcSunday, utcMonday, utcYear} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"S\": formatSeconds,\n \"U\": formatWeekNumberSunday,\n \"w\": formatWeekdayNumber,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"S\": formatUTCSeconds,\n \"U\": formatUTCWeekNumberSunday,\n \"w\": formatUTCWeekdayNumber,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"S\": parseSeconds,\n \"U\": parseWeekNumberSunday,\n \"w\": parseWeekdayNumber,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0);\n if (i != string.length) return null;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n var day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?:\\:?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekdayNumber(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekdayNumber(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {timeFormat} from \"d3-time-format\";\n\nexport default function(dom, data) {\n\n data.authors = data.authors || [];\n\n // paths\n data.url = \"http://distill.pub/\" + data.distillPath;\n data.githubUrl = \"https://github.com/\" + data.githubPath;\n\n // Homepage\n //data.homepage = !post.noHomepage;\n data.journal = data.journal || {};\n\n // Dates\n if (data.publishedDate){//} && data.journal) {\n data.volume = data.publishedDate.getFullYear() - 2015;\n data.issue = data.publishedDate.getMonth() + 1;\n }\n\n data.publishedDate = data.publishedDate ? data.publishedDate : new Date(\"Invalid\");\n data.updatedDate = data.updatedDate ? data.updatedDate : new Date(\"Invalid\");\n\n data.publishedDateRFC\n let RFC = timeFormat(\"%a, %d %b %Y %H:%M:%S %Z\");\n let months = [\"Jan\", \"Feb\", \"March\", \"April\", \"May\", \"June\", \"July\", \"Aug\", \"Sept\", \"Oct\", \"Nov\", \"Dec\"];\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n data.publishedDateRFC = RFC(data.publishedDate);\n data.publishedYear = data.publishedDate.getFullYear();\n data.publishedMonth = months[data.publishedDate.getMonth()];\n data.publishedDay = data.publishedDate.getDate();\n data.publishedMonthPadded = zeroPad(data.publishedDate.getMonth() + 1);\n data.publishedDayPadded = zeroPad(data.publishedDate.getDate());\n data.updatedDateRFC = RFC(data.updatedDate);\n\n if (data.authors.length > 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \", et al.\";\n } else if (data.authors.length === 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \" & \" + data.authors[1].lastName;\n } else if (data.authors.length === 1) {\n data.concatenatedAuthors = data.authors[0].lastName\n }\n\n data.bibtexAuthors = data.authors.map(function(author){\n return author.lastName + \", \" + author.firstName;\n }).join(\" and \");\n\n data.slug = data.authors.length ? data.authors[0].lastName.toLowerCase() + data.publishedYear + data.title.split(\" \")[0].toLowerCase() : \"Untitled\";\n\n}\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","import favicon from './distill-favicon.base64';\nimport escape from 'escape-html';\n\nexport default function(dom, data) {\n let head = dom.querySelector(\"head\");\n let appendHead = html => appendHtml(head, html);\n\n function meta(name, content, force) {\n if (content || force)\n appendHead(` \\n`);\n }\n\n appendHead(`\n \n \n \n \n ${data.title}\n `);\n\n appendHead(`\n \n \n \n `);\n data.authors.forEach((a) => {\n appendHtml(head, `\n `)\n });\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n // if this is a proprer article, generate Google Scholar meta data\n if (data.doiSuffix){\n appendHead(`\n \\n`);\n\n meta(\"citation_title\", data.title);\n //meta(\"citation_fulltext_html_url\", data.url);\n meta(\"citation_volume\", data.volume);\n meta(\"citation_issue\", data.issue);\n meta(\"citation_firstpage\", data.doiSuffix? `e${data.doiSuffix}` : undefined);\n meta(\"citation_doi\", data.doi);\n\n let journal = data.journal || {};\n meta(\"citation_journal_title\", journal.full_title || journal.title);\n meta(\"citation_journal_abbrev\", journal.abbrev_title);\n meta(\"citation_issn\", journal.issn);\n meta(\"citation_publisher\", journal.publisher);\n meta(\"citation_fulltext_world_readable\", \"\", true);\n\n if (data.publishedDate){\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n meta(\"citation_online_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n // Should we do something different here?\n meta(\"citation_publication_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n }\n\n (data.authors || []).forEach((a) => {\n meta(\"citation_author\", `${a.lastName}, ${a.firstName}`);\n meta(\"citation_author_institution\", a.affiliation);\n });\n\n if (data.citations) {\n data.citations.forEach(key => {\n let d = data.bibliography[key];\n if(!d) {\n console.warn(\"No bibliography data fround for \" + key)\n } else {\n meta(\"citation_reference\", citation_meta_content(data.bibliography[key]) )\n };\n });\n }\n }\n}\n\nfunction appendHtml(el, html) {\n el.innerHTML += html;\n}\n\nfunction citation_meta_content(ref){\n // Special test for arxiv\n var content = `citation_title=${ref.title};`;\n \n let name_strings = ref.author.split(\" and \").forEach(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1].trim();\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n content += `citation_author=${firsts} ${last};`;\n });\n \n if (\"year\" in ref) {\n content += `citation_publication_date=${ref.year};`;\n }\n \n var arxiv_id_search = /https?:\\/\\/arxiv\\.org\\/pdf\\/([0-9]*\\.[0-9]*)\\.pdf/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /https?:\\/\\/arxiv\\.org\\/abs\\/([0-9]*\\.[0-9]*)/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /arXiv preprint arXiv:([0-9]*\\.[0-9]*)/.exec(ref.journal);\n if (arxiv_id_search && arxiv_id_search[1]){\n content += `citation_arxiv_id=${arxiv_id_search[1]};`;\n return content;\n }\n if (\"journal\" in ref){\n content += `citation_journal_title=${ref.journal};`;\n }\n if (\"volume\" in ref) {\n content += `citation_volume=${ref.volume};`;\n }\n if (\"issue\" in ref || \"number\" in ref){\n content += `citation_number=${ref.issue || ref.number};`;\n }\n /*content += `citation_first_page=${};`;\n content += `citation_publication_date=${};`;*/\n return content;\n}\n","const html = `\n\n
    This article is a draft, awaiting review for publication in Distill
    \n`;\n\nexport default function(dom, data) {\n let banner = dom.createElement(\"dt-banner\");\n banner.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(banner, b.firstChild);\n banner.addEventListener(\"click\", function() {\n banner.style.display = \"none\";\n });\n}\n","/*!\n * mustache.js - Logic-less {{mustache}} templates with JavaScript\n * http://github.com/janl/mustache.js\n */\n\n/*global define: false Mustache: true*/\n\n(function defineMustache (global, factory) {\n if (typeof exports === 'object' && exports && typeof exports.nodeName !== 'string') {\n factory(exports); // CommonJS\n } else if (typeof define === 'function' && define.amd) {\n define(['exports'], factory); // AMD\n } else {\n global.Mustache = {};\n factory(global.Mustache); // script, wsh, asp\n }\n}(this, function mustacheFactory (mustache) {\n\n var objectToString = Object.prototype.toString;\n var isArray = Array.isArray || function isArrayPolyfill (object) {\n return objectToString.call(object) === '[object Array]';\n };\n\n function isFunction (object) {\n return typeof object === 'function';\n }\n\n /**\n * More correct typeof string handling array\n * which normally returns typeof 'object'\n */\n function typeStr (obj) {\n return isArray(obj) ? 'array' : typeof obj;\n }\n\n function escapeRegExp (string) {\n return string.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n }\n\n /**\n * Null safe way of checking whether or not an object,\n * including its prototype, has a given property\n */\n function hasProperty (obj, propName) {\n return obj != null && typeof obj === 'object' && (propName in obj);\n }\n\n // Workaround for https://issues.apache.org/jira/browse/COUCHDB-577\n // See https://github.com/janl/mustache.js/issues/189\n var regExpTest = RegExp.prototype.test;\n function testRegExp (re, string) {\n return regExpTest.call(re, string);\n }\n\n var nonSpaceRe = /\\S/;\n function isWhitespace (string) {\n return !testRegExp(nonSpaceRe, string);\n }\n\n var entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n function escapeHtml (string) {\n return String(string).replace(/[&<>\"'`=\\/]/g, function fromEntityMap (s) {\n return entityMap[s];\n });\n }\n\n var whiteRe = /\\s*/;\n var spaceRe = /\\s+/;\n var equalsRe = /\\s*=/;\n var curlyRe = /\\s*\\}/;\n var tagRe = /#|\\^|\\/|>|\\{|&|=|!/;\n\n /**\n * Breaks up the given `template` string into a tree of tokens. If the `tags`\n * argument is given here it must be an array with two string values: the\n * opening and closing tags used in the template (e.g. [ \"<%\", \"%>\" ]). Of\n * course, the default is to use mustaches (i.e. mustache.tags).\n *\n * A token is an array with at least 4 elements. The first element is the\n * mustache symbol that was used inside the tag, e.g. \"#\" or \"&\". If the tag\n * did not contain a symbol (i.e. {{myValue}}) this element is \"name\". For\n * all text that appears outside a symbol this element is \"text\".\n *\n * The second element of a token is its \"value\". For mustache tags this is\n * whatever else was inside the tag besides the opening symbol. For text tokens\n * this is the text itself.\n *\n * The third and fourth elements of the token are the start and end indices,\n * respectively, of the token in the original template.\n *\n * Tokens that are the root node of a subtree contain two more elements: 1) an\n * array of tokens in the subtree and 2) the index in the original template at\n * which the closing tag for that section begins.\n */\n function parseTemplate (template, tags) {\n if (!template)\n return [];\n\n var sections = []; // Stack to hold section tokens\n var tokens = []; // Buffer to hold the tokens\n var spaces = []; // Indices of whitespace tokens on the current line\n var hasTag = false; // Is there a {{tag}} on the current line?\n var nonSpace = false; // Is there a non-space char on the current line?\n\n // Strips all whitespace tokens array for the current line\n // if there was a {{#tag}} on it and otherwise only space.\n function stripSpace () {\n if (hasTag && !nonSpace) {\n while (spaces.length)\n delete tokens[spaces.pop()];\n } else {\n spaces = [];\n }\n\n hasTag = false;\n nonSpace = false;\n }\n\n var openingTagRe, closingTagRe, closingCurlyRe;\n function compileTags (tagsToCompile) {\n if (typeof tagsToCompile === 'string')\n tagsToCompile = tagsToCompile.split(spaceRe, 2);\n\n if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)\n throw new Error('Invalid tags: ' + tagsToCompile);\n\n openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\\\s*');\n closingTagRe = new RegExp('\\\\s*' + escapeRegExp(tagsToCompile[1]));\n closingCurlyRe = new RegExp('\\\\s*' + escapeRegExp('}' + tagsToCompile[1]));\n }\n\n compileTags(tags || mustache.tags);\n\n var scanner = new Scanner(template);\n\n var start, type, value, chr, token, openSection;\n while (!scanner.eos()) {\n start = scanner.pos;\n\n // Match any text between tags.\n value = scanner.scanUntil(openingTagRe);\n\n if (value) {\n for (var i = 0, valueLength = value.length; i < valueLength; ++i) {\n chr = value.charAt(i);\n\n if (isWhitespace(chr)) {\n spaces.push(tokens.length);\n } else {\n nonSpace = true;\n }\n\n tokens.push([ 'text', chr, start, start + 1 ]);\n start += 1;\n\n // Check for whitespace on the current line.\n if (chr === '\\n')\n stripSpace();\n }\n }\n\n // Match the opening tag.\n if (!scanner.scan(openingTagRe))\n break;\n\n hasTag = true;\n\n // Get the tag type.\n type = scanner.scan(tagRe) || 'name';\n scanner.scan(whiteRe);\n\n // Get the tag value.\n if (type === '=') {\n value = scanner.scanUntil(equalsRe);\n scanner.scan(equalsRe);\n scanner.scanUntil(closingTagRe);\n } else if (type === '{') {\n value = scanner.scanUntil(closingCurlyRe);\n scanner.scan(curlyRe);\n scanner.scanUntil(closingTagRe);\n type = '&';\n } else {\n value = scanner.scanUntil(closingTagRe);\n }\n\n // Match the closing tag.\n if (!scanner.scan(closingTagRe))\n throw new Error('Unclosed tag at ' + scanner.pos);\n\n token = [ type, value, start, scanner.pos ];\n tokens.push(token);\n\n if (type === '#' || type === '^') {\n sections.push(token);\n } else if (type === '/') {\n // Check section nesting.\n openSection = sections.pop();\n\n if (!openSection)\n throw new Error('Unopened section \"' + value + '\" at ' + start);\n\n if (openSection[1] !== value)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + start);\n } else if (type === 'name' || type === '{' || type === '&') {\n nonSpace = true;\n } else if (type === '=') {\n // Set the tags for the next time around.\n compileTags(value);\n }\n }\n\n // Make sure there are no open sections when we're done.\n openSection = sections.pop();\n\n if (openSection)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + scanner.pos);\n\n return nestTokens(squashTokens(tokens));\n }\n\n /**\n * Combines the values of consecutive text tokens in the given `tokens` array\n * to a single token.\n */\n function squashTokens (tokens) {\n var squashedTokens = [];\n\n var token, lastToken;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n if (token) {\n if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {\n lastToken[1] += token[1];\n lastToken[3] = token[3];\n } else {\n squashedTokens.push(token);\n lastToken = token;\n }\n }\n }\n\n return squashedTokens;\n }\n\n /**\n * Forms the given array of `tokens` into a nested tree structure where\n * tokens that represent a section have two additional items: 1) an array of\n * all tokens that appear in that section and 2) the index in the original\n * template that represents the end of that section.\n */\n function nestTokens (tokens) {\n var nestedTokens = [];\n var collector = nestedTokens;\n var sections = [];\n\n var token, section;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n switch (token[0]) {\n case '#':\n case '^':\n collector.push(token);\n sections.push(token);\n collector = token[4] = [];\n break;\n case '/':\n section = sections.pop();\n section[5] = token[2];\n collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;\n break;\n default:\n collector.push(token);\n }\n }\n\n return nestedTokens;\n }\n\n /**\n * A simple string scanner that is used by the template parser to find\n * tokens in template strings.\n */\n function Scanner (string) {\n this.string = string;\n this.tail = string;\n this.pos = 0;\n }\n\n /**\n * Returns `true` if the tail is empty (end of string).\n */\n Scanner.prototype.eos = function eos () {\n return this.tail === '';\n };\n\n /**\n * Tries to match the given regular expression at the current position.\n * Returns the matched text if it can match, the empty string otherwise.\n */\n Scanner.prototype.scan = function scan (re) {\n var match = this.tail.match(re);\n\n if (!match || match.index !== 0)\n return '';\n\n var string = match[0];\n\n this.tail = this.tail.substring(string.length);\n this.pos += string.length;\n\n return string;\n };\n\n /**\n * Skips all text until the given regular expression can be matched. Returns\n * the skipped string, which is the entire tail if no match can be made.\n */\n Scanner.prototype.scanUntil = function scanUntil (re) {\n var index = this.tail.search(re), match;\n\n switch (index) {\n case -1:\n match = this.tail;\n this.tail = '';\n break;\n case 0:\n match = '';\n break;\n default:\n match = this.tail.substring(0, index);\n this.tail = this.tail.substring(index);\n }\n\n this.pos += match.length;\n\n return match;\n };\n\n /**\n * Represents a rendering context by wrapping a view object and\n * maintaining a reference to the parent context.\n */\n function Context (view, parentContext) {\n this.view = view;\n this.cache = { '.': this.view };\n this.parent = parentContext;\n }\n\n /**\n * Creates a new context using the given view with this context\n * as the parent.\n */\n Context.prototype.push = function push (view) {\n return new Context(view, this);\n };\n\n /**\n * Returns the value of the given name in this context, traversing\n * up the context hierarchy if the value is absent in this context's view.\n */\n Context.prototype.lookup = function lookup (name) {\n var cache = this.cache;\n\n var value;\n if (cache.hasOwnProperty(name)) {\n value = cache[name];\n } else {\n var context = this, names, index, lookupHit = false;\n\n while (context) {\n if (name.indexOf('.') > 0) {\n value = context.view;\n names = name.split('.');\n index = 0;\n\n /**\n * Using the dot notion path in `name`, we descend through the\n * nested objects.\n *\n * To be certain that the lookup has been successful, we have to\n * check if the last object in the path actually has the property\n * we are looking for. We store the result in `lookupHit`.\n *\n * This is specially necessary for when the value has been set to\n * `undefined` and we want to avoid looking up parent contexts.\n **/\n while (value != null && index < names.length) {\n if (index === names.length - 1)\n lookupHit = hasProperty(value, names[index]);\n\n value = value[names[index++]];\n }\n } else {\n value = context.view[name];\n lookupHit = hasProperty(context.view, name);\n }\n\n if (lookupHit)\n break;\n\n context = context.parent;\n }\n\n cache[name] = value;\n }\n\n if (isFunction(value))\n value = value.call(this.view);\n\n return value;\n };\n\n /**\n * A Writer knows how to take a stream of tokens and render them to a\n * string, given a context. It also maintains a cache of templates to\n * avoid the need to parse the same template twice.\n */\n function Writer () {\n this.cache = {};\n }\n\n /**\n * Clears all cached templates in this writer.\n */\n Writer.prototype.clearCache = function clearCache () {\n this.cache = {};\n };\n\n /**\n * Parses and caches the given `template` and returns the array of tokens\n * that is generated from the parse.\n */\n Writer.prototype.parse = function parse (template, tags) {\n var cache = this.cache;\n var tokens = cache[template];\n\n if (tokens == null)\n tokens = cache[template] = parseTemplate(template, tags);\n\n return tokens;\n };\n\n /**\n * High-level method that is used to render the given `template` with\n * the given `view`.\n *\n * The optional `partials` argument may be an object that contains the\n * names and templates of partials that are used in the template. It may\n * also be a function that is used to load partial templates on the fly\n * that takes a single argument: the name of the partial.\n */\n Writer.prototype.render = function render (template, view, partials) {\n var tokens = this.parse(template);\n var context = (view instanceof Context) ? view : new Context(view);\n return this.renderTokens(tokens, context, partials, template);\n };\n\n /**\n * Low-level method that renders the given array of `tokens` using\n * the given `context` and `partials`.\n *\n * Note: The `originalTemplate` is only ever used to extract the portion\n * of the original template that was contained in a higher-order section.\n * If the template doesn't use higher-order sections, this argument may\n * be omitted.\n */\n Writer.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate) {\n var buffer = '';\n\n var token, symbol, value;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n value = undefined;\n token = tokens[i];\n symbol = token[0];\n\n if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate);\n else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate);\n else if (symbol === '>') value = this.renderPartial(token, context, partials, originalTemplate);\n else if (symbol === '&') value = this.unescapedValue(token, context);\n else if (symbol === 'name') value = this.escapedValue(token, context);\n else if (symbol === 'text') value = this.rawValue(token);\n\n if (value !== undefined)\n buffer += value;\n }\n\n return buffer;\n };\n\n Writer.prototype.renderSection = function renderSection (token, context, partials, originalTemplate) {\n var self = this;\n var buffer = '';\n var value = context.lookup(token[1]);\n\n // This function is used to render an arbitrary template\n // in the current context by higher-order sections.\n function subRender (template) {\n return self.render(template, context, partials);\n }\n\n if (!value) return;\n\n if (isArray(value)) {\n for (var j = 0, valueLength = value.length; j < valueLength; ++j) {\n buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate);\n }\n } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {\n buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate);\n } else if (isFunction(value)) {\n if (typeof originalTemplate !== 'string')\n throw new Error('Cannot use higher-order sections without the original template');\n\n // Extract the portion of the original template that the section contains.\n value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);\n\n if (value != null)\n buffer += value;\n } else {\n buffer += this.renderTokens(token[4], context, partials, originalTemplate);\n }\n return buffer;\n };\n\n Writer.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate) {\n var value = context.lookup(token[1]);\n\n // Use JavaScript's definition of falsy. Include empty arrays.\n // See https://github.com/janl/mustache.js/issues/186\n if (!value || (isArray(value) && value.length === 0))\n return this.renderTokens(token[4], context, partials, originalTemplate);\n };\n\n Writer.prototype.renderPartial = function renderPartial (token, context, partials) {\n if (!partials) return;\n\n var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\n if (value != null)\n return this.renderTokens(this.parse(value), context, partials, value);\n };\n\n Writer.prototype.unescapedValue = function unescapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return value;\n };\n\n Writer.prototype.escapedValue = function escapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return mustache.escape(value);\n };\n\n Writer.prototype.rawValue = function rawValue (token) {\n return token[1];\n };\n\n mustache.name = 'mustache.js';\n mustache.version = '2.3.0';\n mustache.tags = [ '{{', '}}' ];\n\n // All high-level mustache.* functions use this writer.\n var defaultWriter = new Writer();\n\n /**\n * Clears all cached templates in the default writer.\n */\n mustache.clearCache = function clearCache () {\n return defaultWriter.clearCache();\n };\n\n /**\n * Parses and caches the given template in the default writer and returns the\n * array of tokens it contains. Doing this ahead of time avoids the need to\n * parse templates on the fly as they are rendered.\n */\n mustache.parse = function parse (template, tags) {\n return defaultWriter.parse(template, tags);\n };\n\n /**\n * Renders the `template` with the given `view` and `partials` using the\n * default writer.\n */\n mustache.render = function render (template, view, partials) {\n if (typeof template !== 'string') {\n throw new TypeError('Invalid template! Template should be a \"string\" ' +\n 'but \"' + typeStr(template) + '\" was given as the first ' +\n 'argument for mustache#render(template, view, partials)');\n }\n\n return defaultWriter.render(template, view, partials);\n };\n\n // This is here for backwards compatibility with 0.4.x.,\n /*eslint-disable */ // eslint wants camel cased function name\n mustache.to_html = function to_html (template, view, partials, send) {\n /*eslint-enable*/\n\n var result = mustache.render(template, view, partials);\n\n if (isFunction(send)) {\n send(result);\n } else {\n return result;\n }\n };\n\n // Export the escaping function so that the user may override it.\n // See https://github.com/janl/mustache.js/issues/244\n mustache.escape = escapeHtml;\n\n // Export these mainly for testing, but also for advanced usage.\n mustache.Scanner = Scanner;\n mustache.Context = Context;\n mustache.Writer = Writer;\n\n return mustache;\n}));\n","import mustache from \"mustache\";\n\nconst html = `\n\n\n`;\n\nconst template = `\n
    \n
    \n {{#authors}}\n
    \n {{#personalURL}}\n {{name}}\n {{/personalURL}}\n {{^personalURL}}\n
    {{name}}
    \n {{/personalURL}}\n {{#affiliation}}\n {{#affiliationURL}}\n {{affiliation}}\n {{/affiliationURL}}\n {{^affiliationURL}}\n
    {{affiliation}}
    \n {{/affiliationURL}}\n {{/affiliation}}\n
    \n {{/authors}}\n
    \n
    \n
    {{publishedMonth}}. {{publishedDay}}
    \n
    {{publishedYear}}
    \n
    \n \n
    Citation:
    \n
    {{concatenatedAuthors}}, {{publishedYear}}
    \n
    \n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-byline');\n if (el) {\n el.innerHTML = html + mustache.render(template, data);\n }\n}\n","const html = `\n\n\n
    \n

    References

    \n \n

    Errors, Reuse, and Citation

    \n

    If you see mistakes or want to suggest changes, please create an issue on GitHub.

    \n

    Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on GitHub. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: “Figure from …”.

    \n

    For attribution in academic contexts, please cite this work as

    \n
    \n  

    BibTeX citation

    \n
    \n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-appendix')\n if (el) {\n let oldHtml = el.innerHTML;\n el.innerHTML = html;\n let div = el.querySelector(\"div.l-body\")\n\n if (dom.querySelector(\"dt-fn\")) {\n div.innerHTML = `

    Footnotes

    ` + div.innerHTML;\n }\n\n div.innerHTML = oldHtml + div.innerHTML;\n if (data.githubCompareUpdatesUrl) {\n div.innerHTML = `

    Updates

    View all changes to this article since it was first published.

    ` + div.innerHTML;\n }\n\n el.querySelector(\"a.github\").setAttribute(\"href\", data.githubUrl);\n el.querySelector(\"a.github-issue\").setAttribute(\"href\", data.githubUrl + \"/issues/new\");\n el.querySelector(\".citation.short\").textContent = data.concatenatedAuthors + \", \" + '\"' + data.title + '\", Distill, ' + data.publishedYear + \".\";\n var bibtex = \"@article{\" + data.slug + \",\\n\";\n bibtex += \" author = {\" + data.bibtexAuthors + \"},\\n\";\n bibtex += \" title = {\" + data.title + \"},\\n\";\n bibtex += \" journal = {Distill},\\n\";\n bibtex += \" year = {\" + data.publishedYear + \"},\\n\";\n bibtex += \" note = {\" + data.url + \"}\\n\";\n bibtex += \"}\";\n el.querySelector(\".citation.long\").textContent = bibtex;\n }\n\n}\n","export default function(dom, data) {\n let css = `\n dt-cite {\n color: hsla(206, 90%, 20%, 0.7);\n }\n dt-cite .citation-number {\n cursor: default;\n white-space: nowrap;\n font-family: -apple-system, BlinkMacSystemFont, \"Roboto\", Helvetica, sans-serif;\n font-size: 75%;\n color: hsla(206, 90%, 20%, 0.7);\n display: inline-block;\n line-height: 1.1em;\n text-align: center;\n position: relative;\n top: -2px;\n margin: 0 2px;\n }\n figcaption dt-cite .citation-number {\n font-size: 11px;\n font-weight: normal;\n top: -2px;\n line-height: 1em;\n }\n `;\n\n let style = dom.createElement(\"style\");\n style.textContent = css;\n dom.querySelector(\"body\").appendChild(style);\n\n let citations = data.citations;\n /*if (data.citations) {\n citations = Object.keys(data.citations).map(c => data.citations[c]);\n citations.sort((a, b) => {\n return a.author.localeCompare(b.author);\n });\n }*/\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach((el,n) => {\n var key = el.getAttribute(\"key\");\n if (key) {\n var keys = key.split(\",\");\n var cite_string = inline_cite_short(keys);\n var cite_hover_str = \"\";\n keys.map((key,n) => {\n if (n>0) cite_hover_str += \"

    \";\n cite_hover_str += hover_cite(data.bibliography[key]);\n });\n cite_hover_str = cite_hover_str.replace(/\"/g, \"'\")\n var orig_string = el.innerHTML;\n if (orig_string != \"\") orig_string += \" \";\n el.innerHTML = `${orig_string}${cite_string}`;\n }\n });\n\n let bibEl = dom.querySelector(\"dt-bibliography\");\n if (bibEl) {\n let ol = dom.createElement(\"ol\");\n citations.forEach(key => {\n let el = dom.createElement(\"li\");\n el.innerHTML = bibliography_cite(data.bibliography[key]);\n ol.appendChild(el);\n })\n bibEl.appendChild(ol);\n }\n\n function inline_cite_short(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var n = data.citations.indexOf(key)+1;\n return \"\"+n;\n } else {\n return \"?\";\n }\n }\n return \"[\"+keys.map(cite_string).join(\", \")+\"]\";\n }\n\n function inline_cite_long(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var ent = data.bibliography[key];\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var year = ent.year;\n if (names.length == 1) return names[0] + \", \" + year;\n if (names.length == 2) return names[0] + \" & \" + names[1] + \", \" + year;\n if (names.length > 2) return names[0] + \", et al., \" + year;\n } else {\n return \"?\";\n }\n }\n return keys.map(cite_string).join(\", \");\n }\n\n function author_string(ent, template, sep, finalSep){\n var names = ent.author.split(\" and \");\n let name_strings = names.map(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1];\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n var initials = \"\";\n if (firsts != undefined) {\n initials = firsts.trim().split(\" \").map(s => s.trim()[0]);\n initials = initials.join(\".\")+\".\";\n }\n return template.replace(\"${F}\", firsts)\n .replace(\"${L}\", last)\n .replace(\"${I}\", initials);\n });\n if (names.length > 1) {\n var str = name_strings.slice(0, names.length-1).join(sep);\n str += (finalSep || sep) + name_strings[names.length-1];\n return str;\n } else {\n return name_strings[0];\n }\n }\n\n function venue_string(ent) {\n var cite = (ent.journal || ent.booktitle || \"\")\n if (\"volume\" in ent){\n var issue = ent.issue || ent.number;\n issue = (issue != undefined)? \"(\"+issue+\")\" : \"\";\n cite += \", Vol \" + ent.volume + issue;\n }\n if (\"pages\" in ent){\n cite += \", pp. \" + ent.pages\n }\n if (cite != \"\") cite += \". \"\n if (\"publisher\" in ent){\n cite += ent.publisher;\n if (cite[cite.length-1] != \".\") cite += \".\";\n }\n return cite;\n }\n\n function link_string(ent){\n if (\"url\" in ent){\n var url = ent.url;\n var arxiv_match = (/arxiv\\.org\\/abs\\/([0-9\\.]*)/).exec(url);\n if (arxiv_match != null){\n url = `http://arxiv.org/pdf/${arxiv_match[1]}.pdf`;\n }\n\n if (url.slice(-4) == \".pdf\"){\n var label = \"PDF\";\n } else if (url.slice(-5) == \".html\") {\n var label = \"HTML\";\n }\n return `  [${label||\"link\"}]`;\n }/* else if (\"doi\" in ent){\n return `  [DOI]`;\n }*/ else {\n return \"\";\n }\n }\n function doi_string(ent, new_line){\n if (\"doi\" in ent) {\n return `${new_line?\"
    \":\"\"} DOI: ${ent.doi}`;\n } else {\n return \"\";\n }\n }\n\n function bibliography_cite(ent, fancy){\n if (ent){\n var cite = \"\" + ent.title + \" \"\n cite += link_string(ent) + \"
    \";\n cite += author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += venue_string(ent);\n cite += doi_string(ent);\n return cite\n /*var cite = author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += \"\" + ent.title + \". \";\n cite += venue_string(ent);\n cite += doi_string(ent);\n cite += link_string(ent);\n return cite*/\n } else {\n return \"?\";\n }\n }\n\n function hover_cite(ent){\n if (ent){\n var cite = \"\";\n cite += \"\" + ent.title + \"\";\n cite += link_string(ent);\n cite += \"
    \"\n\n var a_str = author_string(ent, \"${I} ${L}\", \", \") + \".\";\n var v_str = venue_string(ent).trim() + \" \" + ent.year + \". \" + doi_string(ent, true);\n\n if ((a_str+v_str).length < Math.min(40, ent.title.length)) {\n cite += a_str + \" \" + v_str;\n } else {\n cite += a_str + \"
    \" + v_str;\n }\n return cite;\n } else {\n return \"?\";\n }\n }\n\n\n //https://scholar.google.com/scholar?q=allintitle%3ADocument+author%3Aolah\n function get_GS_URL(ent){\n if (ent){\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var title = ent.title.split(\" \")//.replace(/[,:]/, \"\")\n var url = \"http://search.labs.crossref.org/dois?\"//\"\"https://scholar.google.com/scholar?\"\n url += uris({q: names.join(\" \") + \" \" + title.join(\" \")})\n }\n\n }\n}\n","export default function(dom, data) {\n\n var fnTags = [].slice.apply(dom.querySelectorAll(\"dt-fn\"));\n var fnContent = [];\n fnTags.forEach((el,n) => {\n var content = el.innerHTML;\n fnContent.push(content);\n n = (n+1)+\"\";\n var key = \"fn-\"+n;\n var escaped_content = content.replace(/\"/g, \"'\");\n el.innerHTML = `${n}`;\n });\n\n let fnList = dom.querySelector(\"dt-fn-list\");\n if (fnList) {\n let ol = dom.createElement(\"ol\");\n fnContent.forEach(content => {\n let el = dom.createElement(\"li\");\n el.innerHTML = content;\n ol.appendChild(el);\n })\n fnList.appendChild(ol);\n }\n\n}\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n */\n\n;(function() {\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^( *[-*_]){3,} *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,\n nptable: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n blockquote: /^( *>[^\\n]+(\\n(?!def)[^\\n]+)*\\n*)+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n table: noop,\n paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,\n text: /^[^\\n]+/\n};\n\nblock.bullet = /(?:[*+-]|\\d+\\.)/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = replace(block.item, 'gm')\n (/bull/g, block.bullet)\n ();\n\nblock.list = replace(block.list)\n (/bull/g, block.bullet)\n ('hr', '\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))')\n ('def', '\\\\n+(?=' + block.def.source + ')')\n ();\n\nblock.blockquote = replace(block.blockquote)\n ('def', block.def)\n ();\n\nblock._tag = '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'\n + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'\n + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|[^\\\\w\\\\s@]*@)\\\\b';\n\nblock.html = replace(block.html)\n ('comment', //)\n ('closed', /<(tag)[\\s\\S]+?<\\/\\1>/)\n ('closing', /])*?>/)\n (/tag/g, block._tag)\n ();\n\nblock.paragraph = replace(block.paragraph)\n ('hr', block.hr)\n ('heading', block.heading)\n ('lheading', block.lheading)\n ('blockquote', block.blockquote)\n ('tag', '<' + block._tag)\n ('def', block.def)\n ();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]*?)\\s*\\1 *(?:\\n+|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = replace(block.paragraph)\n ('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n ();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top, bq) {\n var src = src.replace(/^ +$/gm, '')\n , next\n , loose\n , cap\n , bull\n , b\n , item\n , space\n , i\n , l;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic\n ? cap.replace(/\\n+$/, '')\n : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top, true);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n\n this.tokens.push({\n type: 'list_start',\n ordered: bull.length > 1\n });\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n this.tokens.push({\n type: loose\n ? 'loose_item_start'\n : 'list_item_start'\n });\n\n // Recurse.\n this.token(item, false, bq);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if ((!bq && top) && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.links[cap[1].toLowerCase()] = {\n href: cap[2],\n title: cap[3]\n };\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i]\n .replace(/^ *\\| *| *\\| *$/g, '')\n .split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n autolink: /^<([^ >]+(@|:\\/)[^ >]+)>/,\n url: noop,\n tag: /^|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^\\b_((?:[^_]|__)+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n code: /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n text: /^[\\s\\S]+?(?=[\\\\?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\ninline.link = replace(inline.link)\n ('inside', inline._inside)\n ('href', inline._href)\n ();\n\ninline.reflink = replace(inline.reflink)\n ('inside', inline._inside)\n ();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: replace(inline.escape)('])', '~|])')(),\n url: /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n text: replace(inline.text)\n (']|', '~]|')\n ('|', '|https?://|')\n ()\n});\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: replace(inline.br)('{2,}', '*')(),\n text: replace(inline.gfm.text)('{2,}', '*')()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer;\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new\n Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n var out = ''\n , link\n , text\n , href\n , cap;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += cap[1];\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = cap[1].charAt(6) === ':'\n ? this.mangle(cap[1].substring(7))\n : this.mangle(cap[1]);\n href = this.mangle('mailto:') + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n src = src.substring(cap[0].length);\n text = escape(cap[1]);\n href = text;\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^/i.test(cap[0])) {\n this.inLink = false;\n }\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0]\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out += this.outputLink(cap, {\n href: cap[2],\n title: cap[3]\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2], true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = escape(link.href)\n , title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = ''\n , l = text.length\n , i = 0\n , ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || {};\n}\n\nRenderer.prototype.code = function(code, lang, escaped) {\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '\\n
    ';\n }\n\n return '
    '\n    + (escaped ? code : escape(code, true))\n    + '\\n
    \\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '
    \\n' + quote + '
    \\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw) {\n return ''\n + text\n + '\\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n};\n\nRenderer.prototype.list = function(body, ordered) {\n var type = ordered ? 'ol' : 'ul';\n return '<' + type + '>\\n' + body + '\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '
  • ' + text + '
  • \\n';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '

    ' + text + '

    \\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + '\\n'\n + body\n + '\\n'\n + '
    \\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '\\n' + content + '\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' style=\"text-align:' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.em = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? '
    ' : '
    ';\n};\n\nRenderer.prototype.del = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n if (this.options.sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return '';\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0) {\n return '';\n }\n }\n var out = '
    ';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n var out = '\"'' : '>';\n return out;\n};\n\nRenderer.prototype.text = function(text) {\n return text;\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer;\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options, renderer) {\n var parser = new Parser(options, renderer);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options, this.renderer);\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n this.token.text);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = ''\n , body = ''\n , i\n , row\n , cell\n , flags\n , j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n flags = { header: true, align: this.token.align[i] };\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n var body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n var body = ''\n , ordered = this.token.ordered;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered);\n }\n case 'list_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'loose_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'html': {\n var html = !this.token.pre && !this.options.pedantic\n ? this.inline.output(this.token.text)\n : this.token.text;\n return this.renderer.html(html);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n }\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n return html\n .replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\nfunction unescape(html) {\n\t// explicitly match decimal, hex, and named HTML entities \n return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/g, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction replace(regex, opt) {\n regex = regex.source;\n opt = opt || '';\n return function self(name, val) {\n if (!name) return new RegExp(regex, opt);\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return self;\n };\n}\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1\n , target\n , key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n\n var highlight = opt.highlight\n , tokens\n , pending\n , i = 0;\n\n try {\n tokens = Lexer.lex(src, opt)\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/chjj/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occured:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n sanitizer: null,\n mangle: true,\n smartLists: false,\n silent: false,\n highlight: null,\n langPrefix: 'lang-',\n smartypants: false,\n headerPrefix: '',\n renderer: new Renderer,\n xhtml: false\n};\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.parse = marked;\n\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n this.marked = marked;\n}\n\n}).call(function() {\n return this || (typeof window !== 'undefined' ? window : global);\n}());\n","import marked from 'marked';\n\nmarked.setOptions({\n gfm: true,\n smartypants: true\n});\n\nexport default function(dom, data) {\n let markdownElements = [].slice.call(dom.querySelectorAll('[markdown]'));\n markdownElements.forEach(el => {\n let content = el.innerHTML;\n // Set default indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n\n el.innerHTML = marked(content);\n });\n}\n","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = _self.Prism = {\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/ text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\tbreak tokenloop;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t delNum = 1;\n\n\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t to = match.index + match[0].length,\n\t\t\t\t\t\t k = i,\n\t\t\t\t\t\t p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && p < to; ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t match = match[0].slice(lookbehindLength),\n\t\t\t\t\t to = from + match.length,\n\t\t\t\t\t before = str.slice(0, from),\n\t\t\t\t\t after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (env.type == 'comment') {\n\t\tenv.attributes['spellcheck'] = 'true';\n\t}\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n \t// In worker\n\t_self.addEventListener('message', function(evt) {\n\t\tvar message = JSON.parse(evt.data),\n\t\t lang = message.language,\n\t\t code = message.code,\n\t\t immediateClose = message.immediateClose;\n\n\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\tif (immediateClose) {\n\t\t\t_self.close();\n\t\t}\n\t}, false);\n\n\treturn _self.Prism;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (document.addEventListener && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': //,\n\t'prolog': /<\\?[\\w\\W]+?\\?>/,\n\t'doctype': //i,\n\t'cdata': //i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\w\\W])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:('|\")[\\w\\W]*?(\\1)|[^\\s>]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /[=>\"']/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\w\\W]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^\\{\\}\\s][^\\{\\};]*?(?=\\s*\\{)/,\n\t'string': {\n\t\tpattern: /(\"|')(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'property': /(\\b|\\B)[\\w-]+(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|').*?\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\w\\W]*?\\*\\//,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[a-z0-9_\\.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /(\\.|\\\\)/\n\t\t}\n\t},\n\t'keyword': /\\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(0x[\\dA-Fa-f]+|0b[01]+|0o[0-7]+|\\d*\\.?\\d+([Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*(?=\\()/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*\\*?|\\/|~|\\^|%|\\.{3}/\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[.+?]|\\\\.|[^/\\\\\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\\\\\|\\\\?[^\\\\])*?`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript'\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tif(Array.prototype.forEach) { // Check to prevent error in IE8\n\t\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\t\tvar language, parent = pre;\n\t\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\t\tparent = parent.parentNode;\n\t\t\t\t}\n\n\t\t\t\tif (parent) {\n\t\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t\t}\n\n\t\t\t\tif (!language) {\n\t\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t\t}\n\n\t\t\t\tvar code = document.createElement('code');\n\t\t\t\tcode.className = 'language-' + language;\n\n\t\t\t\tpre.textContent = '';\n\n\t\t\t\tcode.textContent = 'Loading…';\n\n\t\t\t\tpre.appendChild(code);\n\n\t\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\t\txhr.open('GET', src, true);\n\n\t\t\t\txhr.onreadystatechange = function () {\n\t\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\txhr.send(null);\n\t\t\t});\n\t\t}\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\n})();\n","import Prism from \"prismjs\";\n\nexport default function(dom, data) {\n let codeElements = [].slice.call(dom.querySelectorAll(\"dt-code\"));\n codeElements.forEach(el => {\n let content = el.textContent;\n el.innerHTML = \"\";\n let language = el.getAttribute(\"language\");\n let c = dom.createElement(\"code\");\n if (el.getAttribute(\"block\") === \"\") {\n // Let's normalize the tab indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n let p = dom.createElement(\"pre\");\n p.appendChild(c);\n el.appendChild(p);\n } else {\n el.appendChild(c);\n }\n let highlighted = content;\n if (Prism.languages[language]) {\n c.setAttribute(\"class\", \"language-\" + language);\n highlighted = Prism.highlight(content, Prism.languages[language]);\n }\n c.innerHTML = highlighted;\n });\n}\n","export default function(dom, data) {\n\n var textNodes = dom.createTreeWalker(\n dom.body,\n dom.defaultView.NodeFilter.SHOW_TEXT\n );\n while (textNodes.nextNode()) {\n var n = textNodes.currentNode,\n text = n.nodeValue;\n if (text && acceptNode(n)) {\n text = quotes(text);\n text = punctuation(text);\n n.nodeValue = text;\n }\n }\n}\n\nfunction acceptNode(node) {\n var parent = node.parentElement;\n var isMath = (parent && parent.getAttribute && parent.getAttribute(\"class\")) ? parent.getAttribute(\"class\").includes(\"katex\") || parent.getAttribute(\"class\").includes(\"MathJax\") : false;\n return parent &&\n parent.nodeName !== \"SCRIPT\" &&\n parent.nodeName !== \"STYLE\" &&\n parent.nodeName !== \"CODE\" &&\n parent.nodeName !== \"PRE\" &&\n parent.nodeName !== \"SPAN\" &&\n parent.nodeName !== \"DT-HEADER\" &&\n parent.nodeName !== \"DT-BYLINE\" &&\n parent.nodeName !== \"DT-MATH\" &&\n parent.nodeName !== \"DT-CODE\" &&\n parent.nodeName !== \"DT-BIBLIOGRAPHY\" &&\n parent.nodeName !== \"DT-FOOTER\" &&\n parent.nodeType !== 8 && //comment nodes\n !isMath;\n}\n\n\n/*!\n * typeset - Typesetting for the web\n * @version v0.1.6\n * @link https://github.com/davidmerfield/Typeset.js\n * @author David Merfield\n */\n // which has a CC0 license\n // http://creativecommons.org/publicdomain/zero/1.0/\n\n\nfunction punctuation(text){\n\n // Dashes\n text = text.replace(/--/g, '\\u2014');\n text = text.replace(/ \\u2014 /g,\"\\u2009\\u2014\\u2009\"); //this has thin spaces\n\n // Elipses\n text = text.replace(/\\.\\.\\./g,'…');\n\n // Nbsp for punc with spaces\n var NBSP = \"\\u00a0\";\n var NBSP_PUNCTUATION_START = /([«¿¡]) /g;\n var NBSP_PUNCTUATION_END = / ([\\!\\?:;\\.,‽»])/g;\n\n text = text.replace(NBSP_PUNCTUATION_START, '$1' + NBSP);\n text = text.replace(NBSP_PUNCTUATION_END, NBSP + '$1');\n\n return text;\n}\n\nfunction quotes(text) {\n\n text = text\n .replace(/(\\W|^)\"([^\\s\\!\\?:;\\.,‽»])/g, '$1\\u201c$2') // beginning \"\n .replace(/(\\u201c[^\"]*)\"([^\"]*$|[^\\u201c\"]*\\u201c)/g, '$1\\u201d$2') // ending \"\n .replace(/([^0-9])\"/g,'$1\\u201d') // remaining \" at end of word\n .replace(/(\\W|^)'(\\S)/g, '$1\\u2018$2') // beginning '\n .replace(/([a-z])'([a-z])/ig, '$1\\u2019$2') // conjunction's possession\n .replace(/((\\u2018[^']*)|[a-z])'([^0-9]|$)/ig, '$1\\u2019$3') // ending '\n .replace(/(\\u2018)([0-9]{2}[^\\u2019]*)(\\u2018([^0-9]|$)|$|\\u2019[a-z])/ig, '\\u2019$2$3') // abbrev. years like '93\n .replace(/(\\B|^)\\u2018(?=([^\\u2019]*\\u2019\\b)*([^\\u2019\\u2018]*\\W[\\u2019\\u2018]\\b|[^\\u2019\\u2018]*$))/ig, '$1\\u2019') // backwards apostrophe\n .replace(/'''/g, '\\u2034') // triple prime\n .replace(/(\"|'')/g, '\\u2033') // double prime\n .replace(/'/g, '\\u2032');\n\n // Allow escaped quotes\n text = text.replace(/\\\\“/, '\\\"');\n text = text.replace(/\\\\”/, '\\\"');\n text = text.replace(/\\\\’/, '\\'');\n text = text.replace(/\\\\‘/, '\\'');\n\n return text;\n}\n\nfunction ligatures(text){\n\n text = text.replace(/fi/g, 'fi');\n text = text.replace(/fl/g, 'fl');\n\n return text;\n};\n","import code from './hover-box.txt';\n\nexport default function(dom) {\n let s = dom.createElement(\"script\");\n s.textContent = code;\n dom.querySelector(\"body\").appendChild(s);\n}\n","//import xml from \"xml\";\n\nexport default function(data) {\n\n\n var date = data.publishedDate;\n\n var batch_timestamp = Math.floor(Date.now() / 1000);\n var batch_id = data.authors.length ? data.authors[0].lastName.toLowerCase().slice(0,20) : \"Anonymous\";\n batch_id += \"_\" + date.getFullYear();\n batch_id += \"_\" + data.title.split(\" \")[0].toLowerCase().slice(0,20) + \"_\" + batch_timestamp;\n // generate XML\n var crf_data =\n {doi_batch : [\n\n { _attr: {\n version: \"4.3.7\",\n xmlns: \"http://www.crossref.org/schema/4.3.7\",\n \"xmlns:xsi\": \"http://www.w3.org/2001/XMLSchema-instance\",\n \"xsi:schemaLocation\": \"http://www.crossref.org/schema/4.3.7 http://www.crossref.org/schemas/crossref4.3.7.xsd\",\n }},\n\n { head: [\n {doi_batch_id: batch_id},\n {timestamp: batch_timestamp},\n {depositor: [\n {depositor_name: data.journal.publisherName},\n {email_address: data.journal.publisherEmail},\n ]},\n {registrant: data.journal.publisherName},\n ]},\n\n {body: [\n {journal: [\n\n {journal_metadata: [\n {full_title: data.journal.full_title || data.journal.title},\n {abbrev_title: data.journal.abbrev_title || data.journal.title || data.journal.full_title},\n {issn: data.journal.issn},\n {doi_data: [\n {doi: data.journal.doi},\n {resource: data.journal.url},\n ]},\n ]},\n\n {journal_issue: [\n {publication_date: [\n {month: date.getMonth()+1},\n {year: date.getFullYear()},\n ]},\n {journal_volume: [\n {volume: data.volume},\n ]},\n {issue: data.issue},\n ]},\n\n {journal_article: [\n {titles: [\n {title: data.title},\n ]},\n { contributors:\n data.authors.map((author, ind) => (\n {person_name: [\n { _attr: {\n contributor_role: \"author\",\n sequence: (ind == 0)? \"first\" : \"additional\"\n }},\n {given_name: author.firstName},\n {surname: author.lastName},\n {affiliation: author.affiliation}\n // TODO: ORCID?\n ]}\n ))\n },\n {publication_date: [\n {month: date.getMonth()+1},\n {day: date.getDate()},\n {year: date.getFullYear()}\n ]},\n { publisher_item: [\n {item_number: data.doi}\n ]},\n {doi_data: [\n {doi: data.doi},\n //{timestamp: \"\"},\n {resource: data.url},\n ]},\n {citation_list:\n data.citations.map(key =>\n citation_xml(key, data.bibliography[key]))\n }\n\n ]},\n\n ]},\n ]},\n ]};\n\n return xml(crf_data);\n}\n\nfunction citation_xml(key, ent){\n if (ent == undefined) return {};\n var info = [];\n info.push({_attr: {key: key}});\n if (\"title\" in ent)\n info.push({article_title: ent.title});\n if (\"author\" in ent)\n info.push({author: ent.author.split(\" and \")[0].split(\",\")[0].trim()});\n if (\"journal\" in ent)\n info.push({journal_title: ent.journal});\n if (\"booktitle\" in ent)\n info.push({volume_title: ent.booktitle});\n if (\"volume\" in ent)\n info.push({volume: ent.volume});\n if (\"issue\" in ent)\n info.push({issue: ent.issue});\n if (\"doi\" in ent)\n info.push({doi: ent.doi});\n return {citation: info}\n}\n\nfunction xml(obj) {\n //console.log(typeof(obj), obj)\n if (typeof obj === 'string') return obj;\n if (typeof obj === 'number') return \"\"+obj;\n let keys = Object.keys(obj);\n if (keys.length != 1) console.error(\"can't interpret \", obj, \"as xml\");\n let name = keys[0];\n var full_content = obj[name];\n var attr = {};\n if (Array.isArray(full_content)){\n var content = [];\n for (var i in full_content) {\n var obj = full_content[i];\n var obj_name = Object.keys(obj)[0];\n if (\"_attr\" == obj_name) {\n attr = obj[\"_attr\"];\n } else {\n //console.log(Object.keys(obj)[0])\n content.push(obj);\n }\n }\n } else {\n content = full_content;\n }\n if (content == undefined){\n content = \"undefined\"\n }\n\n let attr_string = \"\";\n for (var k in attr) {\n attr_string += ` ${k}=\\\"${attr[k]}\\\"`\n }\n\n //console.log(typeof content, Array.isArray(content), content instanceof String, content)\n if (Array.isArray(content)){\n content = content.map(xml);\n content = content.join(\"\\n\").split(\"\\n\");\n content = content.map(s => \" \" + s).join(\"\\n\")\n var result = `<${name}${attr_string}>\\n${content}\\n`;\n } else {\n content = xml(content);\n var result = `<${name}${attr_string}>${content}`;\n }\n return result;\n}\n","import logo from \"./distill-logo.svg\";\n\nconst html = `\n\n\n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-header\");\n if(el) {\n el.innerHTML = html;\n } else {\n let header = dom.createElement(\"dt-header\");\n header.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(header, b.firstChild);\n }\n}\n","import logo from \"./distill-logo.svg\";\n\nlet html = `\n\n\n
    \n \n ${logo}\n Distill\n is dedicated to clear explanations of machine learning\n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-footer\");\n if(el) {\n el.innerHTML = html;\n } else {\n let footer = dom.createElement(\"dt-footer\");\n footer.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.appendChild(footer);\n }\n}\n","import html from \"./components/html\";\nimport styles from \"./components/styles\";\nimport frontMatter from \"./components/front-matter\";\nimport bibliography from \"./components/bibliography\";\nimport expandData from \"./components/expand-data\";\nimport meta from \"./components/meta\";\nimport banner from \"./components/banner\";\nimport byline from \"./components/byline\";\nimport appendix from \"./components/appendix\";\nimport citation from \"./components/citation\";\nimport footnote from \"./components/footnote\";\nimport markdown from \"./components/markdown\";\nimport code from \"./components/code\";\nimport typeset from \"./components/typeset\";\nimport hoverBox from \"./components/hover-box-include\";\nimport generateCrossref from \"./components/generate-crossref\";\nimport header from \"./components/header\";\nimport footer from \"./components/footer\";\n\nfunction renderImmediately(dom) {\n html(dom);\n styles(dom);\n}\n\nfunction renderOnLoad(dom, data) {\n frontMatter(dom, data);\n bibliography(dom, data);\n expandData(dom, data);\n meta(dom, data);\n byline(dom, data);\n appendix(dom, data);\n markdown(dom, data);\n code(dom, data);\n citation(dom, data);\n footnote(dom, data);\n typeset(dom, data);\n hoverBox(dom, data);\n}\n\n// If we are in a browser, render automatically...\nif(window && window.document) {\n let data = {};\n renderImmediately(window.document);\n window.document.addEventListener(\"DOMContentLoaded\", (event) => {\n renderOnLoad(window.document, data);\n // Add a banner if we're not on localhost.\n if (window.location.hostname !== \"localhost\" && window.location.origin !== \"file://\") {\n banner(window.document, data);\n }\n generateCrossref(data);\n });\n}\n\n// If we are in node...\nfunction render(dom, data) {\n renderImmediately(dom);\n renderOnLoad(dom, data);\n // Remove script tag so it doesn't run again in the client\n let s = dom.querySelector('script[src*=\"distill.pub/template\"]');\n if (s) { s.parentElement.removeChild(s); };\n}\n\n// Distill specific rendering\nfunction distillify(dom, data) {\n header(dom, data);\n footer(dom, data);\n}\n\nexport {render as render};\nexport {distillify as distillify};\nexport {generateCrossref as generateCrossref};\n"],"names":["let","meta","YAMLException","common","require$$0","Mark","this","Type","require$$1","require$$2","type","arguments","Schema","require$$3","require$$4","require$$5","require","_hasOwnProperty","_toString","require$$6","require$$7","_require","DEFAULT_SAFE_SCHEMA","DEFAULT_FULL_SCHEMA","loadAll","load","safeLoadAll","safeLoad","State","dump","safeDump","require$$8","require$$9","ymlParse","interval","day","timeDay","timeYear","timeSunday","timeMonday","locale","escape","const","html","define","global","Prism","code","render"],"mappings":"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"} \ No newline at end of file diff --git a/index.js b/index.js index 6dac36c..c9d38bb 100644 --- a/index.js +++ b/index.js @@ -56,7 +56,7 @@ function render(dom, data) { renderImmediately(dom); renderOnLoad(dom, data); // Remove script tag so it doesn't run again in the client - let s = dom.querySelector('script[src="http://distill.pub/template.js"]'); + let s = dom.querySelector('script[src*="distill.pub/template"]'); if (s) { s.parentElement.removeChild(s); }; } From af02c0a8450d01540e0691dd6c00d546854580ca Mon Sep 17 00:00:00 2001 From: Christopher Olah Date: Mon, 20 Mar 2017 10:31:06 -0700 Subject: [PATCH 07/42] fix links in top bar --- components/header.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/components/header.js b/components/header.js index 03645f8..5c3b3c0 100644 --- a/components/header.js +++ b/components/header.js @@ -72,9 +72,9 @@ dt-header .nav a { Distill ` From 6c2a4506621b928e058dbc9f20c9d36b298b3778 Mon Sep 17 00:00:00 2001 From: Shan Carter Date: Mon, 20 Mar 2017 10:32:15 -0700 Subject: [PATCH 08/42] twitter images --- components/expand-data.js | 4 +++- components/meta.js | 10 +++++----- dist/template.js | 14 ++++++++------ dist/template.js.map | 2 +- 4 files changed, 17 insertions(+), 13 deletions(-) diff --git a/components/expand-data.js b/components/expand-data.js index 9d4b3dd..e7f391a 100644 --- a/components/expand-data.js +++ b/components/expand-data.js @@ -5,9 +5,11 @@ export default function(dom, data) { data.authors = data.authors || []; // paths - data.url = "http://distill.pub/" + data.distillPath; + data.url = data.url ? data.url : "http://distill.pub/" + data.distillPath; data.githubUrl = "https://github.com/" + data.githubPath; + data.previewURL = data.previewURL ? data.previewURL : data.url + "/thumbnail.jpg" + // Homepage //data.homepage = !post.noHomepage; data.journal = data.journal || {}; diff --git a/components/meta.js b/components/meta.js index 5a2a4bf..25ec0b2 100644 --- a/components/meta.js +++ b/components/meta.js @@ -34,7 +34,7 @@ export default function(dom, data) { - + `); @@ -45,7 +45,7 @@ export default function(dom, data) { - + `); @@ -101,7 +101,7 @@ function appendHtml(el, html) { function citation_meta_content(ref){ // Special test for arxiv var content = `citation_title=${ref.title};`; - + let name_strings = ref.author.split(" and ").forEach(name => { name = name.trim(); if (name.indexOf(",") != -1){ @@ -113,11 +113,11 @@ function citation_meta_content(ref){ } content += `citation_author=${firsts} ${last};`; }); - + if ("year" in ref) { content += `citation_publication_date=${ref.year};`; } - + var arxiv_id_search = /https?:\/\/arxiv\.org\/pdf\/([0-9]*\.[0-9]*)\.pdf/.exec(ref.url); arxiv_id_search = arxiv_id_search || /https?:\/\/arxiv\.org\/abs\/([0-9]*\.[0-9]*)/.exec(ref.url); arxiv_id_search = arxiv_id_search || /arXiv preprint arXiv:([0-9]*\.[0-9]*)/.exec(ref.journal); diff --git a/dist/template.js b/dist/template.js index d53dccd..94dfbc2 100644 --- a/dist/template.js +++ b/dist/template.js @@ -5092,9 +5092,11 @@ var expandData = function(dom, data) { data.authors = data.authors || []; // paths - data.url = "http://distill.pub/" + data.distillPath; + data.url = data.url ? data.url : "http://distill.pub/" + data.distillPath; data.githubUrl = "https://github.com/" + data.githubPath; + data.previewURL = data.previewURL ? data.previewURL : data.url + "/thumbnail.jpg"; + // Homepage //data.homepage = !post.noHomepage; data.journal = data.journal || {}; @@ -5231,9 +5233,9 @@ var meta = function(dom, data) { appendHtml(head, ("\n ")); }); - appendHead(("\n \n \n \n \n \n \n \n \n ")); + appendHead(("\n \n \n \n \n \n \n \n \n ")); - appendHead(("\n \n \n \n \n \n \n \n \n ")); + appendHead(("\n \n \n \n \n \n \n \n \n ")); // if this is a proprer article, generate Google Scholar meta data if (data.doiSuffix){ @@ -5285,7 +5287,7 @@ function appendHtml(el, html) { function citation_meta_content(ref){ // Special test for arxiv var content = "citation_title=" + (ref.title) + ";"; - + var name_strings = ref.author.split(" and ").forEach(function (name) { name = name.trim(); if (name.indexOf(",") != -1){ @@ -5297,11 +5299,11 @@ function citation_meta_content(ref){ } content += "citation_author=" + firsts + " " + last + ";"; }); - + if ("year" in ref) { content += "citation_publication_date=" + (ref.year) + ";"; } - + var arxiv_id_search = /https?:\/\/arxiv\.org\/pdf\/([0-9]*\.[0-9]*)\.pdf/.exec(ref.url); arxiv_id_search = arxiv_id_search || /https?:\/\/arxiv\.org\/abs\/([0-9]*\.[0-9]*)/.exec(ref.url); arxiv_id_search = arxiv_id_search || /arXiv preprint arXiv:([0-9]*\.[0-9]*)/.exec(ref.journal); diff --git a/dist/template.js.map b/dist/template.js.map index d8dc4fa..7fdf514 100644 --- a/dist/template.js.map +++ b/dist/template.js.map @@ -1 +1 @@ -{"version":3,"file":null,"sources":["../components/html.js","../components/styles.js","../node_modules/js-yaml/lib/js-yaml/common.js","../node_modules/js-yaml/lib/js-yaml/exception.js","../node_modules/js-yaml/lib/js-yaml/mark.js","../node_modules/js-yaml/lib/js-yaml/type.js","../node_modules/js-yaml/lib/js-yaml/schema.js","../node_modules/js-yaml/lib/js-yaml/type/str.js","../node_modules/js-yaml/lib/js-yaml/type/seq.js","../node_modules/js-yaml/lib/js-yaml/type/map.js","../node_modules/js-yaml/lib/js-yaml/schema/failsafe.js","../node_modules/js-yaml/lib/js-yaml/type/null.js","../node_modules/js-yaml/lib/js-yaml/type/bool.js","../node_modules/js-yaml/lib/js-yaml/type/int.js","../node_modules/js-yaml/lib/js-yaml/type/float.js","../node_modules/js-yaml/lib/js-yaml/schema/json.js","../node_modules/js-yaml/lib/js-yaml/schema/core.js","../node_modules/js-yaml/lib/js-yaml/type/timestamp.js","../node_modules/js-yaml/lib/js-yaml/type/merge.js","../node_modules/js-yaml/lib/js-yaml/type/binary.js","../node_modules/js-yaml/lib/js-yaml/type/omap.js","../node_modules/js-yaml/lib/js-yaml/type/pairs.js","../node_modules/js-yaml/lib/js-yaml/type/set.js","../node_modules/js-yaml/lib/js-yaml/schema/default_safe.js","../node_modules/js-yaml/lib/js-yaml/type/js/undefined.js","../node_modules/js-yaml/lib/js-yaml/type/js/regexp.js","../node_modules/js-yaml/lib/js-yaml/type/js/function.js","../node_modules/js-yaml/lib/js-yaml/schema/default_full.js","../node_modules/js-yaml/lib/js-yaml/loader.js","../node_modules/js-yaml/lib/js-yaml/dumper.js","../node_modules/js-yaml/lib/js-yaml.js","../node_modules/js-yaml/index.js","../components/front-matter.js","../node_modules/bibtex-parse-js/bibtexParse.js","../components/bibliography.js","../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/utcMinute.js","../node_modules/d3-time/src/utcHour.js","../node_modules/d3-time/src/utcDay.js","../node_modules/d3-time/src/utcWeek.js","../node_modules/d3-time/src/utcMonth.js","../node_modules/d3-time/src/utcYear.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-time-format/src/isoFormat.js","../node_modules/d3-time-format/src/isoParse.js","../components/expand-data.js","../../node_modules/escape-html/index.js","../components/meta.js","../components/banner.js","../node_modules/mustache/mustache.js","../components/byline.js","../components/appendix.js","../components/citation.js","../components/footnote.js","../node_modules/marked/lib/marked.js","../components/markdown.js","../node_modules/prismjs/prism.js","../components/code.js","../components/typeset.js","../components/hover-box-include.js","../components/generate-crossref.js","../components/header.js","../components/footer.js","../index.js"],"sourcesContent":["export default function(dom) {\n if (!dom.querySelector(\"html\").getAttribute(\"lang\")) {\n dom.querySelector(\"html\").setAttribute(\"lang\", \"en\")\n }\n\n let head = dom.querySelector(\"head\");\n\n if (!dom.querySelector(\"meta[charset]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"charset\", \"utf-8\");\n head.appendChild(meta);\n }\n if (!dom.querySelector(\"meta[name=viewport]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"name\", \"viewport\");\n meta.setAttribute(\"content\", \"width=device-width, initial-scale=1\");\n head.appendChild(meta);\n }\n}\n","import base from './styles-base.css';\nimport layout from './styles-layout.css';\nimport article from './styles-article.css';\nimport code from './styles-code.css';\nimport print from './styles-print.css';\n\nexport default function(dom) {\n let s = dom.createElement(\"style\");\n s.textContent = base + layout + article + code + print;\n dom.querySelector(\"head\").appendChild(s);\n}\n","'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n var result = this.name + ': ';\n\n result += this.reason || '(unknown reason)';\n\n if (!compact && this.mark) {\n result += ' ' + this.mark.toString();\n }\n\n return result;\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n\nvar common = require('./common');\n\n\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\n\n\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head, start, tail, end, snippet;\n\n if (!this.buffer) return null;\n\n indent = indent || 4;\n maxLength = maxLength || 75;\n\n head = '';\n start = this.position;\n\n while (start > 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n\n tail = '';\n end = this.position;\n\n while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n\n snippet = this.buffer.slice(start, end);\n\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' +\n common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\n\nMark.prototype.toString = function toString(compact) {\n var snippet, where = '';\n\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n if (!compact) {\n snippet = this.getSnippet();\n\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n\n return where;\n};\n\n\nmodule.exports = Mark;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name, result) {\n var exclude = [];\n\n schema.include.forEach(function (includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n\n schema[name].forEach(function (currentType) {\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n exclude.push(previousIndex);\n }\n });\n\n result.push(currentType);\n });\n\n return result.filter(function (type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {}\n }, index, length;\n\n function collectType(type) {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n\n this.implicit.forEach(function (type) {\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n });\n\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\n\nSchema.DEFAULT = null;\n\n\nSchema.create = function createSchema() {\n var schemas, types;\n\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n\n if (!schemas.every(function (schema) { return schema instanceof Schema; })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n\n if (!types.every(function (type) { return type instanceof Type; })) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n return new Schema({\n include: schemas,\n explicit: types\n });\n};\n\n\nmodule.exports = Schema;\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 8\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 10 (except 0) or base 60\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch === ':') break;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n if (!hasDigits) return false;\n\n // if !base60 - done;\n if (ch !== ':') return true;\n\n // base60 almost not used, no needs to optimize\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch, base, digits = [];\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value, 16);\n return sign * parseInt(value, 8);\n }\n\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseInt(v, 10));\n });\n\n value = 0;\n base = 1;\n\n digits.forEach(function (d) {\n value += (d * base);\n base *= 60;\n });\n\n return sign * value;\n\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (object) { return '0b' + object.toString(2); },\n octal: function (object) { return '0' + object.toString(8); },\n decimal: function (object) { return object.toString(10); },\n hexadecimal: function (object) { return '0x' + object.toString(16).toUpperCase(); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n '^(?:[-+]?(?:[0-9][0-9_]*)\\\\.[0-9_]*(?:[eE][-+][0-9]+)?' +\n '|\\\\.[0-9_]+(?:[eE][-+][0-9]+)?' +\n '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' +\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data)) return false;\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign, base, digits;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n\n } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n\n value = 0.0;\n base = 1;\n\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n\n return sign * value;\n\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./failsafe')\n ],\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./json')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\nvar NodeBuffer;\n\ntry {\n // A trick for browserified version, to not include `Buffer` shim\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n // Wrap into Buffer for NodeJS and leave Array for browser\n if (NodeBuffer) return new NodeBuffer(result);\n\n return result;\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./core')\n ],\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n return true;\n}\n\nfunction constructJavascriptUndefined() {\n /*eslint-disable no-undefined*/\n return undefined;\n}\n\nfunction representJavascriptUndefined() {\n return '';\n}\n\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n if (data === null) return false;\n if (data.length === 0) return false;\n\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // if regexp starts with '/' it can have modifiers and must be properly closed\n // `/foo/gim` - modifiers tail can be maximum 3 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n\n if (modifiers.length > 3) return false;\n // if expression starts with /, is should be properly terminated\n if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n }\n\n return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // `/foo/gim` - tail can be maximum 4 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n\n return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object /*, style*/) {\n var result = '/' + object.source + '/';\n\n if (object.global) result += 'g';\n if (object.multiline) result += 'm';\n if (object.ignoreCase) result += 'i';\n\n return result;\n}\n\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n","'use strict';\n\nvar esprima;\n\n// Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n// If not found - try to fallback to window.esprima. If not\n// found too - then fail to parse.\n//\ntry {\n // workaround to exclude package from browserify list.\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n /*global window */\n if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n if (data === null) return false;\n\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true });\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction constructJavascriptFunction(data) {\n /*jslint evil:true*/\n\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true }),\n params = [],\n body;\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n throw new Error('Failed to resolve function');\n }\n\n ast.body[0].expression.params.forEach(function (param) {\n params.push(param.name);\n });\n\n body = ast.body[0].expression.body.range;\n\n // Esprima's ranges include the first '{' and the last '}' characters on\n // function expressions. So cut them out.\n /*eslint-disable no-new-func*/\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n}\n\nfunction representJavascriptFunction(object /*, style*/) {\n return object.toString();\n}\n\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n","// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [\n require('./default_safe')\n ],\n explicit: [\n require('../type/js/undefined'),\n require('../type/js/regexp'),\n require('../type/js/function')\n ]\n});\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00);\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n return new YAMLException(\n message,\n new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length;\n _position < _length;\n _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode) {\n var index, quantity;\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n throwError(state, 'duplicated mapping key');\n }\n _result[keyNode] = valueNode;\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else {\n break; // Reading is done. Go to the epilogue.\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if (state.lineIndent > nodeIndent && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!state.anchorMap.hasOwnProperty(alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag !== null && state.tag !== '!') {\n if (state.tag === '?') {\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length;\n typeIndex < typeQuantity;\n typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only assigned to plain scalars. So, it isn't\n // needed to check for 'kind' conformity.\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = {};\n state.anchorMap = {};\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n var documents = loadDocuments(input, options), index, length;\n\n for (index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nfunction safeLoadAll(input, output, options) {\n loadAll(input, output, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nfunction safeLoad(input, options) {\n return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// Simplified test for values allowed after the first character in plain style.\nfunction isPlainSafe(c) {\n // Uses a subset of nb-char - c-flow-indicator - \":\" - \"#\"\n // where nb-char ::= c-printable - b-char - c-byte-order-mark.\n return isPrintable(c) && c !== 0xFEFF\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // - \":\" - \"#\"\n && c !== CHAR_COLON\n && c !== CHAR_SHARP;\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n return isPrintable(c) && c !== 0xFEFF\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {\n var i;\n var char;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(string.charCodeAt(0))\n && !isWhitespace(string.charCodeAt(string.length - 1));\n\n if (singleLineOnly) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n return plain && !testAmbiguousType(string)\n ? STYLE_PLAIN : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (string[0] === ' ' && indentPerLevel > 9) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey) {\n state.dump = (function () {\n if (string.length === 0) {\n return \"''\";\n }\n if (!state.noCompatMode &&\n DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n return \"'\" + string + \"'\";\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = (string[0] === ' ') ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char;\n var escapeSeq;\n\n for (var i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n result += !escapeSeq && isPrintable(char)\n ? string[i]\n : escapeSeq || encodeHex(char);\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level, object[index], false, false)) {\n if (index !== 0) _result += ', ';\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || index !== 0) {\n _result += generateNextLine(state, level);\n }\n _result += '- ' + state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (index !== 0) pairBuffer += ', ';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + ': ';\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || index !== 0) {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n state.tag = explicit ? type.tag : '?';\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n writeBlockSequence(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey);\n }\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n state.dump = '!<' + state.tag + '> ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n if (writeNode(state, 0, input, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nfunction safeDump(input, options) {\n return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n","'use strict';\n\n\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\n\n\nfunction deprecated(name) {\n return function () {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\n\n\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\n\n// Deprecated schema names from JS-YAML 2.0.x\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\n\n// Deprecated functions from JS-YAML 1.x.x\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","'use strict';\n\n\nvar yaml = require('./lib/js-yaml.js');\n\n\nmodule.exports = yaml;\n","import ymlParse from \"js-yaml\";\n\nexport default function(dom, data) {\n let localData = {};\n let el = dom.querySelector('script[type=\"text/front-matter\"]');\n if (el) {\n let text = el.textContent;\n localData = ymlParse.safeLoad(text);\n }\n\n data.title = localData.title ? localData.title : \"Untitled\";\n data.description = localData.description ? localData.description : \"No description.\";\n\n data.authors = localData.authors ? localData.authors : [];\n\n data.authors = data.authors.map((author, i) =>{\n let a = {};\n let name = Object.keys(author)[0];\n if ((typeof author) === \"string\") {\n name = author;\n } else {\n a.personalURL = author[name];\n }\n let names = name.split(\" \");\n a.name = name;\n a.firstName = names.slice(0, names.length - 1).join(\" \");\n a.lastName = names[names.length -1];\n if(localData.affiliations[i]) {\n let affiliation = Object.keys(localData.affiliations[i])[0];\n if ((typeof localData.affiliations[i]) === \"string\") {\n affiliation = localData.affiliations[i]\n } else {\n a.affiliationURL = localData.affiliations[i][affiliation];\n }\n a.affiliation = affiliation;\n }\n return a;\n });\n \n\n}\n","/* start bibtexParse 0.0.22 */\n\n//Original work by Henrik Muehe (c) 2010\n//\n//CommonJS port by Mikola Lysenko 2013\n//\n//Port to Browser lib by ORCID / RCPETERS\n//\n//Issues:\n//no comment handling within strings\n//no string concatenation\n//no variable values yet\n//Grammar implemented here:\n//bibtex -> (string | preamble | comment | entry)*;\n//string -> '@STRING' '{' key_equals_value '}';\n//preamble -> '@PREAMBLE' '{' value '}';\n//comment -> '@COMMENT' '{' value '}';\n//entry -> '@' key '{' key ',' key_value_list '}';\n//key_value_list -> key_equals_value (',' key_equals_value)*;\n//key_equals_value -> key '=' value;\n//value -> value_quotes | value_braces | key;\n//value_quotes -> '\"' .*? '\"'; // not quite\n//value_braces -> '{' .*? '\"'; // not quite\n(function(exports) {\n\n function BibtexParser() {\n \n this.months = [\"jan\", \"feb\", \"mar\", \"apr\", \"may\", \"jun\", \"jul\", \"aug\", \"sep\", \"oct\", \"nov\", \"dec\"];\n this.notKey = [',','{','}',' ','='];\n this.pos = 0;\n this.input = \"\";\n this.entries = new Array();\n\n this.currentEntry = \"\";\n\n this.setInput = function(t) {\n this.input = t;\n };\n\n this.getEntries = function() {\n return this.entries;\n };\n\n this.isWhitespace = function(s) {\n return (s == ' ' || s == '\\r' || s == '\\t' || s == '\\n');\n };\n\n this.match = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n this.pos += s.length;\n } else {\n throw \"Token mismatch, expected \" + s + \", found \"\n + this.input.substring(this.pos);\n };\n this.skipWhitespace(canCommentOut);\n };\n\n this.tryMatch = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n return true;\n } else {\n return false;\n };\n this.skipWhitespace(canCommentOut);\n };\n\n /* when search for a match all text can be ignored, not just white space */\n this.matchAt = function() {\n while (this.input.length > this.pos && this.input[this.pos] != '@') {\n this.pos++;\n };\n\n if (this.input[this.pos] == '@') {\n return true;\n };\n return false;\n };\n\n this.skipWhitespace = function(canCommentOut) {\n while (this.isWhitespace(this.input[this.pos])) {\n this.pos++;\n };\n if (this.input[this.pos] == \"%\" && canCommentOut == true) {\n while (this.input[this.pos] != \"\\n\") {\n this.pos++;\n };\n this.skipWhitespace(canCommentOut);\n };\n };\n\n this.value_braces = function() {\n var bracecount = 0;\n this.match(\"{\", false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '}') {\n if (bracecount > 0) {\n bracecount--;\n } else {\n var end = this.pos;\n this.match(\"}\", false);\n return this.input.substring(start, end);\n };\n } else if (this.input[this.pos] == '{') {\n bracecount++;\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value\";\n };\n };\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.value_comment = function() {\n var str = '';\n var brcktCnt = 0;\n while (!(this.tryMatch(\"}\", false) && brcktCnt == 0)) {\n str = str + this.input[this.pos];\n if (this.input[this.pos] == '{')\n brcktCnt++;\n if (this.input[this.pos] == '}')\n brcktCnt--;\n if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n this.pos++;\n };\n return str;\n };\n\n this.value_quotes = function() {\n this.match('\"', false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '\"') {\n var end = this.pos;\n this.match('\"', false);\n return this.input.substring(start, end);\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n }\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.single_value = function() {\n var start = this.pos;\n if (this.tryMatch(\"{\")) {\n return this.value_braces();\n } else if (this.tryMatch('\"')) {\n return this.value_quotes();\n } else {\n var k = this.key();\n if (k.match(\"^[0-9]+$\"))\n return k;\n else if (this.months.indexOf(k.toLowerCase()) >= 0)\n return k.toLowerCase();\n else\n throw \"Value expected:\" + this.input.substring(start) + ' for key: ' + k;\n \n };\n };\n\n this.value = function() {\n var values = [];\n values.push(this.single_value());\n while (this.tryMatch(\"#\")) {\n this.match(\"#\");\n values.push(this.single_value());\n };\n return values.join(\"\");\n };\n\n this.key = function() {\n var start = this.pos;\n while (true) {\n if (this.pos >= this.input.length) {\n throw \"Runaway key\";\n };\n // а-яА-Я is Cyrillic\n //console.log(this.input[this.pos]);\n if (this.notKey.indexOf(this.input[this.pos]) >= 0) {\n return this.input.substring(start, this.pos);\n } else {\n this.pos++;\n \n };\n };\n };\n\n this.key_equals_value = function() {\n var key = this.key();\n if (this.tryMatch(\"=\")) {\n this.match(\"=\");\n var val = this.value();\n return [ key, val ];\n } else {\n throw \"... = value expected, equals sign missing:\"\n + this.input.substring(this.pos);\n };\n };\n\n this.key_value_list = function() {\n var kv = this.key_equals_value();\n this.currentEntry['entryTags'] = {};\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n while (this.tryMatch(\",\")) {\n this.match(\",\");\n // fixes problems with commas at the end of a list\n if (this.tryMatch(\"}\")) {\n break;\n }\n ;\n kv = this.key_equals_value();\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n };\n };\n\n this.entry_body = function(d) {\n this.currentEntry = {};\n this.currentEntry['citationKey'] = this.key();\n this.currentEntry['entryType'] = d.substring(1);\n this.match(\",\");\n this.key_value_list();\n this.entries.push(this.currentEntry);\n };\n\n this.directive = function() {\n this.match(\"@\");\n return \"@\" + this.key();\n };\n\n this.preamble = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'PREAMBLE';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.comment = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'COMMENT';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.entry = function(d) {\n this.entry_body(d);\n };\n\n this.bibtex = function() {\n while (this.matchAt()) {\n var d = this.directive();\n this.match(\"{\");\n if (d == \"@STRING\") {\n this.string();\n } else if (d == \"@PREAMBLE\") {\n this.preamble();\n } else if (d == \"@COMMENT\") {\n this.comment();\n } else {\n this.entry(d);\n }\n this.match(\"}\");\n };\n };\n };\n \n exports.toJSON = function(bibtex) {\n var b = new BibtexParser();\n b.setInput(bibtex);\n b.bibtex();\n return b.entries;\n };\n\n /* added during hackathon don't hate on me */\n exports.toBibtex = function(json) {\n var out = '';\n for ( var i in json) {\n out += \"@\" + json[i].entryType;\n out += '{';\n if (json[i].citationKey)\n out += json[i].citationKey + ', ';\n if (json[i].entry)\n out += json[i].entry ;\n if (json[i].entryTags) {\n var tags = '';\n for (var jdx in json[i].entryTags) {\n if (tags.length != 0)\n tags += ', ';\n tags += jdx + '= {' + json[i].entryTags[jdx] + '}';\n }\n out += tags;\n }\n out += '}\\n\\n';\n }\n return out;\n \n };\n\n})(typeof exports === 'undefined' ? this['bibtexParse'] = {} : exports);\n\n/* end bibtexParse */\n","import bibtexParse from \"bibtex-parse-js\";\n\nexport default function(dom, data) {\n let el = dom.querySelector('script[type=\"text/bibliography\"]');\n let citations = [];\n let bibliography = {};\n //TODO If we don't have a local element, make a request for the document.\n if (el) {\n let rawBib = el.textContent;\n let parsed = bibtexParse.toJSON(rawBib);\n if(parsed) {\n parsed.forEach(e => {\n for (var k in e.entryTags){\n var val = e.entryTags[k];\n val = val.replace(/[\\t\\n ]+/g, \" \");\n val = val.replace(/{\\\\[\"^`\\.'acu~Hvs]( )?([a-zA-Z])}/g,\n (full, x, char) => char);\n val = val.replace(/{\\\\([a-zA-Z])}/g,\n (full, char) => char);\n e.entryTags[k] = val;\n }\n bibliography[e.citationKey] = e.entryTags;\n bibliography[e.citationKey].type = e.entryType;\n });\n }\n\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach(el => {\n let key = el.getAttribute(\"key\");\n if (key) {\n let citationKeys = key.split(\",\");\n citationKeys.forEach(key => {\n if (citations.indexOf(key) == -1){\n citations.push(key);\n if (!(key in bibliography)){\n console.warn(\"No bibliography entry found for: \" + key);\n }\n }\n });\n }\n });\n }\n data.bibliography = bibliography;\n data.citations = citations;\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(new Date(+start)); while (offseti(start, step), floori(start), start < stop)\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) while (--step >= 0) while (offseti(date, 1), !test(date)) {} // eslint-disable-line no-empty\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(Math.floor(date / durationSecond) * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(Math.floor(date / durationMinute) * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute} from \"./duration\";\n\nvar hour = interval(function(date) {\n var offset = date.getTimezoneOffset() * durationMinute % durationHour;\n if (offset < 0) offset += durationHour;\n date.setTime(Math.floor((+date - offset) / durationHour) * durationHour + offset);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval\";\nimport {durationWeek} from \"./duration\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {timeDay, timeSunday, timeMonday, timeYear, utcDay, utcSunday, utcMonday, utcYear} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"S\": formatSeconds,\n \"U\": formatWeekNumberSunday,\n \"w\": formatWeekdayNumber,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"S\": formatUTCSeconds,\n \"U\": formatUTCWeekNumberSunday,\n \"w\": formatUTCWeekdayNumber,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"S\": parseSeconds,\n \"U\": parseWeekNumberSunday,\n \"w\": parseWeekdayNumber,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0);\n if (i != string.length) return null;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n var day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?:\\:?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekdayNumber(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekdayNumber(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {timeFormat} from \"d3-time-format\";\n\nexport default function(dom, data) {\n\n data.authors = data.authors || [];\n\n // paths\n data.url = \"http://distill.pub/\" + data.distillPath;\n data.githubUrl = \"https://github.com/\" + data.githubPath;\n\n // Homepage\n //data.homepage = !post.noHomepage;\n data.journal = data.journal || {};\n\n // Dates\n if (data.publishedDate){//} && data.journal) {\n data.volume = data.publishedDate.getFullYear() - 2015;\n data.issue = data.publishedDate.getMonth() + 1;\n }\n\n data.publishedDate = data.publishedDate ? data.publishedDate : new Date(\"Invalid\");\n data.updatedDate = data.updatedDate ? data.updatedDate : new Date(\"Invalid\");\n\n data.publishedDateRFC\n let RFC = timeFormat(\"%a, %d %b %Y %H:%M:%S %Z\");\n let months = [\"Jan\", \"Feb\", \"March\", \"April\", \"May\", \"June\", \"July\", \"Aug\", \"Sept\", \"Oct\", \"Nov\", \"Dec\"];\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n data.publishedDateRFC = RFC(data.publishedDate);\n data.publishedYear = data.publishedDate.getFullYear();\n data.publishedMonth = months[data.publishedDate.getMonth()];\n data.publishedDay = data.publishedDate.getDate();\n data.publishedMonthPadded = zeroPad(data.publishedDate.getMonth() + 1);\n data.publishedDayPadded = zeroPad(data.publishedDate.getDate());\n data.updatedDateRFC = RFC(data.updatedDate);\n\n if (data.authors.length > 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \", et al.\";\n } else if (data.authors.length === 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \" & \" + data.authors[1].lastName;\n } else if (data.authors.length === 1) {\n data.concatenatedAuthors = data.authors[0].lastName\n }\n\n data.bibtexAuthors = data.authors.map(function(author){\n return author.lastName + \", \" + author.firstName;\n }).join(\" and \");\n\n data.slug = data.authors.length ? data.authors[0].lastName.toLowerCase() + data.publishedYear + data.title.split(\" \")[0].toLowerCase() : \"Untitled\";\n\n}\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","import favicon from './distill-favicon.base64';\nimport escape from 'escape-html';\n\nexport default function(dom, data) {\n let head = dom.querySelector(\"head\");\n let appendHead = html => appendHtml(head, html);\n\n function meta(name, content, force) {\n if (content || force)\n appendHead(` \\n`);\n }\n\n appendHead(`\n \n \n \n \n ${data.title}\n `);\n\n appendHead(`\n \n \n \n `);\n data.authors.forEach((a) => {\n appendHtml(head, `\n `)\n });\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n // if this is a proprer article, generate Google Scholar meta data\n if (data.doiSuffix){\n appendHead(`\n \\n`);\n\n meta(\"citation_title\", data.title);\n //meta(\"citation_fulltext_html_url\", data.url);\n meta(\"citation_volume\", data.volume);\n meta(\"citation_issue\", data.issue);\n meta(\"citation_firstpage\", data.doiSuffix? `e${data.doiSuffix}` : undefined);\n meta(\"citation_doi\", data.doi);\n\n let journal = data.journal || {};\n meta(\"citation_journal_title\", journal.full_title || journal.title);\n meta(\"citation_journal_abbrev\", journal.abbrev_title);\n meta(\"citation_issn\", journal.issn);\n meta(\"citation_publisher\", journal.publisher);\n meta(\"citation_fulltext_world_readable\", \"\", true);\n\n if (data.publishedDate){\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n meta(\"citation_online_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n // Should we do something different here?\n meta(\"citation_publication_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n }\n\n (data.authors || []).forEach((a) => {\n meta(\"citation_author\", `${a.lastName}, ${a.firstName}`);\n meta(\"citation_author_institution\", a.affiliation);\n });\n\n if (data.citations) {\n data.citations.forEach(key => {\n let d = data.bibliography[key];\n if(!d) {\n console.warn(\"No bibliography data fround for \" + key)\n } else {\n meta(\"citation_reference\", citation_meta_content(data.bibliography[key]) )\n };\n });\n }\n }\n}\n\nfunction appendHtml(el, html) {\n el.innerHTML += html;\n}\n\nfunction citation_meta_content(ref){\n // Special test for arxiv\n var content = `citation_title=${ref.title};`;\n \n let name_strings = ref.author.split(\" and \").forEach(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1].trim();\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n content += `citation_author=${firsts} ${last};`;\n });\n \n if (\"year\" in ref) {\n content += `citation_publication_date=${ref.year};`;\n }\n \n var arxiv_id_search = /https?:\\/\\/arxiv\\.org\\/pdf\\/([0-9]*\\.[0-9]*)\\.pdf/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /https?:\\/\\/arxiv\\.org\\/abs\\/([0-9]*\\.[0-9]*)/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /arXiv preprint arXiv:([0-9]*\\.[0-9]*)/.exec(ref.journal);\n if (arxiv_id_search && arxiv_id_search[1]){\n content += `citation_arxiv_id=${arxiv_id_search[1]};`;\n return content;\n }\n if (\"journal\" in ref){\n content += `citation_journal_title=${ref.journal};`;\n }\n if (\"volume\" in ref) {\n content += `citation_volume=${ref.volume};`;\n }\n if (\"issue\" in ref || \"number\" in ref){\n content += `citation_number=${ref.issue || ref.number};`;\n }\n /*content += `citation_first_page=${};`;\n content += `citation_publication_date=${};`;*/\n return content;\n}\n","const html = `\n\n
    This article is a draft, awaiting review for publication in Distill
    \n`;\n\nexport default function(dom, data) {\n let banner = dom.createElement(\"dt-banner\");\n banner.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(banner, b.firstChild);\n banner.addEventListener(\"click\", function() {\n banner.style.display = \"none\";\n });\n}\n","/*!\n * mustache.js - Logic-less {{mustache}} templates with JavaScript\n * http://github.com/janl/mustache.js\n */\n\n/*global define: false Mustache: true*/\n\n(function defineMustache (global, factory) {\n if (typeof exports === 'object' && exports && typeof exports.nodeName !== 'string') {\n factory(exports); // CommonJS\n } else if (typeof define === 'function' && define.amd) {\n define(['exports'], factory); // AMD\n } else {\n global.Mustache = {};\n factory(global.Mustache); // script, wsh, asp\n }\n}(this, function mustacheFactory (mustache) {\n\n var objectToString = Object.prototype.toString;\n var isArray = Array.isArray || function isArrayPolyfill (object) {\n return objectToString.call(object) === '[object Array]';\n };\n\n function isFunction (object) {\n return typeof object === 'function';\n }\n\n /**\n * More correct typeof string handling array\n * which normally returns typeof 'object'\n */\n function typeStr (obj) {\n return isArray(obj) ? 'array' : typeof obj;\n }\n\n function escapeRegExp (string) {\n return string.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n }\n\n /**\n * Null safe way of checking whether or not an object,\n * including its prototype, has a given property\n */\n function hasProperty (obj, propName) {\n return obj != null && typeof obj === 'object' && (propName in obj);\n }\n\n // Workaround for https://issues.apache.org/jira/browse/COUCHDB-577\n // See https://github.com/janl/mustache.js/issues/189\n var regExpTest = RegExp.prototype.test;\n function testRegExp (re, string) {\n return regExpTest.call(re, string);\n }\n\n var nonSpaceRe = /\\S/;\n function isWhitespace (string) {\n return !testRegExp(nonSpaceRe, string);\n }\n\n var entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n function escapeHtml (string) {\n return String(string).replace(/[&<>\"'`=\\/]/g, function fromEntityMap (s) {\n return entityMap[s];\n });\n }\n\n var whiteRe = /\\s*/;\n var spaceRe = /\\s+/;\n var equalsRe = /\\s*=/;\n var curlyRe = /\\s*\\}/;\n var tagRe = /#|\\^|\\/|>|\\{|&|=|!/;\n\n /**\n * Breaks up the given `template` string into a tree of tokens. If the `tags`\n * argument is given here it must be an array with two string values: the\n * opening and closing tags used in the template (e.g. [ \"<%\", \"%>\" ]). Of\n * course, the default is to use mustaches (i.e. mustache.tags).\n *\n * A token is an array with at least 4 elements. The first element is the\n * mustache symbol that was used inside the tag, e.g. \"#\" or \"&\". If the tag\n * did not contain a symbol (i.e. {{myValue}}) this element is \"name\". For\n * all text that appears outside a symbol this element is \"text\".\n *\n * The second element of a token is its \"value\". For mustache tags this is\n * whatever else was inside the tag besides the opening symbol. For text tokens\n * this is the text itself.\n *\n * The third and fourth elements of the token are the start and end indices,\n * respectively, of the token in the original template.\n *\n * Tokens that are the root node of a subtree contain two more elements: 1) an\n * array of tokens in the subtree and 2) the index in the original template at\n * which the closing tag for that section begins.\n */\n function parseTemplate (template, tags) {\n if (!template)\n return [];\n\n var sections = []; // Stack to hold section tokens\n var tokens = []; // Buffer to hold the tokens\n var spaces = []; // Indices of whitespace tokens on the current line\n var hasTag = false; // Is there a {{tag}} on the current line?\n var nonSpace = false; // Is there a non-space char on the current line?\n\n // Strips all whitespace tokens array for the current line\n // if there was a {{#tag}} on it and otherwise only space.\n function stripSpace () {\n if (hasTag && !nonSpace) {\n while (spaces.length)\n delete tokens[spaces.pop()];\n } else {\n spaces = [];\n }\n\n hasTag = false;\n nonSpace = false;\n }\n\n var openingTagRe, closingTagRe, closingCurlyRe;\n function compileTags (tagsToCompile) {\n if (typeof tagsToCompile === 'string')\n tagsToCompile = tagsToCompile.split(spaceRe, 2);\n\n if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)\n throw new Error('Invalid tags: ' + tagsToCompile);\n\n openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\\\s*');\n closingTagRe = new RegExp('\\\\s*' + escapeRegExp(tagsToCompile[1]));\n closingCurlyRe = new RegExp('\\\\s*' + escapeRegExp('}' + tagsToCompile[1]));\n }\n\n compileTags(tags || mustache.tags);\n\n var scanner = new Scanner(template);\n\n var start, type, value, chr, token, openSection;\n while (!scanner.eos()) {\n start = scanner.pos;\n\n // Match any text between tags.\n value = scanner.scanUntil(openingTagRe);\n\n if (value) {\n for (var i = 0, valueLength = value.length; i < valueLength; ++i) {\n chr = value.charAt(i);\n\n if (isWhitespace(chr)) {\n spaces.push(tokens.length);\n } else {\n nonSpace = true;\n }\n\n tokens.push([ 'text', chr, start, start + 1 ]);\n start += 1;\n\n // Check for whitespace on the current line.\n if (chr === '\\n')\n stripSpace();\n }\n }\n\n // Match the opening tag.\n if (!scanner.scan(openingTagRe))\n break;\n\n hasTag = true;\n\n // Get the tag type.\n type = scanner.scan(tagRe) || 'name';\n scanner.scan(whiteRe);\n\n // Get the tag value.\n if (type === '=') {\n value = scanner.scanUntil(equalsRe);\n scanner.scan(equalsRe);\n scanner.scanUntil(closingTagRe);\n } else if (type === '{') {\n value = scanner.scanUntil(closingCurlyRe);\n scanner.scan(curlyRe);\n scanner.scanUntil(closingTagRe);\n type = '&';\n } else {\n value = scanner.scanUntil(closingTagRe);\n }\n\n // Match the closing tag.\n if (!scanner.scan(closingTagRe))\n throw new Error('Unclosed tag at ' + scanner.pos);\n\n token = [ type, value, start, scanner.pos ];\n tokens.push(token);\n\n if (type === '#' || type === '^') {\n sections.push(token);\n } else if (type === '/') {\n // Check section nesting.\n openSection = sections.pop();\n\n if (!openSection)\n throw new Error('Unopened section \"' + value + '\" at ' + start);\n\n if (openSection[1] !== value)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + start);\n } else if (type === 'name' || type === '{' || type === '&') {\n nonSpace = true;\n } else if (type === '=') {\n // Set the tags for the next time around.\n compileTags(value);\n }\n }\n\n // Make sure there are no open sections when we're done.\n openSection = sections.pop();\n\n if (openSection)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + scanner.pos);\n\n return nestTokens(squashTokens(tokens));\n }\n\n /**\n * Combines the values of consecutive text tokens in the given `tokens` array\n * to a single token.\n */\n function squashTokens (tokens) {\n var squashedTokens = [];\n\n var token, lastToken;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n if (token) {\n if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {\n lastToken[1] += token[1];\n lastToken[3] = token[3];\n } else {\n squashedTokens.push(token);\n lastToken = token;\n }\n }\n }\n\n return squashedTokens;\n }\n\n /**\n * Forms the given array of `tokens` into a nested tree structure where\n * tokens that represent a section have two additional items: 1) an array of\n * all tokens that appear in that section and 2) the index in the original\n * template that represents the end of that section.\n */\n function nestTokens (tokens) {\n var nestedTokens = [];\n var collector = nestedTokens;\n var sections = [];\n\n var token, section;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n switch (token[0]) {\n case '#':\n case '^':\n collector.push(token);\n sections.push(token);\n collector = token[4] = [];\n break;\n case '/':\n section = sections.pop();\n section[5] = token[2];\n collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;\n break;\n default:\n collector.push(token);\n }\n }\n\n return nestedTokens;\n }\n\n /**\n * A simple string scanner that is used by the template parser to find\n * tokens in template strings.\n */\n function Scanner (string) {\n this.string = string;\n this.tail = string;\n this.pos = 0;\n }\n\n /**\n * Returns `true` if the tail is empty (end of string).\n */\n Scanner.prototype.eos = function eos () {\n return this.tail === '';\n };\n\n /**\n * Tries to match the given regular expression at the current position.\n * Returns the matched text if it can match, the empty string otherwise.\n */\n Scanner.prototype.scan = function scan (re) {\n var match = this.tail.match(re);\n\n if (!match || match.index !== 0)\n return '';\n\n var string = match[0];\n\n this.tail = this.tail.substring(string.length);\n this.pos += string.length;\n\n return string;\n };\n\n /**\n * Skips all text until the given regular expression can be matched. Returns\n * the skipped string, which is the entire tail if no match can be made.\n */\n Scanner.prototype.scanUntil = function scanUntil (re) {\n var index = this.tail.search(re), match;\n\n switch (index) {\n case -1:\n match = this.tail;\n this.tail = '';\n break;\n case 0:\n match = '';\n break;\n default:\n match = this.tail.substring(0, index);\n this.tail = this.tail.substring(index);\n }\n\n this.pos += match.length;\n\n return match;\n };\n\n /**\n * Represents a rendering context by wrapping a view object and\n * maintaining a reference to the parent context.\n */\n function Context (view, parentContext) {\n this.view = view;\n this.cache = { '.': this.view };\n this.parent = parentContext;\n }\n\n /**\n * Creates a new context using the given view with this context\n * as the parent.\n */\n Context.prototype.push = function push (view) {\n return new Context(view, this);\n };\n\n /**\n * Returns the value of the given name in this context, traversing\n * up the context hierarchy if the value is absent in this context's view.\n */\n Context.prototype.lookup = function lookup (name) {\n var cache = this.cache;\n\n var value;\n if (cache.hasOwnProperty(name)) {\n value = cache[name];\n } else {\n var context = this, names, index, lookupHit = false;\n\n while (context) {\n if (name.indexOf('.') > 0) {\n value = context.view;\n names = name.split('.');\n index = 0;\n\n /**\n * Using the dot notion path in `name`, we descend through the\n * nested objects.\n *\n * To be certain that the lookup has been successful, we have to\n * check if the last object in the path actually has the property\n * we are looking for. We store the result in `lookupHit`.\n *\n * This is specially necessary for when the value has been set to\n * `undefined` and we want to avoid looking up parent contexts.\n **/\n while (value != null && index < names.length) {\n if (index === names.length - 1)\n lookupHit = hasProperty(value, names[index]);\n\n value = value[names[index++]];\n }\n } else {\n value = context.view[name];\n lookupHit = hasProperty(context.view, name);\n }\n\n if (lookupHit)\n break;\n\n context = context.parent;\n }\n\n cache[name] = value;\n }\n\n if (isFunction(value))\n value = value.call(this.view);\n\n return value;\n };\n\n /**\n * A Writer knows how to take a stream of tokens and render them to a\n * string, given a context. It also maintains a cache of templates to\n * avoid the need to parse the same template twice.\n */\n function Writer () {\n this.cache = {};\n }\n\n /**\n * Clears all cached templates in this writer.\n */\n Writer.prototype.clearCache = function clearCache () {\n this.cache = {};\n };\n\n /**\n * Parses and caches the given `template` and returns the array of tokens\n * that is generated from the parse.\n */\n Writer.prototype.parse = function parse (template, tags) {\n var cache = this.cache;\n var tokens = cache[template];\n\n if (tokens == null)\n tokens = cache[template] = parseTemplate(template, tags);\n\n return tokens;\n };\n\n /**\n * High-level method that is used to render the given `template` with\n * the given `view`.\n *\n * The optional `partials` argument may be an object that contains the\n * names and templates of partials that are used in the template. It may\n * also be a function that is used to load partial templates on the fly\n * that takes a single argument: the name of the partial.\n */\n Writer.prototype.render = function render (template, view, partials) {\n var tokens = this.parse(template);\n var context = (view instanceof Context) ? view : new Context(view);\n return this.renderTokens(tokens, context, partials, template);\n };\n\n /**\n * Low-level method that renders the given array of `tokens` using\n * the given `context` and `partials`.\n *\n * Note: The `originalTemplate` is only ever used to extract the portion\n * of the original template that was contained in a higher-order section.\n * If the template doesn't use higher-order sections, this argument may\n * be omitted.\n */\n Writer.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate) {\n var buffer = '';\n\n var token, symbol, value;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n value = undefined;\n token = tokens[i];\n symbol = token[0];\n\n if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate);\n else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate);\n else if (symbol === '>') value = this.renderPartial(token, context, partials, originalTemplate);\n else if (symbol === '&') value = this.unescapedValue(token, context);\n else if (symbol === 'name') value = this.escapedValue(token, context);\n else if (symbol === 'text') value = this.rawValue(token);\n\n if (value !== undefined)\n buffer += value;\n }\n\n return buffer;\n };\n\n Writer.prototype.renderSection = function renderSection (token, context, partials, originalTemplate) {\n var self = this;\n var buffer = '';\n var value = context.lookup(token[1]);\n\n // This function is used to render an arbitrary template\n // in the current context by higher-order sections.\n function subRender (template) {\n return self.render(template, context, partials);\n }\n\n if (!value) return;\n\n if (isArray(value)) {\n for (var j = 0, valueLength = value.length; j < valueLength; ++j) {\n buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate);\n }\n } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {\n buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate);\n } else if (isFunction(value)) {\n if (typeof originalTemplate !== 'string')\n throw new Error('Cannot use higher-order sections without the original template');\n\n // Extract the portion of the original template that the section contains.\n value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);\n\n if (value != null)\n buffer += value;\n } else {\n buffer += this.renderTokens(token[4], context, partials, originalTemplate);\n }\n return buffer;\n };\n\n Writer.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate) {\n var value = context.lookup(token[1]);\n\n // Use JavaScript's definition of falsy. Include empty arrays.\n // See https://github.com/janl/mustache.js/issues/186\n if (!value || (isArray(value) && value.length === 0))\n return this.renderTokens(token[4], context, partials, originalTemplate);\n };\n\n Writer.prototype.renderPartial = function renderPartial (token, context, partials) {\n if (!partials) return;\n\n var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\n if (value != null)\n return this.renderTokens(this.parse(value), context, partials, value);\n };\n\n Writer.prototype.unescapedValue = function unescapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return value;\n };\n\n Writer.prototype.escapedValue = function escapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return mustache.escape(value);\n };\n\n Writer.prototype.rawValue = function rawValue (token) {\n return token[1];\n };\n\n mustache.name = 'mustache.js';\n mustache.version = '2.3.0';\n mustache.tags = [ '{{', '}}' ];\n\n // All high-level mustache.* functions use this writer.\n var defaultWriter = new Writer();\n\n /**\n * Clears all cached templates in the default writer.\n */\n mustache.clearCache = function clearCache () {\n return defaultWriter.clearCache();\n };\n\n /**\n * Parses and caches the given template in the default writer and returns the\n * array of tokens it contains. Doing this ahead of time avoids the need to\n * parse templates on the fly as they are rendered.\n */\n mustache.parse = function parse (template, tags) {\n return defaultWriter.parse(template, tags);\n };\n\n /**\n * Renders the `template` with the given `view` and `partials` using the\n * default writer.\n */\n mustache.render = function render (template, view, partials) {\n if (typeof template !== 'string') {\n throw new TypeError('Invalid template! Template should be a \"string\" ' +\n 'but \"' + typeStr(template) + '\" was given as the first ' +\n 'argument for mustache#render(template, view, partials)');\n }\n\n return defaultWriter.render(template, view, partials);\n };\n\n // This is here for backwards compatibility with 0.4.x.,\n /*eslint-disable */ // eslint wants camel cased function name\n mustache.to_html = function to_html (template, view, partials, send) {\n /*eslint-enable*/\n\n var result = mustache.render(template, view, partials);\n\n if (isFunction(send)) {\n send(result);\n } else {\n return result;\n }\n };\n\n // Export the escaping function so that the user may override it.\n // See https://github.com/janl/mustache.js/issues/244\n mustache.escape = escapeHtml;\n\n // Export these mainly for testing, but also for advanced usage.\n mustache.Scanner = Scanner;\n mustache.Context = Context;\n mustache.Writer = Writer;\n\n return mustache;\n}));\n","import mustache from \"mustache\";\n\nconst html = `\n\n\n`;\n\nconst template = `\n
    \n
    \n {{#authors}}\n
    \n {{#personalURL}}\n {{name}}\n {{/personalURL}}\n {{^personalURL}}\n
    {{name}}
    \n {{/personalURL}}\n {{#affiliation}}\n {{#affiliationURL}}\n {{affiliation}}\n {{/affiliationURL}}\n {{^affiliationURL}}\n
    {{affiliation}}
    \n {{/affiliationURL}}\n {{/affiliation}}\n
    \n {{/authors}}\n
    \n
    \n
    {{publishedMonth}}. {{publishedDay}}
    \n
    {{publishedYear}}
    \n
    \n \n
    Citation:
    \n
    {{concatenatedAuthors}}, {{publishedYear}}
    \n
    \n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-byline');\n if (el) {\n el.innerHTML = html + mustache.render(template, data);\n }\n}\n","const html = `\n\n\n
    \n

    References

    \n \n

    Errors, Reuse, and Citation

    \n

    If you see mistakes or want to suggest changes, please create an issue on GitHub.

    \n

    Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on GitHub. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: “Figure from …”.

    \n

    For attribution in academic contexts, please cite this work as

    \n
    \n  

    BibTeX citation

    \n
    \n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-appendix')\n if (el) {\n let oldHtml = el.innerHTML;\n el.innerHTML = html;\n let div = el.querySelector(\"div.l-body\")\n\n if (dom.querySelector(\"dt-fn\")) {\n div.innerHTML = `

    Footnotes

    ` + div.innerHTML;\n }\n\n div.innerHTML = oldHtml + div.innerHTML;\n if (data.githubCompareUpdatesUrl) {\n div.innerHTML = `

    Updates

    View all changes to this article since it was first published.

    ` + div.innerHTML;\n }\n\n el.querySelector(\"a.github\").setAttribute(\"href\", data.githubUrl);\n el.querySelector(\"a.github-issue\").setAttribute(\"href\", data.githubUrl + \"/issues/new\");\n el.querySelector(\".citation.short\").textContent = data.concatenatedAuthors + \", \" + '\"' + data.title + '\", Distill, ' + data.publishedYear + \".\";\n var bibtex = \"@article{\" + data.slug + \",\\n\";\n bibtex += \" author = {\" + data.bibtexAuthors + \"},\\n\";\n bibtex += \" title = {\" + data.title + \"},\\n\";\n bibtex += \" journal = {Distill},\\n\";\n bibtex += \" year = {\" + data.publishedYear + \"},\\n\";\n bibtex += \" note = {\" + data.url + \"}\\n\";\n bibtex += \"}\";\n el.querySelector(\".citation.long\").textContent = bibtex;\n }\n\n}\n","export default function(dom, data) {\n let css = `\n dt-cite {\n color: hsla(206, 90%, 20%, 0.7);\n }\n dt-cite .citation-number {\n cursor: default;\n white-space: nowrap;\n font-family: -apple-system, BlinkMacSystemFont, \"Roboto\", Helvetica, sans-serif;\n font-size: 75%;\n color: hsla(206, 90%, 20%, 0.7);\n display: inline-block;\n line-height: 1.1em;\n text-align: center;\n position: relative;\n top: -2px;\n margin: 0 2px;\n }\n figcaption dt-cite .citation-number {\n font-size: 11px;\n font-weight: normal;\n top: -2px;\n line-height: 1em;\n }\n `;\n\n let style = dom.createElement(\"style\");\n style.textContent = css;\n dom.querySelector(\"body\").appendChild(style);\n\n let citations = data.citations;\n /*if (data.citations) {\n citations = Object.keys(data.citations).map(c => data.citations[c]);\n citations.sort((a, b) => {\n return a.author.localeCompare(b.author);\n });\n }*/\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach((el,n) => {\n var key = el.getAttribute(\"key\");\n if (key) {\n var keys = key.split(\",\");\n var cite_string = inline_cite_short(keys);\n var cite_hover_str = \"\";\n keys.map((key,n) => {\n if (n>0) cite_hover_str += \"

    \";\n cite_hover_str += hover_cite(data.bibliography[key]);\n });\n cite_hover_str = cite_hover_str.replace(/\"/g, \"'\")\n var orig_string = el.innerHTML;\n if (orig_string != \"\") orig_string += \" \";\n el.innerHTML = `${orig_string}${cite_string}`;\n }\n });\n\n let bibEl = dom.querySelector(\"dt-bibliography\");\n if (bibEl) {\n let ol = dom.createElement(\"ol\");\n citations.forEach(key => {\n let el = dom.createElement(\"li\");\n el.innerHTML = bibliography_cite(data.bibliography[key]);\n ol.appendChild(el);\n })\n bibEl.appendChild(ol);\n }\n\n function inline_cite_short(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var n = data.citations.indexOf(key)+1;\n return \"\"+n;\n } else {\n return \"?\";\n }\n }\n return \"[\"+keys.map(cite_string).join(\", \")+\"]\";\n }\n\n function inline_cite_long(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var ent = data.bibliography[key];\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var year = ent.year;\n if (names.length == 1) return names[0] + \", \" + year;\n if (names.length == 2) return names[0] + \" & \" + names[1] + \", \" + year;\n if (names.length > 2) return names[0] + \", et al., \" + year;\n } else {\n return \"?\";\n }\n }\n return keys.map(cite_string).join(\", \");\n }\n\n function author_string(ent, template, sep, finalSep){\n var names = ent.author.split(\" and \");\n let name_strings = names.map(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1];\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n var initials = \"\";\n if (firsts != undefined) {\n initials = firsts.trim().split(\" \").map(s => s.trim()[0]);\n initials = initials.join(\".\")+\".\";\n }\n return template.replace(\"${F}\", firsts)\n .replace(\"${L}\", last)\n .replace(\"${I}\", initials);\n });\n if (names.length > 1) {\n var str = name_strings.slice(0, names.length-1).join(sep);\n str += (finalSep || sep) + name_strings[names.length-1];\n return str;\n } else {\n return name_strings[0];\n }\n }\n\n function venue_string(ent) {\n var cite = (ent.journal || ent.booktitle || \"\")\n if (\"volume\" in ent){\n var issue = ent.issue || ent.number;\n issue = (issue != undefined)? \"(\"+issue+\")\" : \"\";\n cite += \", Vol \" + ent.volume + issue;\n }\n if (\"pages\" in ent){\n cite += \", pp. \" + ent.pages\n }\n if (cite != \"\") cite += \". \"\n if (\"publisher\" in ent){\n cite += ent.publisher;\n if (cite[cite.length-1] != \".\") cite += \".\";\n }\n return cite;\n }\n\n function link_string(ent){\n if (\"url\" in ent){\n var url = ent.url;\n var arxiv_match = (/arxiv\\.org\\/abs\\/([0-9\\.]*)/).exec(url);\n if (arxiv_match != null){\n url = `http://arxiv.org/pdf/${arxiv_match[1]}.pdf`;\n }\n\n if (url.slice(-4) == \".pdf\"){\n var label = \"PDF\";\n } else if (url.slice(-5) == \".html\") {\n var label = \"HTML\";\n }\n return `  [${label||\"link\"}]`;\n }/* else if (\"doi\" in ent){\n return `  [DOI]`;\n }*/ else {\n return \"\";\n }\n }\n function doi_string(ent, new_line){\n if (\"doi\" in ent) {\n return `${new_line?\"
    \":\"\"} DOI: ${ent.doi}`;\n } else {\n return \"\";\n }\n }\n\n function bibliography_cite(ent, fancy){\n if (ent){\n var cite = \"\" + ent.title + \" \"\n cite += link_string(ent) + \"
    \";\n cite += author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += venue_string(ent);\n cite += doi_string(ent);\n return cite\n /*var cite = author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += \"\" + ent.title + \". \";\n cite += venue_string(ent);\n cite += doi_string(ent);\n cite += link_string(ent);\n return cite*/\n } else {\n return \"?\";\n }\n }\n\n function hover_cite(ent){\n if (ent){\n var cite = \"\";\n cite += \"\" + ent.title + \"\";\n cite += link_string(ent);\n cite += \"
    \"\n\n var a_str = author_string(ent, \"${I} ${L}\", \", \") + \".\";\n var v_str = venue_string(ent).trim() + \" \" + ent.year + \". \" + doi_string(ent, true);\n\n if ((a_str+v_str).length < Math.min(40, ent.title.length)) {\n cite += a_str + \" \" + v_str;\n } else {\n cite += a_str + \"
    \" + v_str;\n }\n return cite;\n } else {\n return \"?\";\n }\n }\n\n\n //https://scholar.google.com/scholar?q=allintitle%3ADocument+author%3Aolah\n function get_GS_URL(ent){\n if (ent){\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var title = ent.title.split(\" \")//.replace(/[,:]/, \"\")\n var url = \"http://search.labs.crossref.org/dois?\"//\"\"https://scholar.google.com/scholar?\"\n url += uris({q: names.join(\" \") + \" \" + title.join(\" \")})\n }\n\n }\n}\n","export default function(dom, data) {\n\n var fnTags = [].slice.apply(dom.querySelectorAll(\"dt-fn\"));\n var fnContent = [];\n fnTags.forEach((el,n) => {\n var content = el.innerHTML;\n fnContent.push(content);\n n = (n+1)+\"\";\n var key = \"fn-\"+n;\n var escaped_content = content.replace(/\"/g, \"'\");\n el.innerHTML = `${n}`;\n });\n\n let fnList = dom.querySelector(\"dt-fn-list\");\n if (fnList) {\n let ol = dom.createElement(\"ol\");\n fnContent.forEach(content => {\n let el = dom.createElement(\"li\");\n el.innerHTML = content;\n ol.appendChild(el);\n })\n fnList.appendChild(ol);\n }\n\n}\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n */\n\n;(function() {\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^( *[-*_]){3,} *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,\n nptable: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n blockquote: /^( *>[^\\n]+(\\n(?!def)[^\\n]+)*\\n*)+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n table: noop,\n paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,\n text: /^[^\\n]+/\n};\n\nblock.bullet = /(?:[*+-]|\\d+\\.)/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = replace(block.item, 'gm')\n (/bull/g, block.bullet)\n ();\n\nblock.list = replace(block.list)\n (/bull/g, block.bullet)\n ('hr', '\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))')\n ('def', '\\\\n+(?=' + block.def.source + ')')\n ();\n\nblock.blockquote = replace(block.blockquote)\n ('def', block.def)\n ();\n\nblock._tag = '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'\n + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'\n + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|[^\\\\w\\\\s@]*@)\\\\b';\n\nblock.html = replace(block.html)\n ('comment', //)\n ('closed', /<(tag)[\\s\\S]+?<\\/\\1>/)\n ('closing', /])*?>/)\n (/tag/g, block._tag)\n ();\n\nblock.paragraph = replace(block.paragraph)\n ('hr', block.hr)\n ('heading', block.heading)\n ('lheading', block.lheading)\n ('blockquote', block.blockquote)\n ('tag', '<' + block._tag)\n ('def', block.def)\n ();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]*?)\\s*\\1 *(?:\\n+|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = replace(block.paragraph)\n ('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n ();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top, bq) {\n var src = src.replace(/^ +$/gm, '')\n , next\n , loose\n , cap\n , bull\n , b\n , item\n , space\n , i\n , l;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic\n ? cap.replace(/\\n+$/, '')\n : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top, true);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n\n this.tokens.push({\n type: 'list_start',\n ordered: bull.length > 1\n });\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n this.tokens.push({\n type: loose\n ? 'loose_item_start'\n : 'list_item_start'\n });\n\n // Recurse.\n this.token(item, false, bq);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if ((!bq && top) && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.links[cap[1].toLowerCase()] = {\n href: cap[2],\n title: cap[3]\n };\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i]\n .replace(/^ *\\| *| *\\| *$/g, '')\n .split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n autolink: /^<([^ >]+(@|:\\/)[^ >]+)>/,\n url: noop,\n tag: /^|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^\\b_((?:[^_]|__)+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n code: /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n text: /^[\\s\\S]+?(?=[\\\\?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\ninline.link = replace(inline.link)\n ('inside', inline._inside)\n ('href', inline._href)\n ();\n\ninline.reflink = replace(inline.reflink)\n ('inside', inline._inside)\n ();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: replace(inline.escape)('])', '~|])')(),\n url: /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n text: replace(inline.text)\n (']|', '~]|')\n ('|', '|https?://|')\n ()\n});\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: replace(inline.br)('{2,}', '*')(),\n text: replace(inline.gfm.text)('{2,}', '*')()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer;\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new\n Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n var out = ''\n , link\n , text\n , href\n , cap;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += cap[1];\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = cap[1].charAt(6) === ':'\n ? this.mangle(cap[1].substring(7))\n : this.mangle(cap[1]);\n href = this.mangle('mailto:') + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n src = src.substring(cap[0].length);\n text = escape(cap[1]);\n href = text;\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^/i.test(cap[0])) {\n this.inLink = false;\n }\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0]\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out += this.outputLink(cap, {\n href: cap[2],\n title: cap[3]\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2], true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = escape(link.href)\n , title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = ''\n , l = text.length\n , i = 0\n , ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || {};\n}\n\nRenderer.prototype.code = function(code, lang, escaped) {\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '\\n
    ';\n }\n\n return '
    '\n    + (escaped ? code : escape(code, true))\n    + '\\n
    \\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '
    \\n' + quote + '
    \\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw) {\n return ''\n + text\n + '\\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n};\n\nRenderer.prototype.list = function(body, ordered) {\n var type = ordered ? 'ol' : 'ul';\n return '<' + type + '>\\n' + body + '\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '
  • ' + text + '
  • \\n';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '

    ' + text + '

    \\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + '\\n'\n + body\n + '\\n'\n + '
    \\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '\\n' + content + '\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' style=\"text-align:' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.em = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? '
    ' : '
    ';\n};\n\nRenderer.prototype.del = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n if (this.options.sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return '';\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0) {\n return '';\n }\n }\n var out = '
    ';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n var out = '\"'' : '>';\n return out;\n};\n\nRenderer.prototype.text = function(text) {\n return text;\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer;\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options, renderer) {\n var parser = new Parser(options, renderer);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options, this.renderer);\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n this.token.text);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = ''\n , body = ''\n , i\n , row\n , cell\n , flags\n , j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n flags = { header: true, align: this.token.align[i] };\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n var body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n var body = ''\n , ordered = this.token.ordered;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered);\n }\n case 'list_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'loose_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'html': {\n var html = !this.token.pre && !this.options.pedantic\n ? this.inline.output(this.token.text)\n : this.token.text;\n return this.renderer.html(html);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n }\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n return html\n .replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\nfunction unescape(html) {\n\t// explicitly match decimal, hex, and named HTML entities \n return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/g, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction replace(regex, opt) {\n regex = regex.source;\n opt = opt || '';\n return function self(name, val) {\n if (!name) return new RegExp(regex, opt);\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return self;\n };\n}\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1\n , target\n , key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n\n var highlight = opt.highlight\n , tokens\n , pending\n , i = 0;\n\n try {\n tokens = Lexer.lex(src, opt)\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/chjj/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occured:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n sanitizer: null,\n mangle: true,\n smartLists: false,\n silent: false,\n highlight: null,\n langPrefix: 'lang-',\n smartypants: false,\n headerPrefix: '',\n renderer: new Renderer,\n xhtml: false\n};\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.parse = marked;\n\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n this.marked = marked;\n}\n\n}).call(function() {\n return this || (typeof window !== 'undefined' ? window : global);\n}());\n","import marked from 'marked';\n\nmarked.setOptions({\n gfm: true,\n smartypants: true\n});\n\nexport default function(dom, data) {\n let markdownElements = [].slice.call(dom.querySelectorAll('[markdown]'));\n markdownElements.forEach(el => {\n let content = el.innerHTML;\n // Set default indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n\n el.innerHTML = marked(content);\n });\n}\n","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = _self.Prism = {\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/ text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\tbreak tokenloop;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t delNum = 1;\n\n\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t to = match.index + match[0].length,\n\t\t\t\t\t\t k = i,\n\t\t\t\t\t\t p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && p < to; ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t match = match[0].slice(lookbehindLength),\n\t\t\t\t\t to = from + match.length,\n\t\t\t\t\t before = str.slice(0, from),\n\t\t\t\t\t after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (env.type == 'comment') {\n\t\tenv.attributes['spellcheck'] = 'true';\n\t}\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n \t// In worker\n\t_self.addEventListener('message', function(evt) {\n\t\tvar message = JSON.parse(evt.data),\n\t\t lang = message.language,\n\t\t code = message.code,\n\t\t immediateClose = message.immediateClose;\n\n\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\tif (immediateClose) {\n\t\t\t_self.close();\n\t\t}\n\t}, false);\n\n\treturn _self.Prism;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (document.addEventListener && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': //,\n\t'prolog': /<\\?[\\w\\W]+?\\?>/,\n\t'doctype': //i,\n\t'cdata': //i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\w\\W])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:('|\")[\\w\\W]*?(\\1)|[^\\s>]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /[=>\"']/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\w\\W]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^\\{\\}\\s][^\\{\\};]*?(?=\\s*\\{)/,\n\t'string': {\n\t\tpattern: /(\"|')(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'property': /(\\b|\\B)[\\w-]+(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|').*?\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\w\\W]*?\\*\\//,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[a-z0-9_\\.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /(\\.|\\\\)/\n\t\t}\n\t},\n\t'keyword': /\\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(0x[\\dA-Fa-f]+|0b[01]+|0o[0-7]+|\\d*\\.?\\d+([Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*(?=\\()/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*\\*?|\\/|~|\\^|%|\\.{3}/\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[.+?]|\\\\.|[^/\\\\\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\\\\\|\\\\?[^\\\\])*?`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript'\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tif(Array.prototype.forEach) { // Check to prevent error in IE8\n\t\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\t\tvar language, parent = pre;\n\t\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\t\tparent = parent.parentNode;\n\t\t\t\t}\n\n\t\t\t\tif (parent) {\n\t\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t\t}\n\n\t\t\t\tif (!language) {\n\t\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t\t}\n\n\t\t\t\tvar code = document.createElement('code');\n\t\t\t\tcode.className = 'language-' + language;\n\n\t\t\t\tpre.textContent = '';\n\n\t\t\t\tcode.textContent = 'Loading…';\n\n\t\t\t\tpre.appendChild(code);\n\n\t\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\t\txhr.open('GET', src, true);\n\n\t\t\t\txhr.onreadystatechange = function () {\n\t\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\txhr.send(null);\n\t\t\t});\n\t\t}\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\n})();\n","import Prism from \"prismjs\";\n\nexport default function(dom, data) {\n let codeElements = [].slice.call(dom.querySelectorAll(\"dt-code\"));\n codeElements.forEach(el => {\n let content = el.textContent;\n el.innerHTML = \"\";\n let language = el.getAttribute(\"language\");\n let c = dom.createElement(\"code\");\n if (el.getAttribute(\"block\") === \"\") {\n // Let's normalize the tab indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n let p = dom.createElement(\"pre\");\n p.appendChild(c);\n el.appendChild(p);\n } else {\n el.appendChild(c);\n }\n let highlighted = content;\n if (Prism.languages[language]) {\n c.setAttribute(\"class\", \"language-\" + language);\n highlighted = Prism.highlight(content, Prism.languages[language]);\n }\n c.innerHTML = highlighted;\n });\n}\n","export default function(dom, data) {\n\n var textNodes = dom.createTreeWalker(\n dom.body,\n dom.defaultView.NodeFilter.SHOW_TEXT\n );\n while (textNodes.nextNode()) {\n var n = textNodes.currentNode,\n text = n.nodeValue;\n if (text && acceptNode(n)) {\n text = quotes(text);\n text = punctuation(text);\n n.nodeValue = text;\n }\n }\n}\n\nfunction acceptNode(node) {\n var parent = node.parentElement;\n var isMath = (parent && parent.getAttribute && parent.getAttribute(\"class\")) ? parent.getAttribute(\"class\").includes(\"katex\") || parent.getAttribute(\"class\").includes(\"MathJax\") : false;\n return parent &&\n parent.nodeName !== \"SCRIPT\" &&\n parent.nodeName !== \"STYLE\" &&\n parent.nodeName !== \"CODE\" &&\n parent.nodeName !== \"PRE\" &&\n parent.nodeName !== \"SPAN\" &&\n parent.nodeName !== \"DT-HEADER\" &&\n parent.nodeName !== \"DT-BYLINE\" &&\n parent.nodeName !== \"DT-MATH\" &&\n parent.nodeName !== \"DT-CODE\" &&\n parent.nodeName !== \"DT-BIBLIOGRAPHY\" &&\n parent.nodeName !== \"DT-FOOTER\" &&\n parent.nodeType !== 8 && //comment nodes\n !isMath;\n}\n\n\n/*!\n * typeset - Typesetting for the web\n * @version v0.1.6\n * @link https://github.com/davidmerfield/Typeset.js\n * @author David Merfield\n */\n // which has a CC0 license\n // http://creativecommons.org/publicdomain/zero/1.0/\n\n\nfunction punctuation(text){\n\n // Dashes\n text = text.replace(/--/g, '\\u2014');\n text = text.replace(/ \\u2014 /g,\"\\u2009\\u2014\\u2009\"); //this has thin spaces\n\n // Elipses\n text = text.replace(/\\.\\.\\./g,'…');\n\n // Nbsp for punc with spaces\n var NBSP = \"\\u00a0\";\n var NBSP_PUNCTUATION_START = /([«¿¡]) /g;\n var NBSP_PUNCTUATION_END = / ([\\!\\?:;\\.,‽»])/g;\n\n text = text.replace(NBSP_PUNCTUATION_START, '$1' + NBSP);\n text = text.replace(NBSP_PUNCTUATION_END, NBSP + '$1');\n\n return text;\n}\n\nfunction quotes(text) {\n\n text = text\n .replace(/(\\W|^)\"([^\\s\\!\\?:;\\.,‽»])/g, '$1\\u201c$2') // beginning \"\n .replace(/(\\u201c[^\"]*)\"([^\"]*$|[^\\u201c\"]*\\u201c)/g, '$1\\u201d$2') // ending \"\n .replace(/([^0-9])\"/g,'$1\\u201d') // remaining \" at end of word\n .replace(/(\\W|^)'(\\S)/g, '$1\\u2018$2') // beginning '\n .replace(/([a-z])'([a-z])/ig, '$1\\u2019$2') // conjunction's possession\n .replace(/((\\u2018[^']*)|[a-z])'([^0-9]|$)/ig, '$1\\u2019$3') // ending '\n .replace(/(\\u2018)([0-9]{2}[^\\u2019]*)(\\u2018([^0-9]|$)|$|\\u2019[a-z])/ig, '\\u2019$2$3') // abbrev. years like '93\n .replace(/(\\B|^)\\u2018(?=([^\\u2019]*\\u2019\\b)*([^\\u2019\\u2018]*\\W[\\u2019\\u2018]\\b|[^\\u2019\\u2018]*$))/ig, '$1\\u2019') // backwards apostrophe\n .replace(/'''/g, '\\u2034') // triple prime\n .replace(/(\"|'')/g, '\\u2033') // double prime\n .replace(/'/g, '\\u2032');\n\n // Allow escaped quotes\n text = text.replace(/\\\\“/, '\\\"');\n text = text.replace(/\\\\”/, '\\\"');\n text = text.replace(/\\\\’/, '\\'');\n text = text.replace(/\\\\‘/, '\\'');\n\n return text;\n}\n\nfunction ligatures(text){\n\n text = text.replace(/fi/g, 'fi');\n text = text.replace(/fl/g, 'fl');\n\n return text;\n};\n","import code from './hover-box.txt';\n\nexport default function(dom) {\n let s = dom.createElement(\"script\");\n s.textContent = code;\n dom.querySelector(\"body\").appendChild(s);\n}\n","//import xml from \"xml\";\n\nexport default function(data) {\n\n\n var date = data.publishedDate;\n\n var batch_timestamp = Math.floor(Date.now() / 1000);\n var batch_id = data.authors.length ? data.authors[0].lastName.toLowerCase().slice(0,20) : \"Anonymous\";\n batch_id += \"_\" + date.getFullYear();\n batch_id += \"_\" + data.title.split(\" \")[0].toLowerCase().slice(0,20) + \"_\" + batch_timestamp;\n // generate XML\n var crf_data =\n {doi_batch : [\n\n { _attr: {\n version: \"4.3.7\",\n xmlns: \"http://www.crossref.org/schema/4.3.7\",\n \"xmlns:xsi\": \"http://www.w3.org/2001/XMLSchema-instance\",\n \"xsi:schemaLocation\": \"http://www.crossref.org/schema/4.3.7 http://www.crossref.org/schemas/crossref4.3.7.xsd\",\n }},\n\n { head: [\n {doi_batch_id: batch_id},\n {timestamp: batch_timestamp},\n {depositor: [\n {depositor_name: data.journal.publisherName},\n {email_address: data.journal.publisherEmail},\n ]},\n {registrant: data.journal.publisherName},\n ]},\n\n {body: [\n {journal: [\n\n {journal_metadata: [\n {full_title: data.journal.full_title || data.journal.title},\n {abbrev_title: data.journal.abbrev_title || data.journal.title || data.journal.full_title},\n {issn: data.journal.issn},\n {doi_data: [\n {doi: data.journal.doi},\n {resource: data.journal.url},\n ]},\n ]},\n\n {journal_issue: [\n {publication_date: [\n {month: date.getMonth()+1},\n {year: date.getFullYear()},\n ]},\n {journal_volume: [\n {volume: data.volume},\n ]},\n {issue: data.issue},\n ]},\n\n {journal_article: [\n {titles: [\n {title: data.title},\n ]},\n { contributors:\n data.authors.map((author, ind) => (\n {person_name: [\n { _attr: {\n contributor_role: \"author\",\n sequence: (ind == 0)? \"first\" : \"additional\"\n }},\n {given_name: author.firstName},\n {surname: author.lastName},\n {affiliation: author.affiliation}\n // TODO: ORCID?\n ]}\n ))\n },\n {publication_date: [\n {month: date.getMonth()+1},\n {day: date.getDate()},\n {year: date.getFullYear()}\n ]},\n { publisher_item: [\n {item_number: data.doi}\n ]},\n {doi_data: [\n {doi: data.doi},\n //{timestamp: \"\"},\n {resource: data.url},\n ]},\n {citation_list:\n data.citations.map(key =>\n citation_xml(key, data.bibliography[key]))\n }\n\n ]},\n\n ]},\n ]},\n ]};\n\n return xml(crf_data);\n}\n\nfunction citation_xml(key, ent){\n if (ent == undefined) return {};\n var info = [];\n info.push({_attr: {key: key}});\n if (\"title\" in ent)\n info.push({article_title: ent.title});\n if (\"author\" in ent)\n info.push({author: ent.author.split(\" and \")[0].split(\",\")[0].trim()});\n if (\"journal\" in ent)\n info.push({journal_title: ent.journal});\n if (\"booktitle\" in ent)\n info.push({volume_title: ent.booktitle});\n if (\"volume\" in ent)\n info.push({volume: ent.volume});\n if (\"issue\" in ent)\n info.push({issue: ent.issue});\n if (\"doi\" in ent)\n info.push({doi: ent.doi});\n return {citation: info}\n}\n\nfunction xml(obj) {\n //console.log(typeof(obj), obj)\n if (typeof obj === 'string') return obj;\n if (typeof obj === 'number') return \"\"+obj;\n let keys = Object.keys(obj);\n if (keys.length != 1) console.error(\"can't interpret \", obj, \"as xml\");\n let name = keys[0];\n var full_content = obj[name];\n var attr = {};\n if (Array.isArray(full_content)){\n var content = [];\n for (var i in full_content) {\n var obj = full_content[i];\n var obj_name = Object.keys(obj)[0];\n if (\"_attr\" == obj_name) {\n attr = obj[\"_attr\"];\n } else {\n //console.log(Object.keys(obj)[0])\n content.push(obj);\n }\n }\n } else {\n content = full_content;\n }\n if (content == undefined){\n content = \"undefined\"\n }\n\n let attr_string = \"\";\n for (var k in attr) {\n attr_string += ` ${k}=\\\"${attr[k]}\\\"`\n }\n\n //console.log(typeof content, Array.isArray(content), content instanceof String, content)\n if (Array.isArray(content)){\n content = content.map(xml);\n content = content.join(\"\\n\").split(\"\\n\");\n content = content.map(s => \" \" + s).join(\"\\n\")\n var result = `<${name}${attr_string}>\\n${content}\\n`;\n } else {\n content = xml(content);\n var result = `<${name}${attr_string}>${content}`;\n }\n return result;\n}\n","import logo from \"./distill-logo.svg\";\n\nconst html = `\n\n\n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-header\");\n if(el) {\n el.innerHTML = html;\n } else {\n let header = dom.createElement(\"dt-header\");\n header.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(header, b.firstChild);\n }\n}\n","import logo from \"./distill-logo.svg\";\n\nlet html = `\n\n\n
    \n \n ${logo}\n Distill\n is dedicated to clear explanations of machine learning\n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-footer\");\n if(el) {\n el.innerHTML = html;\n } else {\n let footer = dom.createElement(\"dt-footer\");\n footer.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.appendChild(footer);\n }\n}\n","import html from \"./components/html\";\nimport styles from \"./components/styles\";\nimport frontMatter from \"./components/front-matter\";\nimport bibliography from \"./components/bibliography\";\nimport expandData from \"./components/expand-data\";\nimport meta from \"./components/meta\";\nimport banner from \"./components/banner\";\nimport byline from \"./components/byline\";\nimport appendix from \"./components/appendix\";\nimport citation from \"./components/citation\";\nimport footnote from \"./components/footnote\";\nimport markdown from \"./components/markdown\";\nimport code from \"./components/code\";\nimport typeset from \"./components/typeset\";\nimport hoverBox from \"./components/hover-box-include\";\nimport generateCrossref from \"./components/generate-crossref\";\nimport header from \"./components/header\";\nimport footer from \"./components/footer\";\n\nfunction renderImmediately(dom) {\n html(dom);\n styles(dom);\n}\n\nfunction renderOnLoad(dom, data) {\n frontMatter(dom, data);\n bibliography(dom, data);\n expandData(dom, data);\n meta(dom, data);\n byline(dom, data);\n appendix(dom, data);\n markdown(dom, data);\n code(dom, data);\n citation(dom, data);\n footnote(dom, data);\n typeset(dom, data);\n hoverBox(dom, data);\n}\n\n// If we are in a browser, render automatically...\nif(window && window.document) {\n let data = {};\n renderImmediately(window.document);\n window.document.addEventListener(\"DOMContentLoaded\", (event) => {\n renderOnLoad(window.document, data);\n // Add a banner if we're not on localhost.\n if (window.location.hostname !== \"localhost\" && window.location.origin !== \"file://\") {\n banner(window.document, data);\n }\n generateCrossref(data);\n });\n}\n\n// If we are in node...\nfunction render(dom, data) {\n renderImmediately(dom);\n renderOnLoad(dom, data);\n // Remove script tag so it doesn't run again in the client\n let s = dom.querySelector('script[src*=\"distill.pub/template\"]');\n if (s) { s.parentElement.removeChild(s); };\n}\n\n// Distill specific rendering\nfunction distillify(dom, data) {\n header(dom, data);\n footer(dom, data);\n}\n\nexport {render as render};\nexport {distillify as distillify};\nexport {generateCrossref as generateCrossref};\n"],"names":["let","meta","YAMLException","common","require$$0","Mark","this","Type","require$$1","require$$2","type","arguments","Schema","require$$3","require$$4","require$$5","require","_hasOwnProperty","_toString","require$$6","require$$7","_require","DEFAULT_SAFE_SCHEMA","DEFAULT_FULL_SCHEMA","loadAll","load","safeLoadAll","safeLoad","State","dump","safeDump","require$$8","require$$9","ymlParse","interval","day","timeDay","timeYear","timeSunday","timeMonday","locale","escape","const","html","define","global","Prism","code","render"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":null,"sources":["../components/html.js","../components/styles.js","../node_modules/js-yaml/lib/js-yaml/common.js","../node_modules/js-yaml/lib/js-yaml/exception.js","../node_modules/js-yaml/lib/js-yaml/mark.js","../node_modules/js-yaml/lib/js-yaml/type.js","../node_modules/js-yaml/lib/js-yaml/schema.js","../node_modules/js-yaml/lib/js-yaml/type/str.js","../node_modules/js-yaml/lib/js-yaml/type/seq.js","../node_modules/js-yaml/lib/js-yaml/type/map.js","../node_modules/js-yaml/lib/js-yaml/schema/failsafe.js","../node_modules/js-yaml/lib/js-yaml/type/null.js","../node_modules/js-yaml/lib/js-yaml/type/bool.js","../node_modules/js-yaml/lib/js-yaml/type/int.js","../node_modules/js-yaml/lib/js-yaml/type/float.js","../node_modules/js-yaml/lib/js-yaml/schema/json.js","../node_modules/js-yaml/lib/js-yaml/schema/core.js","../node_modules/js-yaml/lib/js-yaml/type/timestamp.js","../node_modules/js-yaml/lib/js-yaml/type/merge.js","../node_modules/js-yaml/lib/js-yaml/type/binary.js","../node_modules/js-yaml/lib/js-yaml/type/omap.js","../node_modules/js-yaml/lib/js-yaml/type/pairs.js","../node_modules/js-yaml/lib/js-yaml/type/set.js","../node_modules/js-yaml/lib/js-yaml/schema/default_safe.js","../node_modules/js-yaml/lib/js-yaml/type/js/undefined.js","../node_modules/js-yaml/lib/js-yaml/type/js/regexp.js","../node_modules/js-yaml/lib/js-yaml/type/js/function.js","../node_modules/js-yaml/lib/js-yaml/schema/default_full.js","../node_modules/js-yaml/lib/js-yaml/loader.js","../node_modules/js-yaml/lib/js-yaml/dumper.js","../node_modules/js-yaml/lib/js-yaml.js","../node_modules/js-yaml/index.js","../components/front-matter.js","../node_modules/bibtex-parse-js/bibtexParse.js","../components/bibliography.js","../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/utcMinute.js","../node_modules/d3-time/src/utcHour.js","../node_modules/d3-time/src/utcDay.js","../node_modules/d3-time/src/utcWeek.js","../node_modules/d3-time/src/utcMonth.js","../node_modules/d3-time/src/utcYear.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-time-format/src/isoFormat.js","../node_modules/d3-time-format/src/isoParse.js","../components/expand-data.js","../../node_modules/escape-html/index.js","../components/meta.js","../components/banner.js","../node_modules/mustache/mustache.js","../components/byline.js","../components/appendix.js","../components/citation.js","../components/footnote.js","../node_modules/marked/lib/marked.js","../components/markdown.js","../node_modules/prismjs/prism.js","../components/code.js","../components/typeset.js","../components/hover-box-include.js","../components/generate-crossref.js","../components/header.js","../components/footer.js","../index.js"],"sourcesContent":["export default function(dom) {\n if (!dom.querySelector(\"html\").getAttribute(\"lang\")) {\n dom.querySelector(\"html\").setAttribute(\"lang\", \"en\")\n }\n\n let head = dom.querySelector(\"head\");\n\n if (!dom.querySelector(\"meta[charset]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"charset\", \"utf-8\");\n head.appendChild(meta);\n }\n if (!dom.querySelector(\"meta[name=viewport]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"name\", \"viewport\");\n meta.setAttribute(\"content\", \"width=device-width, initial-scale=1\");\n head.appendChild(meta);\n }\n}\n","import base from './styles-base.css';\nimport layout from './styles-layout.css';\nimport article from './styles-article.css';\nimport code from './styles-code.css';\nimport print from './styles-print.css';\n\nexport default function(dom) {\n let s = dom.createElement(\"style\");\n s.textContent = base + layout + article + code + print;\n dom.querySelector(\"head\").appendChild(s);\n}\n","'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n var result = this.name + ': ';\n\n result += this.reason || '(unknown reason)';\n\n if (!compact && this.mark) {\n result += ' ' + this.mark.toString();\n }\n\n return result;\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n\nvar common = require('./common');\n\n\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\n\n\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head, start, tail, end, snippet;\n\n if (!this.buffer) return null;\n\n indent = indent || 4;\n maxLength = maxLength || 75;\n\n head = '';\n start = this.position;\n\n while (start > 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n\n tail = '';\n end = this.position;\n\n while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n\n snippet = this.buffer.slice(start, end);\n\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' +\n common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\n\nMark.prototype.toString = function toString(compact) {\n var snippet, where = '';\n\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n if (!compact) {\n snippet = this.getSnippet();\n\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n\n return where;\n};\n\n\nmodule.exports = Mark;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name, result) {\n var exclude = [];\n\n schema.include.forEach(function (includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n\n schema[name].forEach(function (currentType) {\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n exclude.push(previousIndex);\n }\n });\n\n result.push(currentType);\n });\n\n return result.filter(function (type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {}\n }, index, length;\n\n function collectType(type) {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n\n this.implicit.forEach(function (type) {\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n });\n\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\n\nSchema.DEFAULT = null;\n\n\nSchema.create = function createSchema() {\n var schemas, types;\n\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n\n if (!schemas.every(function (schema) { return schema instanceof Schema; })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n\n if (!types.every(function (type) { return type instanceof Type; })) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n return new Schema({\n include: schemas,\n explicit: types\n });\n};\n\n\nmodule.exports = Schema;\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 8\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 10 (except 0) or base 60\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch === ':') break;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n if (!hasDigits) return false;\n\n // if !base60 - done;\n if (ch !== ':') return true;\n\n // base60 almost not used, no needs to optimize\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch, base, digits = [];\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value, 16);\n return sign * parseInt(value, 8);\n }\n\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseInt(v, 10));\n });\n\n value = 0;\n base = 1;\n\n digits.forEach(function (d) {\n value += (d * base);\n base *= 60;\n });\n\n return sign * value;\n\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (object) { return '0b' + object.toString(2); },\n octal: function (object) { return '0' + object.toString(8); },\n decimal: function (object) { return object.toString(10); },\n hexadecimal: function (object) { return '0x' + object.toString(16).toUpperCase(); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n '^(?:[-+]?(?:[0-9][0-9_]*)\\\\.[0-9_]*(?:[eE][-+][0-9]+)?' +\n '|\\\\.[0-9_]+(?:[eE][-+][0-9]+)?' +\n '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' +\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data)) return false;\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign, base, digits;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n\n } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n\n value = 0.0;\n base = 1;\n\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n\n return sign * value;\n\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./failsafe')\n ],\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./json')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\nvar NodeBuffer;\n\ntry {\n // A trick for browserified version, to not include `Buffer` shim\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n // Wrap into Buffer for NodeJS and leave Array for browser\n if (NodeBuffer) return new NodeBuffer(result);\n\n return result;\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./core')\n ],\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n return true;\n}\n\nfunction constructJavascriptUndefined() {\n /*eslint-disable no-undefined*/\n return undefined;\n}\n\nfunction representJavascriptUndefined() {\n return '';\n}\n\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n if (data === null) return false;\n if (data.length === 0) return false;\n\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // if regexp starts with '/' it can have modifiers and must be properly closed\n // `/foo/gim` - modifiers tail can be maximum 3 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n\n if (modifiers.length > 3) return false;\n // if expression starts with /, is should be properly terminated\n if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n }\n\n return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // `/foo/gim` - tail can be maximum 4 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n\n return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object /*, style*/) {\n var result = '/' + object.source + '/';\n\n if (object.global) result += 'g';\n if (object.multiline) result += 'm';\n if (object.ignoreCase) result += 'i';\n\n return result;\n}\n\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n","'use strict';\n\nvar esprima;\n\n// Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n// If not found - try to fallback to window.esprima. If not\n// found too - then fail to parse.\n//\ntry {\n // workaround to exclude package from browserify list.\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n /*global window */\n if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n if (data === null) return false;\n\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true });\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction constructJavascriptFunction(data) {\n /*jslint evil:true*/\n\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true }),\n params = [],\n body;\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n throw new Error('Failed to resolve function');\n }\n\n ast.body[0].expression.params.forEach(function (param) {\n params.push(param.name);\n });\n\n body = ast.body[0].expression.body.range;\n\n // Esprima's ranges include the first '{' and the last '}' characters on\n // function expressions. So cut them out.\n /*eslint-disable no-new-func*/\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n}\n\nfunction representJavascriptFunction(object /*, style*/) {\n return object.toString();\n}\n\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n","// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [\n require('./default_safe')\n ],\n explicit: [\n require('../type/js/undefined'),\n require('../type/js/regexp'),\n require('../type/js/function')\n ]\n});\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00);\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n return new YAMLException(\n message,\n new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length;\n _position < _length;\n _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode) {\n var index, quantity;\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n throwError(state, 'duplicated mapping key');\n }\n _result[keyNode] = valueNode;\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else {\n break; // Reading is done. Go to the epilogue.\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if (state.lineIndent > nodeIndent && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!state.anchorMap.hasOwnProperty(alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag !== null && state.tag !== '!') {\n if (state.tag === '?') {\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length;\n typeIndex < typeQuantity;\n typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only assigned to plain scalars. So, it isn't\n // needed to check for 'kind' conformity.\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = {};\n state.anchorMap = {};\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n var documents = loadDocuments(input, options), index, length;\n\n for (index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nfunction safeLoadAll(input, output, options) {\n loadAll(input, output, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nfunction safeLoad(input, options) {\n return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// Simplified test for values allowed after the first character in plain style.\nfunction isPlainSafe(c) {\n // Uses a subset of nb-char - c-flow-indicator - \":\" - \"#\"\n // where nb-char ::= c-printable - b-char - c-byte-order-mark.\n return isPrintable(c) && c !== 0xFEFF\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // - \":\" - \"#\"\n && c !== CHAR_COLON\n && c !== CHAR_SHARP;\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n return isPrintable(c) && c !== 0xFEFF\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {\n var i;\n var char;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(string.charCodeAt(0))\n && !isWhitespace(string.charCodeAt(string.length - 1));\n\n if (singleLineOnly) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n return plain && !testAmbiguousType(string)\n ? STYLE_PLAIN : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (string[0] === ' ' && indentPerLevel > 9) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey) {\n state.dump = (function () {\n if (string.length === 0) {\n return \"''\";\n }\n if (!state.noCompatMode &&\n DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n return \"'\" + string + \"'\";\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = (string[0] === ' ') ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char;\n var escapeSeq;\n\n for (var i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n result += !escapeSeq && isPrintable(char)\n ? string[i]\n : escapeSeq || encodeHex(char);\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level, object[index], false, false)) {\n if (index !== 0) _result += ', ';\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || index !== 0) {\n _result += generateNextLine(state, level);\n }\n _result += '- ' + state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (index !== 0) pairBuffer += ', ';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + ': ';\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || index !== 0) {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n state.tag = explicit ? type.tag : '?';\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n writeBlockSequence(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey);\n }\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n state.dump = '!<' + state.tag + '> ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n if (writeNode(state, 0, input, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nfunction safeDump(input, options) {\n return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n","'use strict';\n\n\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\n\n\nfunction deprecated(name) {\n return function () {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\n\n\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\n\n// Deprecated schema names from JS-YAML 2.0.x\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\n\n// Deprecated functions from JS-YAML 1.x.x\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","'use strict';\n\n\nvar yaml = require('./lib/js-yaml.js');\n\n\nmodule.exports = yaml;\n","import ymlParse from \"js-yaml\";\n\nexport default function(dom, data) {\n let localData = {};\n let el = dom.querySelector('script[type=\"text/front-matter\"]');\n if (el) {\n let text = el.textContent;\n localData = ymlParse.safeLoad(text);\n }\n\n data.title = localData.title ? localData.title : \"Untitled\";\n data.description = localData.description ? localData.description : \"No description.\";\n\n data.authors = localData.authors ? localData.authors : [];\n\n data.authors = data.authors.map((author, i) =>{\n let a = {};\n let name = Object.keys(author)[0];\n if ((typeof author) === \"string\") {\n name = author;\n } else {\n a.personalURL = author[name];\n }\n let names = name.split(\" \");\n a.name = name;\n a.firstName = names.slice(0, names.length - 1).join(\" \");\n a.lastName = names[names.length -1];\n if(localData.affiliations[i]) {\n let affiliation = Object.keys(localData.affiliations[i])[0];\n if ((typeof localData.affiliations[i]) === \"string\") {\n affiliation = localData.affiliations[i]\n } else {\n a.affiliationURL = localData.affiliations[i][affiliation];\n }\n a.affiliation = affiliation;\n }\n return a;\n });\n \n\n}\n","/* start bibtexParse 0.0.22 */\n\n//Original work by Henrik Muehe (c) 2010\n//\n//CommonJS port by Mikola Lysenko 2013\n//\n//Port to Browser lib by ORCID / RCPETERS\n//\n//Issues:\n//no comment handling within strings\n//no string concatenation\n//no variable values yet\n//Grammar implemented here:\n//bibtex -> (string | preamble | comment | entry)*;\n//string -> '@STRING' '{' key_equals_value '}';\n//preamble -> '@PREAMBLE' '{' value '}';\n//comment -> '@COMMENT' '{' value '}';\n//entry -> '@' key '{' key ',' key_value_list '}';\n//key_value_list -> key_equals_value (',' key_equals_value)*;\n//key_equals_value -> key '=' value;\n//value -> value_quotes | value_braces | key;\n//value_quotes -> '\"' .*? '\"'; // not quite\n//value_braces -> '{' .*? '\"'; // not quite\n(function(exports) {\n\n function BibtexParser() {\n \n this.months = [\"jan\", \"feb\", \"mar\", \"apr\", \"may\", \"jun\", \"jul\", \"aug\", \"sep\", \"oct\", \"nov\", \"dec\"];\n this.notKey = [',','{','}',' ','='];\n this.pos = 0;\n this.input = \"\";\n this.entries = new Array();\n\n this.currentEntry = \"\";\n\n this.setInput = function(t) {\n this.input = t;\n };\n\n this.getEntries = function() {\n return this.entries;\n };\n\n this.isWhitespace = function(s) {\n return (s == ' ' || s == '\\r' || s == '\\t' || s == '\\n');\n };\n\n this.match = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n this.pos += s.length;\n } else {\n throw \"Token mismatch, expected \" + s + \", found \"\n + this.input.substring(this.pos);\n };\n this.skipWhitespace(canCommentOut);\n };\n\n this.tryMatch = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n return true;\n } else {\n return false;\n };\n this.skipWhitespace(canCommentOut);\n };\n\n /* when search for a match all text can be ignored, not just white space */\n this.matchAt = function() {\n while (this.input.length > this.pos && this.input[this.pos] != '@') {\n this.pos++;\n };\n\n if (this.input[this.pos] == '@') {\n return true;\n };\n return false;\n };\n\n this.skipWhitespace = function(canCommentOut) {\n while (this.isWhitespace(this.input[this.pos])) {\n this.pos++;\n };\n if (this.input[this.pos] == \"%\" && canCommentOut == true) {\n while (this.input[this.pos] != \"\\n\") {\n this.pos++;\n };\n this.skipWhitespace(canCommentOut);\n };\n };\n\n this.value_braces = function() {\n var bracecount = 0;\n this.match(\"{\", false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '}') {\n if (bracecount > 0) {\n bracecount--;\n } else {\n var end = this.pos;\n this.match(\"}\", false);\n return this.input.substring(start, end);\n };\n } else if (this.input[this.pos] == '{') {\n bracecount++;\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value\";\n };\n };\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.value_comment = function() {\n var str = '';\n var brcktCnt = 0;\n while (!(this.tryMatch(\"}\", false) && brcktCnt == 0)) {\n str = str + this.input[this.pos];\n if (this.input[this.pos] == '{')\n brcktCnt++;\n if (this.input[this.pos] == '}')\n brcktCnt--;\n if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n this.pos++;\n };\n return str;\n };\n\n this.value_quotes = function() {\n this.match('\"', false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '\"') {\n var end = this.pos;\n this.match('\"', false);\n return this.input.substring(start, end);\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n }\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.single_value = function() {\n var start = this.pos;\n if (this.tryMatch(\"{\")) {\n return this.value_braces();\n } else if (this.tryMatch('\"')) {\n return this.value_quotes();\n } else {\n var k = this.key();\n if (k.match(\"^[0-9]+$\"))\n return k;\n else if (this.months.indexOf(k.toLowerCase()) >= 0)\n return k.toLowerCase();\n else\n throw \"Value expected:\" + this.input.substring(start) + ' for key: ' + k;\n \n };\n };\n\n this.value = function() {\n var values = [];\n values.push(this.single_value());\n while (this.tryMatch(\"#\")) {\n this.match(\"#\");\n values.push(this.single_value());\n };\n return values.join(\"\");\n };\n\n this.key = function() {\n var start = this.pos;\n while (true) {\n if (this.pos >= this.input.length) {\n throw \"Runaway key\";\n };\n // а-яА-Я is Cyrillic\n //console.log(this.input[this.pos]);\n if (this.notKey.indexOf(this.input[this.pos]) >= 0) {\n return this.input.substring(start, this.pos);\n } else {\n this.pos++;\n \n };\n };\n };\n\n this.key_equals_value = function() {\n var key = this.key();\n if (this.tryMatch(\"=\")) {\n this.match(\"=\");\n var val = this.value();\n return [ key, val ];\n } else {\n throw \"... = value expected, equals sign missing:\"\n + this.input.substring(this.pos);\n };\n };\n\n this.key_value_list = function() {\n var kv = this.key_equals_value();\n this.currentEntry['entryTags'] = {};\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n while (this.tryMatch(\",\")) {\n this.match(\",\");\n // fixes problems with commas at the end of a list\n if (this.tryMatch(\"}\")) {\n break;\n }\n ;\n kv = this.key_equals_value();\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n };\n };\n\n this.entry_body = function(d) {\n this.currentEntry = {};\n this.currentEntry['citationKey'] = this.key();\n this.currentEntry['entryType'] = d.substring(1);\n this.match(\",\");\n this.key_value_list();\n this.entries.push(this.currentEntry);\n };\n\n this.directive = function() {\n this.match(\"@\");\n return \"@\" + this.key();\n };\n\n this.preamble = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'PREAMBLE';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.comment = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'COMMENT';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.entry = function(d) {\n this.entry_body(d);\n };\n\n this.bibtex = function() {\n while (this.matchAt()) {\n var d = this.directive();\n this.match(\"{\");\n if (d == \"@STRING\") {\n this.string();\n } else if (d == \"@PREAMBLE\") {\n this.preamble();\n } else if (d == \"@COMMENT\") {\n this.comment();\n } else {\n this.entry(d);\n }\n this.match(\"}\");\n };\n };\n };\n \n exports.toJSON = function(bibtex) {\n var b = new BibtexParser();\n b.setInput(bibtex);\n b.bibtex();\n return b.entries;\n };\n\n /* added during hackathon don't hate on me */\n exports.toBibtex = function(json) {\n var out = '';\n for ( var i in json) {\n out += \"@\" + json[i].entryType;\n out += '{';\n if (json[i].citationKey)\n out += json[i].citationKey + ', ';\n if (json[i].entry)\n out += json[i].entry ;\n if (json[i].entryTags) {\n var tags = '';\n for (var jdx in json[i].entryTags) {\n if (tags.length != 0)\n tags += ', ';\n tags += jdx + '= {' + json[i].entryTags[jdx] + '}';\n }\n out += tags;\n }\n out += '}\\n\\n';\n }\n return out;\n \n };\n\n})(typeof exports === 'undefined' ? this['bibtexParse'] = {} : exports);\n\n/* end bibtexParse */\n","import bibtexParse from \"bibtex-parse-js\";\n\nexport default function(dom, data) {\n let el = dom.querySelector('script[type=\"text/bibliography\"]');\n let citations = [];\n let bibliography = {};\n //TODO If we don't have a local element, make a request for the document.\n if (el) {\n let rawBib = el.textContent;\n let parsed = bibtexParse.toJSON(rawBib);\n if(parsed) {\n parsed.forEach(e => {\n for (var k in e.entryTags){\n var val = e.entryTags[k];\n val = val.replace(/[\\t\\n ]+/g, \" \");\n val = val.replace(/{\\\\[\"^`\\.'acu~Hvs]( )?([a-zA-Z])}/g,\n (full, x, char) => char);\n val = val.replace(/{\\\\([a-zA-Z])}/g,\n (full, char) => char);\n e.entryTags[k] = val;\n }\n bibliography[e.citationKey] = e.entryTags;\n bibliography[e.citationKey].type = e.entryType;\n });\n }\n\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach(el => {\n let key = el.getAttribute(\"key\");\n if (key) {\n let citationKeys = key.split(\",\");\n citationKeys.forEach(key => {\n if (citations.indexOf(key) == -1){\n citations.push(key);\n if (!(key in bibliography)){\n console.warn(\"No bibliography entry found for: \" + key);\n }\n }\n });\n }\n });\n }\n data.bibliography = bibliography;\n data.citations = citations;\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(new Date(+start)); while (offseti(start, step), floori(start), start < stop)\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) while (--step >= 0) while (offseti(date, 1), !test(date)) {} // eslint-disable-line no-empty\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(Math.floor(date / durationSecond) * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(Math.floor(date / durationMinute) * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute} from \"./duration\";\n\nvar hour = interval(function(date) {\n var offset = date.getTimezoneOffset() * durationMinute % durationHour;\n if (offset < 0) offset += durationHour;\n date.setTime(Math.floor((+date - offset) / durationHour) * durationHour + offset);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval\";\nimport {durationWeek} from \"./duration\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {timeDay, timeSunday, timeMonday, timeYear, utcDay, utcSunday, utcMonday, utcYear} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"S\": formatSeconds,\n \"U\": formatWeekNumberSunday,\n \"w\": formatWeekdayNumber,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"S\": formatUTCSeconds,\n \"U\": formatUTCWeekNumberSunday,\n \"w\": formatUTCWeekdayNumber,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"S\": parseSeconds,\n \"U\": parseWeekNumberSunday,\n \"w\": parseWeekdayNumber,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0);\n if (i != string.length) return null;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n var day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?:\\:?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekdayNumber(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekdayNumber(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {timeFormat} from \"d3-time-format\";\n\nexport default function(dom, data) {\n\n data.authors = data.authors || [];\n\n // paths\n data.url = data.url ? data.url : \"http://distill.pub/\" + data.distillPath;\n data.githubUrl = \"https://github.com/\" + data.githubPath;\n\n data.previewURL = data.previewURL ? data.previewURL : data.url + \"/thumbnail.jpg\"\n\n // Homepage\n //data.homepage = !post.noHomepage;\n data.journal = data.journal || {};\n\n // Dates\n if (data.publishedDate){//} && data.journal) {\n data.volume = data.publishedDate.getFullYear() - 2015;\n data.issue = data.publishedDate.getMonth() + 1;\n }\n\n data.publishedDate = data.publishedDate ? data.publishedDate : new Date(\"Invalid\");\n data.updatedDate = data.updatedDate ? data.updatedDate : new Date(\"Invalid\");\n\n data.publishedDateRFC\n let RFC = timeFormat(\"%a, %d %b %Y %H:%M:%S %Z\");\n let months = [\"Jan\", \"Feb\", \"March\", \"April\", \"May\", \"June\", \"July\", \"Aug\", \"Sept\", \"Oct\", \"Nov\", \"Dec\"];\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n data.publishedDateRFC = RFC(data.publishedDate);\n data.publishedYear = data.publishedDate.getFullYear();\n data.publishedMonth = months[data.publishedDate.getMonth()];\n data.publishedDay = data.publishedDate.getDate();\n data.publishedMonthPadded = zeroPad(data.publishedDate.getMonth() + 1);\n data.publishedDayPadded = zeroPad(data.publishedDate.getDate());\n data.updatedDateRFC = RFC(data.updatedDate);\n\n if (data.authors.length > 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \", et al.\";\n } else if (data.authors.length === 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \" & \" + data.authors[1].lastName;\n } else if (data.authors.length === 1) {\n data.concatenatedAuthors = data.authors[0].lastName\n }\n\n data.bibtexAuthors = data.authors.map(function(author){\n return author.lastName + \", \" + author.firstName;\n }).join(\" and \");\n\n data.slug = data.authors.length ? data.authors[0].lastName.toLowerCase() + data.publishedYear + data.title.split(\" \")[0].toLowerCase() : \"Untitled\";\n\n}\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","import favicon from './distill-favicon.base64';\nimport escape from 'escape-html';\n\nexport default function(dom, data) {\n let head = dom.querySelector(\"head\");\n let appendHead = html => appendHtml(head, html);\n\n function meta(name, content, force) {\n if (content || force)\n appendHead(` \\n`);\n }\n\n appendHead(`\n \n \n \n \n ${data.title}\n `);\n\n appendHead(`\n \n \n \n `);\n data.authors.forEach((a) => {\n appendHtml(head, `\n `)\n });\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n // if this is a proprer article, generate Google Scholar meta data\n if (data.doiSuffix){\n appendHead(`\n \\n`);\n\n meta(\"citation_title\", data.title);\n //meta(\"citation_fulltext_html_url\", data.url);\n meta(\"citation_volume\", data.volume);\n meta(\"citation_issue\", data.issue);\n meta(\"citation_firstpage\", data.doiSuffix? `e${data.doiSuffix}` : undefined);\n meta(\"citation_doi\", data.doi);\n\n let journal = data.journal || {};\n meta(\"citation_journal_title\", journal.full_title || journal.title);\n meta(\"citation_journal_abbrev\", journal.abbrev_title);\n meta(\"citation_issn\", journal.issn);\n meta(\"citation_publisher\", journal.publisher);\n meta(\"citation_fulltext_world_readable\", \"\", true);\n\n if (data.publishedDate){\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n meta(\"citation_online_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n // Should we do something different here?\n meta(\"citation_publication_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n }\n\n (data.authors || []).forEach((a) => {\n meta(\"citation_author\", `${a.lastName}, ${a.firstName}`);\n meta(\"citation_author_institution\", a.affiliation);\n });\n\n if (data.citations) {\n data.citations.forEach(key => {\n let d = data.bibliography[key];\n if(!d) {\n console.warn(\"No bibliography data fround for \" + key)\n } else {\n meta(\"citation_reference\", citation_meta_content(data.bibliography[key]) )\n };\n });\n }\n }\n}\n\nfunction appendHtml(el, html) {\n el.innerHTML += html;\n}\n\nfunction citation_meta_content(ref){\n // Special test for arxiv\n var content = `citation_title=${ref.title};`;\n\n let name_strings = ref.author.split(\" and \").forEach(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1].trim();\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n content += `citation_author=${firsts} ${last};`;\n });\n\n if (\"year\" in ref) {\n content += `citation_publication_date=${ref.year};`;\n }\n\n var arxiv_id_search = /https?:\\/\\/arxiv\\.org\\/pdf\\/([0-9]*\\.[0-9]*)\\.pdf/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /https?:\\/\\/arxiv\\.org\\/abs\\/([0-9]*\\.[0-9]*)/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /arXiv preprint arXiv:([0-9]*\\.[0-9]*)/.exec(ref.journal);\n if (arxiv_id_search && arxiv_id_search[1]){\n content += `citation_arxiv_id=${arxiv_id_search[1]};`;\n return content;\n }\n if (\"journal\" in ref){\n content += `citation_journal_title=${ref.journal};`;\n }\n if (\"volume\" in ref) {\n content += `citation_volume=${ref.volume};`;\n }\n if (\"issue\" in ref || \"number\" in ref){\n content += `citation_number=${ref.issue || ref.number};`;\n }\n /*content += `citation_first_page=${};`;\n content += `citation_publication_date=${};`;*/\n return content;\n}\n","const html = `\n\n
    This article is a draft, awaiting review for publication in Distill
    \n`;\n\nexport default function(dom, data) {\n let banner = dom.createElement(\"dt-banner\");\n banner.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(banner, b.firstChild);\n banner.addEventListener(\"click\", function() {\n banner.style.display = \"none\";\n });\n}\n","/*!\n * mustache.js - Logic-less {{mustache}} templates with JavaScript\n * http://github.com/janl/mustache.js\n */\n\n/*global define: false Mustache: true*/\n\n(function defineMustache (global, factory) {\n if (typeof exports === 'object' && exports && typeof exports.nodeName !== 'string') {\n factory(exports); // CommonJS\n } else if (typeof define === 'function' && define.amd) {\n define(['exports'], factory); // AMD\n } else {\n global.Mustache = {};\n factory(global.Mustache); // script, wsh, asp\n }\n}(this, function mustacheFactory (mustache) {\n\n var objectToString = Object.prototype.toString;\n var isArray = Array.isArray || function isArrayPolyfill (object) {\n return objectToString.call(object) === '[object Array]';\n };\n\n function isFunction (object) {\n return typeof object === 'function';\n }\n\n /**\n * More correct typeof string handling array\n * which normally returns typeof 'object'\n */\n function typeStr (obj) {\n return isArray(obj) ? 'array' : typeof obj;\n }\n\n function escapeRegExp (string) {\n return string.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n }\n\n /**\n * Null safe way of checking whether or not an object,\n * including its prototype, has a given property\n */\n function hasProperty (obj, propName) {\n return obj != null && typeof obj === 'object' && (propName in obj);\n }\n\n // Workaround for https://issues.apache.org/jira/browse/COUCHDB-577\n // See https://github.com/janl/mustache.js/issues/189\n var regExpTest = RegExp.prototype.test;\n function testRegExp (re, string) {\n return regExpTest.call(re, string);\n }\n\n var nonSpaceRe = /\\S/;\n function isWhitespace (string) {\n return !testRegExp(nonSpaceRe, string);\n }\n\n var entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n function escapeHtml (string) {\n return String(string).replace(/[&<>\"'`=\\/]/g, function fromEntityMap (s) {\n return entityMap[s];\n });\n }\n\n var whiteRe = /\\s*/;\n var spaceRe = /\\s+/;\n var equalsRe = /\\s*=/;\n var curlyRe = /\\s*\\}/;\n var tagRe = /#|\\^|\\/|>|\\{|&|=|!/;\n\n /**\n * Breaks up the given `template` string into a tree of tokens. If the `tags`\n * argument is given here it must be an array with two string values: the\n * opening and closing tags used in the template (e.g. [ \"<%\", \"%>\" ]). Of\n * course, the default is to use mustaches (i.e. mustache.tags).\n *\n * A token is an array with at least 4 elements. The first element is the\n * mustache symbol that was used inside the tag, e.g. \"#\" or \"&\". If the tag\n * did not contain a symbol (i.e. {{myValue}}) this element is \"name\". For\n * all text that appears outside a symbol this element is \"text\".\n *\n * The second element of a token is its \"value\". For mustache tags this is\n * whatever else was inside the tag besides the opening symbol. For text tokens\n * this is the text itself.\n *\n * The third and fourth elements of the token are the start and end indices,\n * respectively, of the token in the original template.\n *\n * Tokens that are the root node of a subtree contain two more elements: 1) an\n * array of tokens in the subtree and 2) the index in the original template at\n * which the closing tag for that section begins.\n */\n function parseTemplate (template, tags) {\n if (!template)\n return [];\n\n var sections = []; // Stack to hold section tokens\n var tokens = []; // Buffer to hold the tokens\n var spaces = []; // Indices of whitespace tokens on the current line\n var hasTag = false; // Is there a {{tag}} on the current line?\n var nonSpace = false; // Is there a non-space char on the current line?\n\n // Strips all whitespace tokens array for the current line\n // if there was a {{#tag}} on it and otherwise only space.\n function stripSpace () {\n if (hasTag && !nonSpace) {\n while (spaces.length)\n delete tokens[spaces.pop()];\n } else {\n spaces = [];\n }\n\n hasTag = false;\n nonSpace = false;\n }\n\n var openingTagRe, closingTagRe, closingCurlyRe;\n function compileTags (tagsToCompile) {\n if (typeof tagsToCompile === 'string')\n tagsToCompile = tagsToCompile.split(spaceRe, 2);\n\n if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)\n throw new Error('Invalid tags: ' + tagsToCompile);\n\n openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\\\s*');\n closingTagRe = new RegExp('\\\\s*' + escapeRegExp(tagsToCompile[1]));\n closingCurlyRe = new RegExp('\\\\s*' + escapeRegExp('}' + tagsToCompile[1]));\n }\n\n compileTags(tags || mustache.tags);\n\n var scanner = new Scanner(template);\n\n var start, type, value, chr, token, openSection;\n while (!scanner.eos()) {\n start = scanner.pos;\n\n // Match any text between tags.\n value = scanner.scanUntil(openingTagRe);\n\n if (value) {\n for (var i = 0, valueLength = value.length; i < valueLength; ++i) {\n chr = value.charAt(i);\n\n if (isWhitespace(chr)) {\n spaces.push(tokens.length);\n } else {\n nonSpace = true;\n }\n\n tokens.push([ 'text', chr, start, start + 1 ]);\n start += 1;\n\n // Check for whitespace on the current line.\n if (chr === '\\n')\n stripSpace();\n }\n }\n\n // Match the opening tag.\n if (!scanner.scan(openingTagRe))\n break;\n\n hasTag = true;\n\n // Get the tag type.\n type = scanner.scan(tagRe) || 'name';\n scanner.scan(whiteRe);\n\n // Get the tag value.\n if (type === '=') {\n value = scanner.scanUntil(equalsRe);\n scanner.scan(equalsRe);\n scanner.scanUntil(closingTagRe);\n } else if (type === '{') {\n value = scanner.scanUntil(closingCurlyRe);\n scanner.scan(curlyRe);\n scanner.scanUntil(closingTagRe);\n type = '&';\n } else {\n value = scanner.scanUntil(closingTagRe);\n }\n\n // Match the closing tag.\n if (!scanner.scan(closingTagRe))\n throw new Error('Unclosed tag at ' + scanner.pos);\n\n token = [ type, value, start, scanner.pos ];\n tokens.push(token);\n\n if (type === '#' || type === '^') {\n sections.push(token);\n } else if (type === '/') {\n // Check section nesting.\n openSection = sections.pop();\n\n if (!openSection)\n throw new Error('Unopened section \"' + value + '\" at ' + start);\n\n if (openSection[1] !== value)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + start);\n } else if (type === 'name' || type === '{' || type === '&') {\n nonSpace = true;\n } else if (type === '=') {\n // Set the tags for the next time around.\n compileTags(value);\n }\n }\n\n // Make sure there are no open sections when we're done.\n openSection = sections.pop();\n\n if (openSection)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + scanner.pos);\n\n return nestTokens(squashTokens(tokens));\n }\n\n /**\n * Combines the values of consecutive text tokens in the given `tokens` array\n * to a single token.\n */\n function squashTokens (tokens) {\n var squashedTokens = [];\n\n var token, lastToken;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n if (token) {\n if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {\n lastToken[1] += token[1];\n lastToken[3] = token[3];\n } else {\n squashedTokens.push(token);\n lastToken = token;\n }\n }\n }\n\n return squashedTokens;\n }\n\n /**\n * Forms the given array of `tokens` into a nested tree structure where\n * tokens that represent a section have two additional items: 1) an array of\n * all tokens that appear in that section and 2) the index in the original\n * template that represents the end of that section.\n */\n function nestTokens (tokens) {\n var nestedTokens = [];\n var collector = nestedTokens;\n var sections = [];\n\n var token, section;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n switch (token[0]) {\n case '#':\n case '^':\n collector.push(token);\n sections.push(token);\n collector = token[4] = [];\n break;\n case '/':\n section = sections.pop();\n section[5] = token[2];\n collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;\n break;\n default:\n collector.push(token);\n }\n }\n\n return nestedTokens;\n }\n\n /**\n * A simple string scanner that is used by the template parser to find\n * tokens in template strings.\n */\n function Scanner (string) {\n this.string = string;\n this.tail = string;\n this.pos = 0;\n }\n\n /**\n * Returns `true` if the tail is empty (end of string).\n */\n Scanner.prototype.eos = function eos () {\n return this.tail === '';\n };\n\n /**\n * Tries to match the given regular expression at the current position.\n * Returns the matched text if it can match, the empty string otherwise.\n */\n Scanner.prototype.scan = function scan (re) {\n var match = this.tail.match(re);\n\n if (!match || match.index !== 0)\n return '';\n\n var string = match[0];\n\n this.tail = this.tail.substring(string.length);\n this.pos += string.length;\n\n return string;\n };\n\n /**\n * Skips all text until the given regular expression can be matched. Returns\n * the skipped string, which is the entire tail if no match can be made.\n */\n Scanner.prototype.scanUntil = function scanUntil (re) {\n var index = this.tail.search(re), match;\n\n switch (index) {\n case -1:\n match = this.tail;\n this.tail = '';\n break;\n case 0:\n match = '';\n break;\n default:\n match = this.tail.substring(0, index);\n this.tail = this.tail.substring(index);\n }\n\n this.pos += match.length;\n\n return match;\n };\n\n /**\n * Represents a rendering context by wrapping a view object and\n * maintaining a reference to the parent context.\n */\n function Context (view, parentContext) {\n this.view = view;\n this.cache = { '.': this.view };\n this.parent = parentContext;\n }\n\n /**\n * Creates a new context using the given view with this context\n * as the parent.\n */\n Context.prototype.push = function push (view) {\n return new Context(view, this);\n };\n\n /**\n * Returns the value of the given name in this context, traversing\n * up the context hierarchy if the value is absent in this context's view.\n */\n Context.prototype.lookup = function lookup (name) {\n var cache = this.cache;\n\n var value;\n if (cache.hasOwnProperty(name)) {\n value = cache[name];\n } else {\n var context = this, names, index, lookupHit = false;\n\n while (context) {\n if (name.indexOf('.') > 0) {\n value = context.view;\n names = name.split('.');\n index = 0;\n\n /**\n * Using the dot notion path in `name`, we descend through the\n * nested objects.\n *\n * To be certain that the lookup has been successful, we have to\n * check if the last object in the path actually has the property\n * we are looking for. We store the result in `lookupHit`.\n *\n * This is specially necessary for when the value has been set to\n * `undefined` and we want to avoid looking up parent contexts.\n **/\n while (value != null && index < names.length) {\n if (index === names.length - 1)\n lookupHit = hasProperty(value, names[index]);\n\n value = value[names[index++]];\n }\n } else {\n value = context.view[name];\n lookupHit = hasProperty(context.view, name);\n }\n\n if (lookupHit)\n break;\n\n context = context.parent;\n }\n\n cache[name] = value;\n }\n\n if (isFunction(value))\n value = value.call(this.view);\n\n return value;\n };\n\n /**\n * A Writer knows how to take a stream of tokens and render them to a\n * string, given a context. It also maintains a cache of templates to\n * avoid the need to parse the same template twice.\n */\n function Writer () {\n this.cache = {};\n }\n\n /**\n * Clears all cached templates in this writer.\n */\n Writer.prototype.clearCache = function clearCache () {\n this.cache = {};\n };\n\n /**\n * Parses and caches the given `template` and returns the array of tokens\n * that is generated from the parse.\n */\n Writer.prototype.parse = function parse (template, tags) {\n var cache = this.cache;\n var tokens = cache[template];\n\n if (tokens == null)\n tokens = cache[template] = parseTemplate(template, tags);\n\n return tokens;\n };\n\n /**\n * High-level method that is used to render the given `template` with\n * the given `view`.\n *\n * The optional `partials` argument may be an object that contains the\n * names and templates of partials that are used in the template. It may\n * also be a function that is used to load partial templates on the fly\n * that takes a single argument: the name of the partial.\n */\n Writer.prototype.render = function render (template, view, partials) {\n var tokens = this.parse(template);\n var context = (view instanceof Context) ? view : new Context(view);\n return this.renderTokens(tokens, context, partials, template);\n };\n\n /**\n * Low-level method that renders the given array of `tokens` using\n * the given `context` and `partials`.\n *\n * Note: The `originalTemplate` is only ever used to extract the portion\n * of the original template that was contained in a higher-order section.\n * If the template doesn't use higher-order sections, this argument may\n * be omitted.\n */\n Writer.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate) {\n var buffer = '';\n\n var token, symbol, value;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n value = undefined;\n token = tokens[i];\n symbol = token[0];\n\n if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate);\n else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate);\n else if (symbol === '>') value = this.renderPartial(token, context, partials, originalTemplate);\n else if (symbol === '&') value = this.unescapedValue(token, context);\n else if (symbol === 'name') value = this.escapedValue(token, context);\n else if (symbol === 'text') value = this.rawValue(token);\n\n if (value !== undefined)\n buffer += value;\n }\n\n return buffer;\n };\n\n Writer.prototype.renderSection = function renderSection (token, context, partials, originalTemplate) {\n var self = this;\n var buffer = '';\n var value = context.lookup(token[1]);\n\n // This function is used to render an arbitrary template\n // in the current context by higher-order sections.\n function subRender (template) {\n return self.render(template, context, partials);\n }\n\n if (!value) return;\n\n if (isArray(value)) {\n for (var j = 0, valueLength = value.length; j < valueLength; ++j) {\n buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate);\n }\n } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {\n buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate);\n } else if (isFunction(value)) {\n if (typeof originalTemplate !== 'string')\n throw new Error('Cannot use higher-order sections without the original template');\n\n // Extract the portion of the original template that the section contains.\n value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);\n\n if (value != null)\n buffer += value;\n } else {\n buffer += this.renderTokens(token[4], context, partials, originalTemplate);\n }\n return buffer;\n };\n\n Writer.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate) {\n var value = context.lookup(token[1]);\n\n // Use JavaScript's definition of falsy. Include empty arrays.\n // See https://github.com/janl/mustache.js/issues/186\n if (!value || (isArray(value) && value.length === 0))\n return this.renderTokens(token[4], context, partials, originalTemplate);\n };\n\n Writer.prototype.renderPartial = function renderPartial (token, context, partials) {\n if (!partials) return;\n\n var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\n if (value != null)\n return this.renderTokens(this.parse(value), context, partials, value);\n };\n\n Writer.prototype.unescapedValue = function unescapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return value;\n };\n\n Writer.prototype.escapedValue = function escapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return mustache.escape(value);\n };\n\n Writer.prototype.rawValue = function rawValue (token) {\n return token[1];\n };\n\n mustache.name = 'mustache.js';\n mustache.version = '2.3.0';\n mustache.tags = [ '{{', '}}' ];\n\n // All high-level mustache.* functions use this writer.\n var defaultWriter = new Writer();\n\n /**\n * Clears all cached templates in the default writer.\n */\n mustache.clearCache = function clearCache () {\n return defaultWriter.clearCache();\n };\n\n /**\n * Parses and caches the given template in the default writer and returns the\n * array of tokens it contains. Doing this ahead of time avoids the need to\n * parse templates on the fly as they are rendered.\n */\n mustache.parse = function parse (template, tags) {\n return defaultWriter.parse(template, tags);\n };\n\n /**\n * Renders the `template` with the given `view` and `partials` using the\n * default writer.\n */\n mustache.render = function render (template, view, partials) {\n if (typeof template !== 'string') {\n throw new TypeError('Invalid template! Template should be a \"string\" ' +\n 'but \"' + typeStr(template) + '\" was given as the first ' +\n 'argument for mustache#render(template, view, partials)');\n }\n\n return defaultWriter.render(template, view, partials);\n };\n\n // This is here for backwards compatibility with 0.4.x.,\n /*eslint-disable */ // eslint wants camel cased function name\n mustache.to_html = function to_html (template, view, partials, send) {\n /*eslint-enable*/\n\n var result = mustache.render(template, view, partials);\n\n if (isFunction(send)) {\n send(result);\n } else {\n return result;\n }\n };\n\n // Export the escaping function so that the user may override it.\n // See https://github.com/janl/mustache.js/issues/244\n mustache.escape = escapeHtml;\n\n // Export these mainly for testing, but also for advanced usage.\n mustache.Scanner = Scanner;\n mustache.Context = Context;\n mustache.Writer = Writer;\n\n return mustache;\n}));\n","import mustache from \"mustache\";\n\nconst html = `\n\n\n`;\n\nconst template = `\n
    \n
    \n {{#authors}}\n
    \n {{#personalURL}}\n {{name}}\n {{/personalURL}}\n {{^personalURL}}\n
    {{name}}
    \n {{/personalURL}}\n {{#affiliation}}\n {{#affiliationURL}}\n {{affiliation}}\n {{/affiliationURL}}\n {{^affiliationURL}}\n
    {{affiliation}}
    \n {{/affiliationURL}}\n {{/affiliation}}\n
    \n {{/authors}}\n
    \n
    \n
    {{publishedMonth}}. {{publishedDay}}
    \n
    {{publishedYear}}
    \n
    \n \n
    Citation:
    \n
    {{concatenatedAuthors}}, {{publishedYear}}
    \n
    \n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-byline');\n if (el) {\n el.innerHTML = html + mustache.render(template, data);\n }\n}\n","const html = `\n\n\n
    \n

    References

    \n \n

    Errors, Reuse, and Citation

    \n

    If you see mistakes or want to suggest changes, please create an issue on GitHub.

    \n

    Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on GitHub. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: “Figure from …”.

    \n

    For attribution in academic contexts, please cite this work as

    \n
    \n  

    BibTeX citation

    \n
    \n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-appendix')\n if (el) {\n let oldHtml = el.innerHTML;\n el.innerHTML = html;\n let div = el.querySelector(\"div.l-body\")\n\n if (dom.querySelector(\"dt-fn\")) {\n div.innerHTML = `

    Footnotes

    ` + div.innerHTML;\n }\n\n div.innerHTML = oldHtml + div.innerHTML;\n if (data.githubCompareUpdatesUrl) {\n div.innerHTML = `

    Updates

    View all changes to this article since it was first published.

    ` + div.innerHTML;\n }\n\n el.querySelector(\"a.github\").setAttribute(\"href\", data.githubUrl);\n el.querySelector(\"a.github-issue\").setAttribute(\"href\", data.githubUrl + \"/issues/new\");\n el.querySelector(\".citation.short\").textContent = data.concatenatedAuthors + \", \" + '\"' + data.title + '\", Distill, ' + data.publishedYear + \".\";\n var bibtex = \"@article{\" + data.slug + \",\\n\";\n bibtex += \" author = {\" + data.bibtexAuthors + \"},\\n\";\n bibtex += \" title = {\" + data.title + \"},\\n\";\n bibtex += \" journal = {Distill},\\n\";\n bibtex += \" year = {\" + data.publishedYear + \"},\\n\";\n bibtex += \" note = {\" + data.url + \"}\\n\";\n bibtex += \"}\";\n el.querySelector(\".citation.long\").textContent = bibtex;\n }\n\n}\n","export default function(dom, data) {\n let css = `\n dt-cite {\n color: hsla(206, 90%, 20%, 0.7);\n }\n dt-cite .citation-number {\n cursor: default;\n white-space: nowrap;\n font-family: -apple-system, BlinkMacSystemFont, \"Roboto\", Helvetica, sans-serif;\n font-size: 75%;\n color: hsla(206, 90%, 20%, 0.7);\n display: inline-block;\n line-height: 1.1em;\n text-align: center;\n position: relative;\n top: -2px;\n margin: 0 2px;\n }\n figcaption dt-cite .citation-number {\n font-size: 11px;\n font-weight: normal;\n top: -2px;\n line-height: 1em;\n }\n `;\n\n let style = dom.createElement(\"style\");\n style.textContent = css;\n dom.querySelector(\"body\").appendChild(style);\n\n let citations = data.citations;\n /*if (data.citations) {\n citations = Object.keys(data.citations).map(c => data.citations[c]);\n citations.sort((a, b) => {\n return a.author.localeCompare(b.author);\n });\n }*/\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach((el,n) => {\n var key = el.getAttribute(\"key\");\n if (key) {\n var keys = key.split(\",\");\n var cite_string = inline_cite_short(keys);\n var cite_hover_str = \"\";\n keys.map((key,n) => {\n if (n>0) cite_hover_str += \"

    \";\n cite_hover_str += hover_cite(data.bibliography[key]);\n });\n cite_hover_str = cite_hover_str.replace(/\"/g, \"'\")\n var orig_string = el.innerHTML;\n if (orig_string != \"\") orig_string += \" \";\n el.innerHTML = `${orig_string}${cite_string}`;\n }\n });\n\n let bibEl = dom.querySelector(\"dt-bibliography\");\n if (bibEl) {\n let ol = dom.createElement(\"ol\");\n citations.forEach(key => {\n let el = dom.createElement(\"li\");\n el.innerHTML = bibliography_cite(data.bibliography[key]);\n ol.appendChild(el);\n })\n bibEl.appendChild(ol);\n }\n\n function inline_cite_short(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var n = data.citations.indexOf(key)+1;\n return \"\"+n;\n } else {\n return \"?\";\n }\n }\n return \"[\"+keys.map(cite_string).join(\", \")+\"]\";\n }\n\n function inline_cite_long(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var ent = data.bibliography[key];\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var year = ent.year;\n if (names.length == 1) return names[0] + \", \" + year;\n if (names.length == 2) return names[0] + \" & \" + names[1] + \", \" + year;\n if (names.length > 2) return names[0] + \", et al., \" + year;\n } else {\n return \"?\";\n }\n }\n return keys.map(cite_string).join(\", \");\n }\n\n function author_string(ent, template, sep, finalSep){\n var names = ent.author.split(\" and \");\n let name_strings = names.map(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1];\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n var initials = \"\";\n if (firsts != undefined) {\n initials = firsts.trim().split(\" \").map(s => s.trim()[0]);\n initials = initials.join(\".\")+\".\";\n }\n return template.replace(\"${F}\", firsts)\n .replace(\"${L}\", last)\n .replace(\"${I}\", initials);\n });\n if (names.length > 1) {\n var str = name_strings.slice(0, names.length-1).join(sep);\n str += (finalSep || sep) + name_strings[names.length-1];\n return str;\n } else {\n return name_strings[0];\n }\n }\n\n function venue_string(ent) {\n var cite = (ent.journal || ent.booktitle || \"\")\n if (\"volume\" in ent){\n var issue = ent.issue || ent.number;\n issue = (issue != undefined)? \"(\"+issue+\")\" : \"\";\n cite += \", Vol \" + ent.volume + issue;\n }\n if (\"pages\" in ent){\n cite += \", pp. \" + ent.pages\n }\n if (cite != \"\") cite += \". \"\n if (\"publisher\" in ent){\n cite += ent.publisher;\n if (cite[cite.length-1] != \".\") cite += \".\";\n }\n return cite;\n }\n\n function link_string(ent){\n if (\"url\" in ent){\n var url = ent.url;\n var arxiv_match = (/arxiv\\.org\\/abs\\/([0-9\\.]*)/).exec(url);\n if (arxiv_match != null){\n url = `http://arxiv.org/pdf/${arxiv_match[1]}.pdf`;\n }\n\n if (url.slice(-4) == \".pdf\"){\n var label = \"PDF\";\n } else if (url.slice(-5) == \".html\") {\n var label = \"HTML\";\n }\n return `  [${label||\"link\"}]`;\n }/* else if (\"doi\" in ent){\n return `  [DOI]`;\n }*/ else {\n return \"\";\n }\n }\n function doi_string(ent, new_line){\n if (\"doi\" in ent) {\n return `${new_line?\"
    \":\"\"} DOI: ${ent.doi}`;\n } else {\n return \"\";\n }\n }\n\n function bibliography_cite(ent, fancy){\n if (ent){\n var cite = \"\" + ent.title + \" \"\n cite += link_string(ent) + \"
    \";\n cite += author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += venue_string(ent);\n cite += doi_string(ent);\n return cite\n /*var cite = author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += \"\" + ent.title + \". \";\n cite += venue_string(ent);\n cite += doi_string(ent);\n cite += link_string(ent);\n return cite*/\n } else {\n return \"?\";\n }\n }\n\n function hover_cite(ent){\n if (ent){\n var cite = \"\";\n cite += \"\" + ent.title + \"\";\n cite += link_string(ent);\n cite += \"
    \"\n\n var a_str = author_string(ent, \"${I} ${L}\", \", \") + \".\";\n var v_str = venue_string(ent).trim() + \" \" + ent.year + \". \" + doi_string(ent, true);\n\n if ((a_str+v_str).length < Math.min(40, ent.title.length)) {\n cite += a_str + \" \" + v_str;\n } else {\n cite += a_str + \"
    \" + v_str;\n }\n return cite;\n } else {\n return \"?\";\n }\n }\n\n\n //https://scholar.google.com/scholar?q=allintitle%3ADocument+author%3Aolah\n function get_GS_URL(ent){\n if (ent){\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var title = ent.title.split(\" \")//.replace(/[,:]/, \"\")\n var url = \"http://search.labs.crossref.org/dois?\"//\"\"https://scholar.google.com/scholar?\"\n url += uris({q: names.join(\" \") + \" \" + title.join(\" \")})\n }\n\n }\n}\n","export default function(dom, data) {\n\n var fnTags = [].slice.apply(dom.querySelectorAll(\"dt-fn\"));\n var fnContent = [];\n fnTags.forEach((el,n) => {\n var content = el.innerHTML;\n fnContent.push(content);\n n = (n+1)+\"\";\n var key = \"fn-\"+n;\n var escaped_content = content.replace(/\"/g, \"'\");\n el.innerHTML = `${n}`;\n });\n\n let fnList = dom.querySelector(\"dt-fn-list\");\n if (fnList) {\n let ol = dom.createElement(\"ol\");\n fnContent.forEach(content => {\n let el = dom.createElement(\"li\");\n el.innerHTML = content;\n ol.appendChild(el);\n })\n fnList.appendChild(ol);\n }\n\n}\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n */\n\n;(function() {\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^( *[-*_]){3,} *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,\n nptable: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n blockquote: /^( *>[^\\n]+(\\n(?!def)[^\\n]+)*\\n*)+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n table: noop,\n paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,\n text: /^[^\\n]+/\n};\n\nblock.bullet = /(?:[*+-]|\\d+\\.)/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = replace(block.item, 'gm')\n (/bull/g, block.bullet)\n ();\n\nblock.list = replace(block.list)\n (/bull/g, block.bullet)\n ('hr', '\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))')\n ('def', '\\\\n+(?=' + block.def.source + ')')\n ();\n\nblock.blockquote = replace(block.blockquote)\n ('def', block.def)\n ();\n\nblock._tag = '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'\n + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'\n + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|[^\\\\w\\\\s@]*@)\\\\b';\n\nblock.html = replace(block.html)\n ('comment', //)\n ('closed', /<(tag)[\\s\\S]+?<\\/\\1>/)\n ('closing', /])*?>/)\n (/tag/g, block._tag)\n ();\n\nblock.paragraph = replace(block.paragraph)\n ('hr', block.hr)\n ('heading', block.heading)\n ('lheading', block.lheading)\n ('blockquote', block.blockquote)\n ('tag', '<' + block._tag)\n ('def', block.def)\n ();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]*?)\\s*\\1 *(?:\\n+|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = replace(block.paragraph)\n ('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n ();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top, bq) {\n var src = src.replace(/^ +$/gm, '')\n , next\n , loose\n , cap\n , bull\n , b\n , item\n , space\n , i\n , l;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic\n ? cap.replace(/\\n+$/, '')\n : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top, true);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n\n this.tokens.push({\n type: 'list_start',\n ordered: bull.length > 1\n });\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n this.tokens.push({\n type: loose\n ? 'loose_item_start'\n : 'list_item_start'\n });\n\n // Recurse.\n this.token(item, false, bq);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if ((!bq && top) && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.links[cap[1].toLowerCase()] = {\n href: cap[2],\n title: cap[3]\n };\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i]\n .replace(/^ *\\| *| *\\| *$/g, '')\n .split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n autolink: /^<([^ >]+(@|:\\/)[^ >]+)>/,\n url: noop,\n tag: /^|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^\\b_((?:[^_]|__)+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n code: /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n text: /^[\\s\\S]+?(?=[\\\\?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\ninline.link = replace(inline.link)\n ('inside', inline._inside)\n ('href', inline._href)\n ();\n\ninline.reflink = replace(inline.reflink)\n ('inside', inline._inside)\n ();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: replace(inline.escape)('])', '~|])')(),\n url: /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n text: replace(inline.text)\n (']|', '~]|')\n ('|', '|https?://|')\n ()\n});\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: replace(inline.br)('{2,}', '*')(),\n text: replace(inline.gfm.text)('{2,}', '*')()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer;\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new\n Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n var out = ''\n , link\n , text\n , href\n , cap;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += cap[1];\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = cap[1].charAt(6) === ':'\n ? this.mangle(cap[1].substring(7))\n : this.mangle(cap[1]);\n href = this.mangle('mailto:') + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n src = src.substring(cap[0].length);\n text = escape(cap[1]);\n href = text;\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^/i.test(cap[0])) {\n this.inLink = false;\n }\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0]\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out += this.outputLink(cap, {\n href: cap[2],\n title: cap[3]\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2], true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = escape(link.href)\n , title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = ''\n , l = text.length\n , i = 0\n , ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || {};\n}\n\nRenderer.prototype.code = function(code, lang, escaped) {\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '\\n
    ';\n }\n\n return '
    '\n    + (escaped ? code : escape(code, true))\n    + '\\n
    \\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '
    \\n' + quote + '
    \\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw) {\n return ''\n + text\n + '\\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n};\n\nRenderer.prototype.list = function(body, ordered) {\n var type = ordered ? 'ol' : 'ul';\n return '<' + type + '>\\n' + body + '\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '
  • ' + text + '
  • \\n';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '

    ' + text + '

    \\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + '\\n'\n + body\n + '\\n'\n + '
    \\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '\\n' + content + '\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' style=\"text-align:' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.em = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? '
    ' : '
    ';\n};\n\nRenderer.prototype.del = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n if (this.options.sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return '';\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0) {\n return '';\n }\n }\n var out = '
    ';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n var out = '\"'' : '>';\n return out;\n};\n\nRenderer.prototype.text = function(text) {\n return text;\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer;\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options, renderer) {\n var parser = new Parser(options, renderer);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options, this.renderer);\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n this.token.text);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = ''\n , body = ''\n , i\n , row\n , cell\n , flags\n , j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n flags = { header: true, align: this.token.align[i] };\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n var body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n var body = ''\n , ordered = this.token.ordered;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered);\n }\n case 'list_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'loose_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'html': {\n var html = !this.token.pre && !this.options.pedantic\n ? this.inline.output(this.token.text)\n : this.token.text;\n return this.renderer.html(html);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n }\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n return html\n .replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\nfunction unescape(html) {\n\t// explicitly match decimal, hex, and named HTML entities \n return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/g, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction replace(regex, opt) {\n regex = regex.source;\n opt = opt || '';\n return function self(name, val) {\n if (!name) return new RegExp(regex, opt);\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return self;\n };\n}\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1\n , target\n , key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n\n var highlight = opt.highlight\n , tokens\n , pending\n , i = 0;\n\n try {\n tokens = Lexer.lex(src, opt)\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/chjj/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occured:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n sanitizer: null,\n mangle: true,\n smartLists: false,\n silent: false,\n highlight: null,\n langPrefix: 'lang-',\n smartypants: false,\n headerPrefix: '',\n renderer: new Renderer,\n xhtml: false\n};\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.parse = marked;\n\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n this.marked = marked;\n}\n\n}).call(function() {\n return this || (typeof window !== 'undefined' ? window : global);\n}());\n","import marked from 'marked';\n\nmarked.setOptions({\n gfm: true,\n smartypants: true\n});\n\nexport default function(dom, data) {\n let markdownElements = [].slice.call(dom.querySelectorAll('[markdown]'));\n markdownElements.forEach(el => {\n let content = el.innerHTML;\n // Set default indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n\n el.innerHTML = marked(content);\n });\n}\n","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = _self.Prism = {\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/ text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\tbreak tokenloop;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t delNum = 1;\n\n\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t to = match.index + match[0].length,\n\t\t\t\t\t\t k = i,\n\t\t\t\t\t\t p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && p < to; ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t match = match[0].slice(lookbehindLength),\n\t\t\t\t\t to = from + match.length,\n\t\t\t\t\t before = str.slice(0, from),\n\t\t\t\t\t after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (env.type == 'comment') {\n\t\tenv.attributes['spellcheck'] = 'true';\n\t}\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n \t// In worker\n\t_self.addEventListener('message', function(evt) {\n\t\tvar message = JSON.parse(evt.data),\n\t\t lang = message.language,\n\t\t code = message.code,\n\t\t immediateClose = message.immediateClose;\n\n\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\tif (immediateClose) {\n\t\t\t_self.close();\n\t\t}\n\t}, false);\n\n\treturn _self.Prism;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (document.addEventListener && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': //,\n\t'prolog': /<\\?[\\w\\W]+?\\?>/,\n\t'doctype': //i,\n\t'cdata': //i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\w\\W])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:('|\")[\\w\\W]*?(\\1)|[^\\s>]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /[=>\"']/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\w\\W]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^\\{\\}\\s][^\\{\\};]*?(?=\\s*\\{)/,\n\t'string': {\n\t\tpattern: /(\"|')(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'property': /(\\b|\\B)[\\w-]+(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|').*?\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\w\\W]*?\\*\\//,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[a-z0-9_\\.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /(\\.|\\\\)/\n\t\t}\n\t},\n\t'keyword': /\\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(0x[\\dA-Fa-f]+|0b[01]+|0o[0-7]+|\\d*\\.?\\d+([Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*(?=\\()/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*\\*?|\\/|~|\\^|%|\\.{3}/\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[.+?]|\\\\.|[^/\\\\\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\\\\\|\\\\?[^\\\\])*?`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript'\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tif(Array.prototype.forEach) { // Check to prevent error in IE8\n\t\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\t\tvar language, parent = pre;\n\t\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\t\tparent = parent.parentNode;\n\t\t\t\t}\n\n\t\t\t\tif (parent) {\n\t\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t\t}\n\n\t\t\t\tif (!language) {\n\t\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t\t}\n\n\t\t\t\tvar code = document.createElement('code');\n\t\t\t\tcode.className = 'language-' + language;\n\n\t\t\t\tpre.textContent = '';\n\n\t\t\t\tcode.textContent = 'Loading…';\n\n\t\t\t\tpre.appendChild(code);\n\n\t\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\t\txhr.open('GET', src, true);\n\n\t\t\t\txhr.onreadystatechange = function () {\n\t\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\txhr.send(null);\n\t\t\t});\n\t\t}\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\n})();\n","import Prism from \"prismjs\";\n\nexport default function(dom, data) {\n let codeElements = [].slice.call(dom.querySelectorAll(\"dt-code\"));\n codeElements.forEach(el => {\n let content = el.textContent;\n el.innerHTML = \"\";\n let language = el.getAttribute(\"language\");\n let c = dom.createElement(\"code\");\n if (el.getAttribute(\"block\") === \"\") {\n // Let's normalize the tab indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n let p = dom.createElement(\"pre\");\n p.appendChild(c);\n el.appendChild(p);\n } else {\n el.appendChild(c);\n }\n let highlighted = content;\n if (Prism.languages[language]) {\n c.setAttribute(\"class\", \"language-\" + language);\n highlighted = Prism.highlight(content, Prism.languages[language]);\n }\n c.innerHTML = highlighted;\n });\n}\n","export default function(dom, data) {\n\n var textNodes = dom.createTreeWalker(\n dom.body,\n dom.defaultView.NodeFilter.SHOW_TEXT\n );\n while (textNodes.nextNode()) {\n var n = textNodes.currentNode,\n text = n.nodeValue;\n if (text && acceptNode(n)) {\n text = quotes(text);\n text = punctuation(text);\n n.nodeValue = text;\n }\n }\n}\n\nfunction acceptNode(node) {\n var parent = node.parentElement;\n var isMath = (parent && parent.getAttribute && parent.getAttribute(\"class\")) ? parent.getAttribute(\"class\").includes(\"katex\") || parent.getAttribute(\"class\").includes(\"MathJax\") : false;\n return parent &&\n parent.nodeName !== \"SCRIPT\" &&\n parent.nodeName !== \"STYLE\" &&\n parent.nodeName !== \"CODE\" &&\n parent.nodeName !== \"PRE\" &&\n parent.nodeName !== \"SPAN\" &&\n parent.nodeName !== \"DT-HEADER\" &&\n parent.nodeName !== \"DT-BYLINE\" &&\n parent.nodeName !== \"DT-MATH\" &&\n parent.nodeName !== \"DT-CODE\" &&\n parent.nodeName !== \"DT-BIBLIOGRAPHY\" &&\n parent.nodeName !== \"DT-FOOTER\" &&\n parent.nodeType !== 8 && //comment nodes\n !isMath;\n}\n\n\n/*!\n * typeset - Typesetting for the web\n * @version v0.1.6\n * @link https://github.com/davidmerfield/Typeset.js\n * @author David Merfield\n */\n // which has a CC0 license\n // http://creativecommons.org/publicdomain/zero/1.0/\n\n\nfunction punctuation(text){\n\n // Dashes\n text = text.replace(/--/g, '\\u2014');\n text = text.replace(/ \\u2014 /g,\"\\u2009\\u2014\\u2009\"); //this has thin spaces\n\n // Elipses\n text = text.replace(/\\.\\.\\./g,'…');\n\n // Nbsp for punc with spaces\n var NBSP = \"\\u00a0\";\n var NBSP_PUNCTUATION_START = /([«¿¡]) /g;\n var NBSP_PUNCTUATION_END = / ([\\!\\?:;\\.,‽»])/g;\n\n text = text.replace(NBSP_PUNCTUATION_START, '$1' + NBSP);\n text = text.replace(NBSP_PUNCTUATION_END, NBSP + '$1');\n\n return text;\n}\n\nfunction quotes(text) {\n\n text = text\n .replace(/(\\W|^)\"([^\\s\\!\\?:;\\.,‽»])/g, '$1\\u201c$2') // beginning \"\n .replace(/(\\u201c[^\"]*)\"([^\"]*$|[^\\u201c\"]*\\u201c)/g, '$1\\u201d$2') // ending \"\n .replace(/([^0-9])\"/g,'$1\\u201d') // remaining \" at end of word\n .replace(/(\\W|^)'(\\S)/g, '$1\\u2018$2') // beginning '\n .replace(/([a-z])'([a-z])/ig, '$1\\u2019$2') // conjunction's possession\n .replace(/((\\u2018[^']*)|[a-z])'([^0-9]|$)/ig, '$1\\u2019$3') // ending '\n .replace(/(\\u2018)([0-9]{2}[^\\u2019]*)(\\u2018([^0-9]|$)|$|\\u2019[a-z])/ig, '\\u2019$2$3') // abbrev. years like '93\n .replace(/(\\B|^)\\u2018(?=([^\\u2019]*\\u2019\\b)*([^\\u2019\\u2018]*\\W[\\u2019\\u2018]\\b|[^\\u2019\\u2018]*$))/ig, '$1\\u2019') // backwards apostrophe\n .replace(/'''/g, '\\u2034') // triple prime\n .replace(/(\"|'')/g, '\\u2033') // double prime\n .replace(/'/g, '\\u2032');\n\n // Allow escaped quotes\n text = text.replace(/\\\\“/, '\\\"');\n text = text.replace(/\\\\”/, '\\\"');\n text = text.replace(/\\\\’/, '\\'');\n text = text.replace(/\\\\‘/, '\\'');\n\n return text;\n}\n\nfunction ligatures(text){\n\n text = text.replace(/fi/g, 'fi');\n text = text.replace(/fl/g, 'fl');\n\n return text;\n};\n","import code from './hover-box.txt';\n\nexport default function(dom) {\n let s = dom.createElement(\"script\");\n s.textContent = code;\n dom.querySelector(\"body\").appendChild(s);\n}\n","//import xml from \"xml\";\n\nexport default function(data) {\n\n\n var date = data.publishedDate;\n\n var batch_timestamp = Math.floor(Date.now() / 1000);\n var batch_id = data.authors.length ? data.authors[0].lastName.toLowerCase().slice(0,20) : \"Anonymous\";\n batch_id += \"_\" + date.getFullYear();\n batch_id += \"_\" + data.title.split(\" \")[0].toLowerCase().slice(0,20) + \"_\" + batch_timestamp;\n // generate XML\n var crf_data =\n {doi_batch : [\n\n { _attr: {\n version: \"4.3.7\",\n xmlns: \"http://www.crossref.org/schema/4.3.7\",\n \"xmlns:xsi\": \"http://www.w3.org/2001/XMLSchema-instance\",\n \"xsi:schemaLocation\": \"http://www.crossref.org/schema/4.3.7 http://www.crossref.org/schemas/crossref4.3.7.xsd\",\n }},\n\n { head: [\n {doi_batch_id: batch_id},\n {timestamp: batch_timestamp},\n {depositor: [\n {depositor_name: data.journal.publisherName},\n {email_address: data.journal.publisherEmail},\n ]},\n {registrant: data.journal.publisherName},\n ]},\n\n {body: [\n {journal: [\n\n {journal_metadata: [\n {full_title: data.journal.full_title || data.journal.title},\n {abbrev_title: data.journal.abbrev_title || data.journal.title || data.journal.full_title},\n {issn: data.journal.issn},\n {doi_data: [\n {doi: data.journal.doi},\n {resource: data.journal.url},\n ]},\n ]},\n\n {journal_issue: [\n {publication_date: [\n {month: date.getMonth()+1},\n {year: date.getFullYear()},\n ]},\n {journal_volume: [\n {volume: data.volume},\n ]},\n {issue: data.issue},\n ]},\n\n {journal_article: [\n {titles: [\n {title: data.title},\n ]},\n { contributors:\n data.authors.map((author, ind) => (\n {person_name: [\n { _attr: {\n contributor_role: \"author\",\n sequence: (ind == 0)? \"first\" : \"additional\"\n }},\n {given_name: author.firstName},\n {surname: author.lastName},\n {affiliation: author.affiliation}\n // TODO: ORCID?\n ]}\n ))\n },\n {publication_date: [\n {month: date.getMonth()+1},\n {day: date.getDate()},\n {year: date.getFullYear()}\n ]},\n { publisher_item: [\n {item_number: data.doi}\n ]},\n {doi_data: [\n {doi: data.doi},\n //{timestamp: \"\"},\n {resource: data.url},\n ]},\n {citation_list:\n data.citations.map(key =>\n citation_xml(key, data.bibliography[key]))\n }\n\n ]},\n\n ]},\n ]},\n ]};\n\n return xml(crf_data);\n}\n\nfunction citation_xml(key, ent){\n if (ent == undefined) return {};\n var info = [];\n info.push({_attr: {key: key}});\n if (\"title\" in ent)\n info.push({article_title: ent.title});\n if (\"author\" in ent)\n info.push({author: ent.author.split(\" and \")[0].split(\",\")[0].trim()});\n if (\"journal\" in ent)\n info.push({journal_title: ent.journal});\n if (\"booktitle\" in ent)\n info.push({volume_title: ent.booktitle});\n if (\"volume\" in ent)\n info.push({volume: ent.volume});\n if (\"issue\" in ent)\n info.push({issue: ent.issue});\n if (\"doi\" in ent)\n info.push({doi: ent.doi});\n return {citation: info}\n}\n\nfunction xml(obj) {\n //console.log(typeof(obj), obj)\n if (typeof obj === 'string') return obj;\n if (typeof obj === 'number') return \"\"+obj;\n let keys = Object.keys(obj);\n if (keys.length != 1) console.error(\"can't interpret \", obj, \"as xml\");\n let name = keys[0];\n var full_content = obj[name];\n var attr = {};\n if (Array.isArray(full_content)){\n var content = [];\n for (var i in full_content) {\n var obj = full_content[i];\n var obj_name = Object.keys(obj)[0];\n if (\"_attr\" == obj_name) {\n attr = obj[\"_attr\"];\n } else {\n //console.log(Object.keys(obj)[0])\n content.push(obj);\n }\n }\n } else {\n content = full_content;\n }\n if (content == undefined){\n content = \"undefined\"\n }\n\n let attr_string = \"\";\n for (var k in attr) {\n attr_string += ` ${k}=\\\"${attr[k]}\\\"`\n }\n\n //console.log(typeof content, Array.isArray(content), content instanceof String, content)\n if (Array.isArray(content)){\n content = content.map(xml);\n content = content.join(\"\\n\").split(\"\\n\");\n content = content.map(s => \" \" + s).join(\"\\n\")\n var result = `<${name}${attr_string}>\\n${content}\\n`;\n } else {\n content = xml(content);\n var result = `<${name}${attr_string}>${content}`;\n }\n return result;\n}\n","import logo from \"./distill-logo.svg\";\n\nconst html = `\n\n\n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-header\");\n if(el) {\n el.innerHTML = html;\n } else {\n let header = dom.createElement(\"dt-header\");\n header.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(header, b.firstChild);\n }\n}\n","import logo from \"./distill-logo.svg\";\n\nlet html = `\n\n\n
    \n \n ${logo}\n Distill\n is dedicated to clear explanations of machine learning\n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-footer\");\n if(el) {\n el.innerHTML = html;\n } else {\n let footer = dom.createElement(\"dt-footer\");\n footer.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.appendChild(footer);\n }\n}\n","import html from \"./components/html\";\nimport styles from \"./components/styles\";\nimport frontMatter from \"./components/front-matter\";\nimport bibliography from \"./components/bibliography\";\nimport expandData from \"./components/expand-data\";\nimport meta from \"./components/meta\";\nimport banner from \"./components/banner\";\nimport byline from \"./components/byline\";\nimport appendix from \"./components/appendix\";\nimport citation from \"./components/citation\";\nimport footnote from \"./components/footnote\";\nimport markdown from \"./components/markdown\";\nimport code from \"./components/code\";\nimport typeset from \"./components/typeset\";\nimport hoverBox from \"./components/hover-box-include\";\nimport generateCrossref from \"./components/generate-crossref\";\nimport header from \"./components/header\";\nimport footer from \"./components/footer\";\n\nfunction renderImmediately(dom) {\n html(dom);\n styles(dom);\n}\n\nfunction renderOnLoad(dom, data) {\n frontMatter(dom, data);\n bibliography(dom, data);\n expandData(dom, data);\n meta(dom, data);\n byline(dom, data);\n appendix(dom, data);\n markdown(dom, data);\n code(dom, data);\n citation(dom, data);\n footnote(dom, data);\n typeset(dom, data);\n hoverBox(dom, data);\n}\n\n// If we are in a browser, render automatically...\nif(window && window.document) {\n let data = {};\n renderImmediately(window.document);\n window.document.addEventListener(\"DOMContentLoaded\", (event) => {\n renderOnLoad(window.document, data);\n // Add a banner if we're not on localhost.\n if (window.location.hostname !== \"localhost\" && window.location.origin !== \"file://\") {\n banner(window.document, data);\n }\n generateCrossref(data);\n });\n}\n\n// If we are in node...\nfunction render(dom, data) {\n renderImmediately(dom);\n renderOnLoad(dom, data);\n // Remove script tag so it doesn't run again in the client\n let s = dom.querySelector('script[src*=\"distill.pub/template\"]');\n if (s) { s.parentElement.removeChild(s); };\n}\n\n// Distill specific rendering\nfunction distillify(dom, data) {\n header(dom, data);\n footer(dom, data);\n}\n\nexport {render as render};\nexport {distillify as distillify};\nexport {generateCrossref as generateCrossref};\n"],"names":["let","meta","YAMLException","common","require$$0","Mark","this","Type","require$$1","require$$2","type","arguments","Schema","require$$3","require$$4","require$$5","require","_hasOwnProperty","_toString","require$$6","require$$7","_require","DEFAULT_SAFE_SCHEMA","DEFAULT_FULL_SCHEMA","loadAll","load","safeLoadAll","safeLoad","State","dump","safeDump","require$$8","require$$9","ymlParse","interval","day","timeDay","timeYear","timeSunday","timeMonday","locale","escape","const","html","define","global","Prism","code","render"],"mappings":"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"} \ No newline at end of file From f6cb5bed7d3f32c064ddb8df7be04a484068f09c Mon Sep 17 00:00:00 2001 From: Shan Carter Date: Mon, 20 Mar 2017 10:32:44 -0700 Subject: [PATCH 09/42] build --- dist/template.js | 2 +- dist/template.js.map | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dist/template.js b/dist/template.js index 94dfbc2..85176e4 100644 --- a/dist/template.js +++ b/dist/template.js @@ -8656,7 +8656,7 @@ function xml(obj) { var logo = "\n \n\n"; -var html$4 = "\n\n\n\n"; +var html$4 = "\n\n\n\n"; var header = function(dom, data) { var el = dom.querySelector("dt-header"); diff --git a/dist/template.js.map b/dist/template.js.map index 7fdf514..fd3bc67 100644 --- a/dist/template.js.map +++ b/dist/template.js.map @@ -1 +1 @@ -{"version":3,"file":null,"sources":["../components/html.js","../components/styles.js","../node_modules/js-yaml/lib/js-yaml/common.js","../node_modules/js-yaml/lib/js-yaml/exception.js","../node_modules/js-yaml/lib/js-yaml/mark.js","../node_modules/js-yaml/lib/js-yaml/type.js","../node_modules/js-yaml/lib/js-yaml/schema.js","../node_modules/js-yaml/lib/js-yaml/type/str.js","../node_modules/js-yaml/lib/js-yaml/type/seq.js","../node_modules/js-yaml/lib/js-yaml/type/map.js","../node_modules/js-yaml/lib/js-yaml/schema/failsafe.js","../node_modules/js-yaml/lib/js-yaml/type/null.js","../node_modules/js-yaml/lib/js-yaml/type/bool.js","../node_modules/js-yaml/lib/js-yaml/type/int.js","../node_modules/js-yaml/lib/js-yaml/type/float.js","../node_modules/js-yaml/lib/js-yaml/schema/json.js","../node_modules/js-yaml/lib/js-yaml/schema/core.js","../node_modules/js-yaml/lib/js-yaml/type/timestamp.js","../node_modules/js-yaml/lib/js-yaml/type/merge.js","../node_modules/js-yaml/lib/js-yaml/type/binary.js","../node_modules/js-yaml/lib/js-yaml/type/omap.js","../node_modules/js-yaml/lib/js-yaml/type/pairs.js","../node_modules/js-yaml/lib/js-yaml/type/set.js","../node_modules/js-yaml/lib/js-yaml/schema/default_safe.js","../node_modules/js-yaml/lib/js-yaml/type/js/undefined.js","../node_modules/js-yaml/lib/js-yaml/type/js/regexp.js","../node_modules/js-yaml/lib/js-yaml/type/js/function.js","../node_modules/js-yaml/lib/js-yaml/schema/default_full.js","../node_modules/js-yaml/lib/js-yaml/loader.js","../node_modules/js-yaml/lib/js-yaml/dumper.js","../node_modules/js-yaml/lib/js-yaml.js","../node_modules/js-yaml/index.js","../components/front-matter.js","../node_modules/bibtex-parse-js/bibtexParse.js","../components/bibliography.js","../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/utcMinute.js","../node_modules/d3-time/src/utcHour.js","../node_modules/d3-time/src/utcDay.js","../node_modules/d3-time/src/utcWeek.js","../node_modules/d3-time/src/utcMonth.js","../node_modules/d3-time/src/utcYear.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-time-format/src/isoFormat.js","../node_modules/d3-time-format/src/isoParse.js","../components/expand-data.js","../../node_modules/escape-html/index.js","../components/meta.js","../components/banner.js","../node_modules/mustache/mustache.js","../components/byline.js","../components/appendix.js","../components/citation.js","../components/footnote.js","../node_modules/marked/lib/marked.js","../components/markdown.js","../node_modules/prismjs/prism.js","../components/code.js","../components/typeset.js","../components/hover-box-include.js","../components/generate-crossref.js","../components/header.js","../components/footer.js","../index.js"],"sourcesContent":["export default function(dom) {\n if (!dom.querySelector(\"html\").getAttribute(\"lang\")) {\n dom.querySelector(\"html\").setAttribute(\"lang\", \"en\")\n }\n\n let head = dom.querySelector(\"head\");\n\n if (!dom.querySelector(\"meta[charset]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"charset\", \"utf-8\");\n head.appendChild(meta);\n }\n if (!dom.querySelector(\"meta[name=viewport]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"name\", \"viewport\");\n meta.setAttribute(\"content\", \"width=device-width, initial-scale=1\");\n head.appendChild(meta);\n }\n}\n","import base from './styles-base.css';\nimport layout from './styles-layout.css';\nimport article from './styles-article.css';\nimport code from './styles-code.css';\nimport print from './styles-print.css';\n\nexport default function(dom) {\n let s = dom.createElement(\"style\");\n s.textContent = base + layout + article + code + print;\n dom.querySelector(\"head\").appendChild(s);\n}\n","'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n var result = this.name + ': ';\n\n result += this.reason || '(unknown reason)';\n\n if (!compact && this.mark) {\n result += ' ' + this.mark.toString();\n }\n\n return result;\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n\nvar common = require('./common');\n\n\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\n\n\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head, start, tail, end, snippet;\n\n if (!this.buffer) return null;\n\n indent = indent || 4;\n maxLength = maxLength || 75;\n\n head = '';\n start = this.position;\n\n while (start > 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n\n tail = '';\n end = this.position;\n\n while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n\n snippet = this.buffer.slice(start, end);\n\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' +\n common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\n\nMark.prototype.toString = function toString(compact) {\n var snippet, where = '';\n\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n if (!compact) {\n snippet = this.getSnippet();\n\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n\n return where;\n};\n\n\nmodule.exports = Mark;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name, result) {\n var exclude = [];\n\n schema.include.forEach(function (includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n\n schema[name].forEach(function (currentType) {\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n exclude.push(previousIndex);\n }\n });\n\n result.push(currentType);\n });\n\n return result.filter(function (type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {}\n }, index, length;\n\n function collectType(type) {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n\n this.implicit.forEach(function (type) {\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n });\n\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\n\nSchema.DEFAULT = null;\n\n\nSchema.create = function createSchema() {\n var schemas, types;\n\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n\n if (!schemas.every(function (schema) { return schema instanceof Schema; })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n\n if (!types.every(function (type) { return type instanceof Type; })) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n return new Schema({\n include: schemas,\n explicit: types\n });\n};\n\n\nmodule.exports = Schema;\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 8\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 10 (except 0) or base 60\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch === ':') break;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n if (!hasDigits) return false;\n\n // if !base60 - done;\n if (ch !== ':') return true;\n\n // base60 almost not used, no needs to optimize\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch, base, digits = [];\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value, 16);\n return sign * parseInt(value, 8);\n }\n\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseInt(v, 10));\n });\n\n value = 0;\n base = 1;\n\n digits.forEach(function (d) {\n value += (d * base);\n base *= 60;\n });\n\n return sign * value;\n\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (object) { return '0b' + object.toString(2); },\n octal: function (object) { return '0' + object.toString(8); },\n decimal: function (object) { return object.toString(10); },\n hexadecimal: function (object) { return '0x' + object.toString(16).toUpperCase(); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n '^(?:[-+]?(?:[0-9][0-9_]*)\\\\.[0-9_]*(?:[eE][-+][0-9]+)?' +\n '|\\\\.[0-9_]+(?:[eE][-+][0-9]+)?' +\n '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' +\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data)) return false;\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign, base, digits;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n\n } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n\n value = 0.0;\n base = 1;\n\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n\n return sign * value;\n\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./failsafe')\n ],\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./json')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\nvar NodeBuffer;\n\ntry {\n // A trick for browserified version, to not include `Buffer` shim\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n // Wrap into Buffer for NodeJS and leave Array for browser\n if (NodeBuffer) return new NodeBuffer(result);\n\n return result;\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./core')\n ],\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n return true;\n}\n\nfunction constructJavascriptUndefined() {\n /*eslint-disable no-undefined*/\n return undefined;\n}\n\nfunction representJavascriptUndefined() {\n return '';\n}\n\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n if (data === null) return false;\n if (data.length === 0) return false;\n\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // if regexp starts with '/' it can have modifiers and must be properly closed\n // `/foo/gim` - modifiers tail can be maximum 3 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n\n if (modifiers.length > 3) return false;\n // if expression starts with /, is should be properly terminated\n if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n }\n\n return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // `/foo/gim` - tail can be maximum 4 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n\n return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object /*, style*/) {\n var result = '/' + object.source + '/';\n\n if (object.global) result += 'g';\n if (object.multiline) result += 'm';\n if (object.ignoreCase) result += 'i';\n\n return result;\n}\n\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n","'use strict';\n\nvar esprima;\n\n// Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n// If not found - try to fallback to window.esprima. If not\n// found too - then fail to parse.\n//\ntry {\n // workaround to exclude package from browserify list.\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n /*global window */\n if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n if (data === null) return false;\n\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true });\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction constructJavascriptFunction(data) {\n /*jslint evil:true*/\n\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true }),\n params = [],\n body;\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n throw new Error('Failed to resolve function');\n }\n\n ast.body[0].expression.params.forEach(function (param) {\n params.push(param.name);\n });\n\n body = ast.body[0].expression.body.range;\n\n // Esprima's ranges include the first '{' and the last '}' characters on\n // function expressions. So cut them out.\n /*eslint-disable no-new-func*/\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n}\n\nfunction representJavascriptFunction(object /*, style*/) {\n return object.toString();\n}\n\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n","// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [\n require('./default_safe')\n ],\n explicit: [\n require('../type/js/undefined'),\n require('../type/js/regexp'),\n require('../type/js/function')\n ]\n});\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00);\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n return new YAMLException(\n message,\n new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length;\n _position < _length;\n _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode) {\n var index, quantity;\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n throwError(state, 'duplicated mapping key');\n }\n _result[keyNode] = valueNode;\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else {\n break; // Reading is done. Go to the epilogue.\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if (state.lineIndent > nodeIndent && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!state.anchorMap.hasOwnProperty(alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag !== null && state.tag !== '!') {\n if (state.tag === '?') {\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length;\n typeIndex < typeQuantity;\n typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only assigned to plain scalars. So, it isn't\n // needed to check for 'kind' conformity.\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = {};\n state.anchorMap = {};\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n var documents = loadDocuments(input, options), index, length;\n\n for (index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nfunction safeLoadAll(input, output, options) {\n loadAll(input, output, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nfunction safeLoad(input, options) {\n return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// Simplified test for values allowed after the first character in plain style.\nfunction isPlainSafe(c) {\n // Uses a subset of nb-char - c-flow-indicator - \":\" - \"#\"\n // where nb-char ::= c-printable - b-char - c-byte-order-mark.\n return isPrintable(c) && c !== 0xFEFF\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // - \":\" - \"#\"\n && c !== CHAR_COLON\n && c !== CHAR_SHARP;\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n return isPrintable(c) && c !== 0xFEFF\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {\n var i;\n var char;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(string.charCodeAt(0))\n && !isWhitespace(string.charCodeAt(string.length - 1));\n\n if (singleLineOnly) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n return plain && !testAmbiguousType(string)\n ? STYLE_PLAIN : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (string[0] === ' ' && indentPerLevel > 9) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey) {\n state.dump = (function () {\n if (string.length === 0) {\n return \"''\";\n }\n if (!state.noCompatMode &&\n DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n return \"'\" + string + \"'\";\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = (string[0] === ' ') ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char;\n var escapeSeq;\n\n for (var i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n result += !escapeSeq && isPrintable(char)\n ? string[i]\n : escapeSeq || encodeHex(char);\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level, object[index], false, false)) {\n if (index !== 0) _result += ', ';\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || index !== 0) {\n _result += generateNextLine(state, level);\n }\n _result += '- ' + state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (index !== 0) pairBuffer += ', ';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + ': ';\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || index !== 0) {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n state.tag = explicit ? type.tag : '?';\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n writeBlockSequence(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey);\n }\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n state.dump = '!<' + state.tag + '> ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n if (writeNode(state, 0, input, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nfunction safeDump(input, options) {\n return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n","'use strict';\n\n\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\n\n\nfunction deprecated(name) {\n return function () {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\n\n\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\n\n// Deprecated schema names from JS-YAML 2.0.x\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\n\n// Deprecated functions from JS-YAML 1.x.x\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","'use strict';\n\n\nvar yaml = require('./lib/js-yaml.js');\n\n\nmodule.exports = yaml;\n","import ymlParse from \"js-yaml\";\n\nexport default function(dom, data) {\n let localData = {};\n let el = dom.querySelector('script[type=\"text/front-matter\"]');\n if (el) {\n let text = el.textContent;\n localData = ymlParse.safeLoad(text);\n }\n\n data.title = localData.title ? localData.title : \"Untitled\";\n data.description = localData.description ? localData.description : \"No description.\";\n\n data.authors = localData.authors ? localData.authors : [];\n\n data.authors = data.authors.map((author, i) =>{\n let a = {};\n let name = Object.keys(author)[0];\n if ((typeof author) === \"string\") {\n name = author;\n } else {\n a.personalURL = author[name];\n }\n let names = name.split(\" \");\n a.name = name;\n a.firstName = names.slice(0, names.length - 1).join(\" \");\n a.lastName = names[names.length -1];\n if(localData.affiliations[i]) {\n let affiliation = Object.keys(localData.affiliations[i])[0];\n if ((typeof localData.affiliations[i]) === \"string\") {\n affiliation = localData.affiliations[i]\n } else {\n a.affiliationURL = localData.affiliations[i][affiliation];\n }\n a.affiliation = affiliation;\n }\n return a;\n });\n \n\n}\n","/* start bibtexParse 0.0.22 */\n\n//Original work by Henrik Muehe (c) 2010\n//\n//CommonJS port by Mikola Lysenko 2013\n//\n//Port to Browser lib by ORCID / RCPETERS\n//\n//Issues:\n//no comment handling within strings\n//no string concatenation\n//no variable values yet\n//Grammar implemented here:\n//bibtex -> (string | preamble | comment | entry)*;\n//string -> '@STRING' '{' key_equals_value '}';\n//preamble -> '@PREAMBLE' '{' value '}';\n//comment -> '@COMMENT' '{' value '}';\n//entry -> '@' key '{' key ',' key_value_list '}';\n//key_value_list -> key_equals_value (',' key_equals_value)*;\n//key_equals_value -> key '=' value;\n//value -> value_quotes | value_braces | key;\n//value_quotes -> '\"' .*? '\"'; // not quite\n//value_braces -> '{' .*? '\"'; // not quite\n(function(exports) {\n\n function BibtexParser() {\n \n this.months = [\"jan\", \"feb\", \"mar\", \"apr\", \"may\", \"jun\", \"jul\", \"aug\", \"sep\", \"oct\", \"nov\", \"dec\"];\n this.notKey = [',','{','}',' ','='];\n this.pos = 0;\n this.input = \"\";\n this.entries = new Array();\n\n this.currentEntry = \"\";\n\n this.setInput = function(t) {\n this.input = t;\n };\n\n this.getEntries = function() {\n return this.entries;\n };\n\n this.isWhitespace = function(s) {\n return (s == ' ' || s == '\\r' || s == '\\t' || s == '\\n');\n };\n\n this.match = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n this.pos += s.length;\n } else {\n throw \"Token mismatch, expected \" + s + \", found \"\n + this.input.substring(this.pos);\n };\n this.skipWhitespace(canCommentOut);\n };\n\n this.tryMatch = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n return true;\n } else {\n return false;\n };\n this.skipWhitespace(canCommentOut);\n };\n\n /* when search for a match all text can be ignored, not just white space */\n this.matchAt = function() {\n while (this.input.length > this.pos && this.input[this.pos] != '@') {\n this.pos++;\n };\n\n if (this.input[this.pos] == '@') {\n return true;\n };\n return false;\n };\n\n this.skipWhitespace = function(canCommentOut) {\n while (this.isWhitespace(this.input[this.pos])) {\n this.pos++;\n };\n if (this.input[this.pos] == \"%\" && canCommentOut == true) {\n while (this.input[this.pos] != \"\\n\") {\n this.pos++;\n };\n this.skipWhitespace(canCommentOut);\n };\n };\n\n this.value_braces = function() {\n var bracecount = 0;\n this.match(\"{\", false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '}') {\n if (bracecount > 0) {\n bracecount--;\n } else {\n var end = this.pos;\n this.match(\"}\", false);\n return this.input.substring(start, end);\n };\n } else if (this.input[this.pos] == '{') {\n bracecount++;\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value\";\n };\n };\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.value_comment = function() {\n var str = '';\n var brcktCnt = 0;\n while (!(this.tryMatch(\"}\", false) && brcktCnt == 0)) {\n str = str + this.input[this.pos];\n if (this.input[this.pos] == '{')\n brcktCnt++;\n if (this.input[this.pos] == '}')\n brcktCnt--;\n if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n this.pos++;\n };\n return str;\n };\n\n this.value_quotes = function() {\n this.match('\"', false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '\"') {\n var end = this.pos;\n this.match('\"', false);\n return this.input.substring(start, end);\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n }\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.single_value = function() {\n var start = this.pos;\n if (this.tryMatch(\"{\")) {\n return this.value_braces();\n } else if (this.tryMatch('\"')) {\n return this.value_quotes();\n } else {\n var k = this.key();\n if (k.match(\"^[0-9]+$\"))\n return k;\n else if (this.months.indexOf(k.toLowerCase()) >= 0)\n return k.toLowerCase();\n else\n throw \"Value expected:\" + this.input.substring(start) + ' for key: ' + k;\n \n };\n };\n\n this.value = function() {\n var values = [];\n values.push(this.single_value());\n while (this.tryMatch(\"#\")) {\n this.match(\"#\");\n values.push(this.single_value());\n };\n return values.join(\"\");\n };\n\n this.key = function() {\n var start = this.pos;\n while (true) {\n if (this.pos >= this.input.length) {\n throw \"Runaway key\";\n };\n // а-яА-Я is Cyrillic\n //console.log(this.input[this.pos]);\n if (this.notKey.indexOf(this.input[this.pos]) >= 0) {\n return this.input.substring(start, this.pos);\n } else {\n this.pos++;\n \n };\n };\n };\n\n this.key_equals_value = function() {\n var key = this.key();\n if (this.tryMatch(\"=\")) {\n this.match(\"=\");\n var val = this.value();\n return [ key, val ];\n } else {\n throw \"... = value expected, equals sign missing:\"\n + this.input.substring(this.pos);\n };\n };\n\n this.key_value_list = function() {\n var kv = this.key_equals_value();\n this.currentEntry['entryTags'] = {};\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n while (this.tryMatch(\",\")) {\n this.match(\",\");\n // fixes problems with commas at the end of a list\n if (this.tryMatch(\"}\")) {\n break;\n }\n ;\n kv = this.key_equals_value();\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n };\n };\n\n this.entry_body = function(d) {\n this.currentEntry = {};\n this.currentEntry['citationKey'] = this.key();\n this.currentEntry['entryType'] = d.substring(1);\n this.match(\",\");\n this.key_value_list();\n this.entries.push(this.currentEntry);\n };\n\n this.directive = function() {\n this.match(\"@\");\n return \"@\" + this.key();\n };\n\n this.preamble = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'PREAMBLE';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.comment = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'COMMENT';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.entry = function(d) {\n this.entry_body(d);\n };\n\n this.bibtex = function() {\n while (this.matchAt()) {\n var d = this.directive();\n this.match(\"{\");\n if (d == \"@STRING\") {\n this.string();\n } else if (d == \"@PREAMBLE\") {\n this.preamble();\n } else if (d == \"@COMMENT\") {\n this.comment();\n } else {\n this.entry(d);\n }\n this.match(\"}\");\n };\n };\n };\n \n exports.toJSON = function(bibtex) {\n var b = new BibtexParser();\n b.setInput(bibtex);\n b.bibtex();\n return b.entries;\n };\n\n /* added during hackathon don't hate on me */\n exports.toBibtex = function(json) {\n var out = '';\n for ( var i in json) {\n out += \"@\" + json[i].entryType;\n out += '{';\n if (json[i].citationKey)\n out += json[i].citationKey + ', ';\n if (json[i].entry)\n out += json[i].entry ;\n if (json[i].entryTags) {\n var tags = '';\n for (var jdx in json[i].entryTags) {\n if (tags.length != 0)\n tags += ', ';\n tags += jdx + '= {' + json[i].entryTags[jdx] + '}';\n }\n out += tags;\n }\n out += '}\\n\\n';\n }\n return out;\n \n };\n\n})(typeof exports === 'undefined' ? this['bibtexParse'] = {} : exports);\n\n/* end bibtexParse */\n","import bibtexParse from \"bibtex-parse-js\";\n\nexport default function(dom, data) {\n let el = dom.querySelector('script[type=\"text/bibliography\"]');\n let citations = [];\n let bibliography = {};\n //TODO If we don't have a local element, make a request for the document.\n if (el) {\n let rawBib = el.textContent;\n let parsed = bibtexParse.toJSON(rawBib);\n if(parsed) {\n parsed.forEach(e => {\n for (var k in e.entryTags){\n var val = e.entryTags[k];\n val = val.replace(/[\\t\\n ]+/g, \" \");\n val = val.replace(/{\\\\[\"^`\\.'acu~Hvs]( )?([a-zA-Z])}/g,\n (full, x, char) => char);\n val = val.replace(/{\\\\([a-zA-Z])}/g,\n (full, char) => char);\n e.entryTags[k] = val;\n }\n bibliography[e.citationKey] = e.entryTags;\n bibliography[e.citationKey].type = e.entryType;\n });\n }\n\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach(el => {\n let key = el.getAttribute(\"key\");\n if (key) {\n let citationKeys = key.split(\",\");\n citationKeys.forEach(key => {\n if (citations.indexOf(key) == -1){\n citations.push(key);\n if (!(key in bibliography)){\n console.warn(\"No bibliography entry found for: \" + key);\n }\n }\n });\n }\n });\n }\n data.bibliography = bibliography;\n data.citations = citations;\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(new Date(+start)); while (offseti(start, step), floori(start), start < stop)\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) while (--step >= 0) while (offseti(date, 1), !test(date)) {} // eslint-disable-line no-empty\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(Math.floor(date / durationSecond) * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(Math.floor(date / durationMinute) * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute} from \"./duration\";\n\nvar hour = interval(function(date) {\n var offset = date.getTimezoneOffset() * durationMinute % durationHour;\n if (offset < 0) offset += durationHour;\n date.setTime(Math.floor((+date - offset) / durationHour) * durationHour + offset);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval\";\nimport {durationWeek} from \"./duration\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {timeDay, timeSunday, timeMonday, timeYear, utcDay, utcSunday, utcMonday, utcYear} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"S\": formatSeconds,\n \"U\": formatWeekNumberSunday,\n \"w\": formatWeekdayNumber,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"S\": formatUTCSeconds,\n \"U\": formatUTCWeekNumberSunday,\n \"w\": formatUTCWeekdayNumber,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"S\": parseSeconds,\n \"U\": parseWeekNumberSunday,\n \"w\": parseWeekdayNumber,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0);\n if (i != string.length) return null;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n var day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?:\\:?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekdayNumber(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekdayNumber(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {timeFormat} from \"d3-time-format\";\n\nexport default function(dom, data) {\n\n data.authors = data.authors || [];\n\n // paths\n data.url = data.url ? data.url : \"http://distill.pub/\" + data.distillPath;\n data.githubUrl = \"https://github.com/\" + data.githubPath;\n\n data.previewURL = data.previewURL ? data.previewURL : data.url + \"/thumbnail.jpg\"\n\n // Homepage\n //data.homepage = !post.noHomepage;\n data.journal = data.journal || {};\n\n // Dates\n if (data.publishedDate){//} && data.journal) {\n data.volume = data.publishedDate.getFullYear() - 2015;\n data.issue = data.publishedDate.getMonth() + 1;\n }\n\n data.publishedDate = data.publishedDate ? data.publishedDate : new Date(\"Invalid\");\n data.updatedDate = data.updatedDate ? data.updatedDate : new Date(\"Invalid\");\n\n data.publishedDateRFC\n let RFC = timeFormat(\"%a, %d %b %Y %H:%M:%S %Z\");\n let months = [\"Jan\", \"Feb\", \"March\", \"April\", \"May\", \"June\", \"July\", \"Aug\", \"Sept\", \"Oct\", \"Nov\", \"Dec\"];\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n data.publishedDateRFC = RFC(data.publishedDate);\n data.publishedYear = data.publishedDate.getFullYear();\n data.publishedMonth = months[data.publishedDate.getMonth()];\n data.publishedDay = data.publishedDate.getDate();\n data.publishedMonthPadded = zeroPad(data.publishedDate.getMonth() + 1);\n data.publishedDayPadded = zeroPad(data.publishedDate.getDate());\n data.updatedDateRFC = RFC(data.updatedDate);\n\n if (data.authors.length > 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \", et al.\";\n } else if (data.authors.length === 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \" & \" + data.authors[1].lastName;\n } else if (data.authors.length === 1) {\n data.concatenatedAuthors = data.authors[0].lastName\n }\n\n data.bibtexAuthors = data.authors.map(function(author){\n return author.lastName + \", \" + author.firstName;\n }).join(\" and \");\n\n data.slug = data.authors.length ? data.authors[0].lastName.toLowerCase() + data.publishedYear + data.title.split(\" \")[0].toLowerCase() : \"Untitled\";\n\n}\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","import favicon from './distill-favicon.base64';\nimport escape from 'escape-html';\n\nexport default function(dom, data) {\n let head = dom.querySelector(\"head\");\n let appendHead = html => appendHtml(head, html);\n\n function meta(name, content, force) {\n if (content || force)\n appendHead(` \\n`);\n }\n\n appendHead(`\n \n \n \n \n ${data.title}\n `);\n\n appendHead(`\n \n \n \n `);\n data.authors.forEach((a) => {\n appendHtml(head, `\n `)\n });\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n // if this is a proprer article, generate Google Scholar meta data\n if (data.doiSuffix){\n appendHead(`\n \\n`);\n\n meta(\"citation_title\", data.title);\n //meta(\"citation_fulltext_html_url\", data.url);\n meta(\"citation_volume\", data.volume);\n meta(\"citation_issue\", data.issue);\n meta(\"citation_firstpage\", data.doiSuffix? `e${data.doiSuffix}` : undefined);\n meta(\"citation_doi\", data.doi);\n\n let journal = data.journal || {};\n meta(\"citation_journal_title\", journal.full_title || journal.title);\n meta(\"citation_journal_abbrev\", journal.abbrev_title);\n meta(\"citation_issn\", journal.issn);\n meta(\"citation_publisher\", journal.publisher);\n meta(\"citation_fulltext_world_readable\", \"\", true);\n\n if (data.publishedDate){\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n meta(\"citation_online_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n // Should we do something different here?\n meta(\"citation_publication_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n }\n\n (data.authors || []).forEach((a) => {\n meta(\"citation_author\", `${a.lastName}, ${a.firstName}`);\n meta(\"citation_author_institution\", a.affiliation);\n });\n\n if (data.citations) {\n data.citations.forEach(key => {\n let d = data.bibliography[key];\n if(!d) {\n console.warn(\"No bibliography data fround for \" + key)\n } else {\n meta(\"citation_reference\", citation_meta_content(data.bibliography[key]) )\n };\n });\n }\n }\n}\n\nfunction appendHtml(el, html) {\n el.innerHTML += html;\n}\n\nfunction citation_meta_content(ref){\n // Special test for arxiv\n var content = `citation_title=${ref.title};`;\n\n let name_strings = ref.author.split(\" and \").forEach(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1].trim();\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n content += `citation_author=${firsts} ${last};`;\n });\n\n if (\"year\" in ref) {\n content += `citation_publication_date=${ref.year};`;\n }\n\n var arxiv_id_search = /https?:\\/\\/arxiv\\.org\\/pdf\\/([0-9]*\\.[0-9]*)\\.pdf/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /https?:\\/\\/arxiv\\.org\\/abs\\/([0-9]*\\.[0-9]*)/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /arXiv preprint arXiv:([0-9]*\\.[0-9]*)/.exec(ref.journal);\n if (arxiv_id_search && arxiv_id_search[1]){\n content += `citation_arxiv_id=${arxiv_id_search[1]};`;\n return content;\n }\n if (\"journal\" in ref){\n content += `citation_journal_title=${ref.journal};`;\n }\n if (\"volume\" in ref) {\n content += `citation_volume=${ref.volume};`;\n }\n if (\"issue\" in ref || \"number\" in ref){\n content += `citation_number=${ref.issue || ref.number};`;\n }\n /*content += `citation_first_page=${};`;\n content += `citation_publication_date=${};`;*/\n return content;\n}\n","const html = `\n\n
    This article is a draft, awaiting review for publication in Distill
    \n`;\n\nexport default function(dom, data) {\n let banner = dom.createElement(\"dt-banner\");\n banner.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(banner, b.firstChild);\n banner.addEventListener(\"click\", function() {\n banner.style.display = \"none\";\n });\n}\n","/*!\n * mustache.js - Logic-less {{mustache}} templates with JavaScript\n * http://github.com/janl/mustache.js\n */\n\n/*global define: false Mustache: true*/\n\n(function defineMustache (global, factory) {\n if (typeof exports === 'object' && exports && typeof exports.nodeName !== 'string') {\n factory(exports); // CommonJS\n } else if (typeof define === 'function' && define.amd) {\n define(['exports'], factory); // AMD\n } else {\n global.Mustache = {};\n factory(global.Mustache); // script, wsh, asp\n }\n}(this, function mustacheFactory (mustache) {\n\n var objectToString = Object.prototype.toString;\n var isArray = Array.isArray || function isArrayPolyfill (object) {\n return objectToString.call(object) === '[object Array]';\n };\n\n function isFunction (object) {\n return typeof object === 'function';\n }\n\n /**\n * More correct typeof string handling array\n * which normally returns typeof 'object'\n */\n function typeStr (obj) {\n return isArray(obj) ? 'array' : typeof obj;\n }\n\n function escapeRegExp (string) {\n return string.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n }\n\n /**\n * Null safe way of checking whether or not an object,\n * including its prototype, has a given property\n */\n function hasProperty (obj, propName) {\n return obj != null && typeof obj === 'object' && (propName in obj);\n }\n\n // Workaround for https://issues.apache.org/jira/browse/COUCHDB-577\n // See https://github.com/janl/mustache.js/issues/189\n var regExpTest = RegExp.prototype.test;\n function testRegExp (re, string) {\n return regExpTest.call(re, string);\n }\n\n var nonSpaceRe = /\\S/;\n function isWhitespace (string) {\n return !testRegExp(nonSpaceRe, string);\n }\n\n var entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n function escapeHtml (string) {\n return String(string).replace(/[&<>\"'`=\\/]/g, function fromEntityMap (s) {\n return entityMap[s];\n });\n }\n\n var whiteRe = /\\s*/;\n var spaceRe = /\\s+/;\n var equalsRe = /\\s*=/;\n var curlyRe = /\\s*\\}/;\n var tagRe = /#|\\^|\\/|>|\\{|&|=|!/;\n\n /**\n * Breaks up the given `template` string into a tree of tokens. If the `tags`\n * argument is given here it must be an array with two string values: the\n * opening and closing tags used in the template (e.g. [ \"<%\", \"%>\" ]). Of\n * course, the default is to use mustaches (i.e. mustache.tags).\n *\n * A token is an array with at least 4 elements. The first element is the\n * mustache symbol that was used inside the tag, e.g. \"#\" or \"&\". If the tag\n * did not contain a symbol (i.e. {{myValue}}) this element is \"name\". For\n * all text that appears outside a symbol this element is \"text\".\n *\n * The second element of a token is its \"value\". For mustache tags this is\n * whatever else was inside the tag besides the opening symbol. For text tokens\n * this is the text itself.\n *\n * The third and fourth elements of the token are the start and end indices,\n * respectively, of the token in the original template.\n *\n * Tokens that are the root node of a subtree contain two more elements: 1) an\n * array of tokens in the subtree and 2) the index in the original template at\n * which the closing tag for that section begins.\n */\n function parseTemplate (template, tags) {\n if (!template)\n return [];\n\n var sections = []; // Stack to hold section tokens\n var tokens = []; // Buffer to hold the tokens\n var spaces = []; // Indices of whitespace tokens on the current line\n var hasTag = false; // Is there a {{tag}} on the current line?\n var nonSpace = false; // Is there a non-space char on the current line?\n\n // Strips all whitespace tokens array for the current line\n // if there was a {{#tag}} on it and otherwise only space.\n function stripSpace () {\n if (hasTag && !nonSpace) {\n while (spaces.length)\n delete tokens[spaces.pop()];\n } else {\n spaces = [];\n }\n\n hasTag = false;\n nonSpace = false;\n }\n\n var openingTagRe, closingTagRe, closingCurlyRe;\n function compileTags (tagsToCompile) {\n if (typeof tagsToCompile === 'string')\n tagsToCompile = tagsToCompile.split(spaceRe, 2);\n\n if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)\n throw new Error('Invalid tags: ' + tagsToCompile);\n\n openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\\\s*');\n closingTagRe = new RegExp('\\\\s*' + escapeRegExp(tagsToCompile[1]));\n closingCurlyRe = new RegExp('\\\\s*' + escapeRegExp('}' + tagsToCompile[1]));\n }\n\n compileTags(tags || mustache.tags);\n\n var scanner = new Scanner(template);\n\n var start, type, value, chr, token, openSection;\n while (!scanner.eos()) {\n start = scanner.pos;\n\n // Match any text between tags.\n value = scanner.scanUntil(openingTagRe);\n\n if (value) {\n for (var i = 0, valueLength = value.length; i < valueLength; ++i) {\n chr = value.charAt(i);\n\n if (isWhitespace(chr)) {\n spaces.push(tokens.length);\n } else {\n nonSpace = true;\n }\n\n tokens.push([ 'text', chr, start, start + 1 ]);\n start += 1;\n\n // Check for whitespace on the current line.\n if (chr === '\\n')\n stripSpace();\n }\n }\n\n // Match the opening tag.\n if (!scanner.scan(openingTagRe))\n break;\n\n hasTag = true;\n\n // Get the tag type.\n type = scanner.scan(tagRe) || 'name';\n scanner.scan(whiteRe);\n\n // Get the tag value.\n if (type === '=') {\n value = scanner.scanUntil(equalsRe);\n scanner.scan(equalsRe);\n scanner.scanUntil(closingTagRe);\n } else if (type === '{') {\n value = scanner.scanUntil(closingCurlyRe);\n scanner.scan(curlyRe);\n scanner.scanUntil(closingTagRe);\n type = '&';\n } else {\n value = scanner.scanUntil(closingTagRe);\n }\n\n // Match the closing tag.\n if (!scanner.scan(closingTagRe))\n throw new Error('Unclosed tag at ' + scanner.pos);\n\n token = [ type, value, start, scanner.pos ];\n tokens.push(token);\n\n if (type === '#' || type === '^') {\n sections.push(token);\n } else if (type === '/') {\n // Check section nesting.\n openSection = sections.pop();\n\n if (!openSection)\n throw new Error('Unopened section \"' + value + '\" at ' + start);\n\n if (openSection[1] !== value)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + start);\n } else if (type === 'name' || type === '{' || type === '&') {\n nonSpace = true;\n } else if (type === '=') {\n // Set the tags for the next time around.\n compileTags(value);\n }\n }\n\n // Make sure there are no open sections when we're done.\n openSection = sections.pop();\n\n if (openSection)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + scanner.pos);\n\n return nestTokens(squashTokens(tokens));\n }\n\n /**\n * Combines the values of consecutive text tokens in the given `tokens` array\n * to a single token.\n */\n function squashTokens (tokens) {\n var squashedTokens = [];\n\n var token, lastToken;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n if (token) {\n if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {\n lastToken[1] += token[1];\n lastToken[3] = token[3];\n } else {\n squashedTokens.push(token);\n lastToken = token;\n }\n }\n }\n\n return squashedTokens;\n }\n\n /**\n * Forms the given array of `tokens` into a nested tree structure where\n * tokens that represent a section have two additional items: 1) an array of\n * all tokens that appear in that section and 2) the index in the original\n * template that represents the end of that section.\n */\n function nestTokens (tokens) {\n var nestedTokens = [];\n var collector = nestedTokens;\n var sections = [];\n\n var token, section;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n switch (token[0]) {\n case '#':\n case '^':\n collector.push(token);\n sections.push(token);\n collector = token[4] = [];\n break;\n case '/':\n section = sections.pop();\n section[5] = token[2];\n collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;\n break;\n default:\n collector.push(token);\n }\n }\n\n return nestedTokens;\n }\n\n /**\n * A simple string scanner that is used by the template parser to find\n * tokens in template strings.\n */\n function Scanner (string) {\n this.string = string;\n this.tail = string;\n this.pos = 0;\n }\n\n /**\n * Returns `true` if the tail is empty (end of string).\n */\n Scanner.prototype.eos = function eos () {\n return this.tail === '';\n };\n\n /**\n * Tries to match the given regular expression at the current position.\n * Returns the matched text if it can match, the empty string otherwise.\n */\n Scanner.prototype.scan = function scan (re) {\n var match = this.tail.match(re);\n\n if (!match || match.index !== 0)\n return '';\n\n var string = match[0];\n\n this.tail = this.tail.substring(string.length);\n this.pos += string.length;\n\n return string;\n };\n\n /**\n * Skips all text until the given regular expression can be matched. Returns\n * the skipped string, which is the entire tail if no match can be made.\n */\n Scanner.prototype.scanUntil = function scanUntil (re) {\n var index = this.tail.search(re), match;\n\n switch (index) {\n case -1:\n match = this.tail;\n this.tail = '';\n break;\n case 0:\n match = '';\n break;\n default:\n match = this.tail.substring(0, index);\n this.tail = this.tail.substring(index);\n }\n\n this.pos += match.length;\n\n return match;\n };\n\n /**\n * Represents a rendering context by wrapping a view object and\n * maintaining a reference to the parent context.\n */\n function Context (view, parentContext) {\n this.view = view;\n this.cache = { '.': this.view };\n this.parent = parentContext;\n }\n\n /**\n * Creates a new context using the given view with this context\n * as the parent.\n */\n Context.prototype.push = function push (view) {\n return new Context(view, this);\n };\n\n /**\n * Returns the value of the given name in this context, traversing\n * up the context hierarchy if the value is absent in this context's view.\n */\n Context.prototype.lookup = function lookup (name) {\n var cache = this.cache;\n\n var value;\n if (cache.hasOwnProperty(name)) {\n value = cache[name];\n } else {\n var context = this, names, index, lookupHit = false;\n\n while (context) {\n if (name.indexOf('.') > 0) {\n value = context.view;\n names = name.split('.');\n index = 0;\n\n /**\n * Using the dot notion path in `name`, we descend through the\n * nested objects.\n *\n * To be certain that the lookup has been successful, we have to\n * check if the last object in the path actually has the property\n * we are looking for. We store the result in `lookupHit`.\n *\n * This is specially necessary for when the value has been set to\n * `undefined` and we want to avoid looking up parent contexts.\n **/\n while (value != null && index < names.length) {\n if (index === names.length - 1)\n lookupHit = hasProperty(value, names[index]);\n\n value = value[names[index++]];\n }\n } else {\n value = context.view[name];\n lookupHit = hasProperty(context.view, name);\n }\n\n if (lookupHit)\n break;\n\n context = context.parent;\n }\n\n cache[name] = value;\n }\n\n if (isFunction(value))\n value = value.call(this.view);\n\n return value;\n };\n\n /**\n * A Writer knows how to take a stream of tokens and render them to a\n * string, given a context. It also maintains a cache of templates to\n * avoid the need to parse the same template twice.\n */\n function Writer () {\n this.cache = {};\n }\n\n /**\n * Clears all cached templates in this writer.\n */\n Writer.prototype.clearCache = function clearCache () {\n this.cache = {};\n };\n\n /**\n * Parses and caches the given `template` and returns the array of tokens\n * that is generated from the parse.\n */\n Writer.prototype.parse = function parse (template, tags) {\n var cache = this.cache;\n var tokens = cache[template];\n\n if (tokens == null)\n tokens = cache[template] = parseTemplate(template, tags);\n\n return tokens;\n };\n\n /**\n * High-level method that is used to render the given `template` with\n * the given `view`.\n *\n * The optional `partials` argument may be an object that contains the\n * names and templates of partials that are used in the template. It may\n * also be a function that is used to load partial templates on the fly\n * that takes a single argument: the name of the partial.\n */\n Writer.prototype.render = function render (template, view, partials) {\n var tokens = this.parse(template);\n var context = (view instanceof Context) ? view : new Context(view);\n return this.renderTokens(tokens, context, partials, template);\n };\n\n /**\n * Low-level method that renders the given array of `tokens` using\n * the given `context` and `partials`.\n *\n * Note: The `originalTemplate` is only ever used to extract the portion\n * of the original template that was contained in a higher-order section.\n * If the template doesn't use higher-order sections, this argument may\n * be omitted.\n */\n Writer.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate) {\n var buffer = '';\n\n var token, symbol, value;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n value = undefined;\n token = tokens[i];\n symbol = token[0];\n\n if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate);\n else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate);\n else if (symbol === '>') value = this.renderPartial(token, context, partials, originalTemplate);\n else if (symbol === '&') value = this.unescapedValue(token, context);\n else if (symbol === 'name') value = this.escapedValue(token, context);\n else if (symbol === 'text') value = this.rawValue(token);\n\n if (value !== undefined)\n buffer += value;\n }\n\n return buffer;\n };\n\n Writer.prototype.renderSection = function renderSection (token, context, partials, originalTemplate) {\n var self = this;\n var buffer = '';\n var value = context.lookup(token[1]);\n\n // This function is used to render an arbitrary template\n // in the current context by higher-order sections.\n function subRender (template) {\n return self.render(template, context, partials);\n }\n\n if (!value) return;\n\n if (isArray(value)) {\n for (var j = 0, valueLength = value.length; j < valueLength; ++j) {\n buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate);\n }\n } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {\n buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate);\n } else if (isFunction(value)) {\n if (typeof originalTemplate !== 'string')\n throw new Error('Cannot use higher-order sections without the original template');\n\n // Extract the portion of the original template that the section contains.\n value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);\n\n if (value != null)\n buffer += value;\n } else {\n buffer += this.renderTokens(token[4], context, partials, originalTemplate);\n }\n return buffer;\n };\n\n Writer.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate) {\n var value = context.lookup(token[1]);\n\n // Use JavaScript's definition of falsy. Include empty arrays.\n // See https://github.com/janl/mustache.js/issues/186\n if (!value || (isArray(value) && value.length === 0))\n return this.renderTokens(token[4], context, partials, originalTemplate);\n };\n\n Writer.prototype.renderPartial = function renderPartial (token, context, partials) {\n if (!partials) return;\n\n var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\n if (value != null)\n return this.renderTokens(this.parse(value), context, partials, value);\n };\n\n Writer.prototype.unescapedValue = function unescapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return value;\n };\n\n Writer.prototype.escapedValue = function escapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return mustache.escape(value);\n };\n\n Writer.prototype.rawValue = function rawValue (token) {\n return token[1];\n };\n\n mustache.name = 'mustache.js';\n mustache.version = '2.3.0';\n mustache.tags = [ '{{', '}}' ];\n\n // All high-level mustache.* functions use this writer.\n var defaultWriter = new Writer();\n\n /**\n * Clears all cached templates in the default writer.\n */\n mustache.clearCache = function clearCache () {\n return defaultWriter.clearCache();\n };\n\n /**\n * Parses and caches the given template in the default writer and returns the\n * array of tokens it contains. Doing this ahead of time avoids the need to\n * parse templates on the fly as they are rendered.\n */\n mustache.parse = function parse (template, tags) {\n return defaultWriter.parse(template, tags);\n };\n\n /**\n * Renders the `template` with the given `view` and `partials` using the\n * default writer.\n */\n mustache.render = function render (template, view, partials) {\n if (typeof template !== 'string') {\n throw new TypeError('Invalid template! Template should be a \"string\" ' +\n 'but \"' + typeStr(template) + '\" was given as the first ' +\n 'argument for mustache#render(template, view, partials)');\n }\n\n return defaultWriter.render(template, view, partials);\n };\n\n // This is here for backwards compatibility with 0.4.x.,\n /*eslint-disable */ // eslint wants camel cased function name\n mustache.to_html = function to_html (template, view, partials, send) {\n /*eslint-enable*/\n\n var result = mustache.render(template, view, partials);\n\n if (isFunction(send)) {\n send(result);\n } else {\n return result;\n }\n };\n\n // Export the escaping function so that the user may override it.\n // See https://github.com/janl/mustache.js/issues/244\n mustache.escape = escapeHtml;\n\n // Export these mainly for testing, but also for advanced usage.\n mustache.Scanner = Scanner;\n mustache.Context = Context;\n mustache.Writer = Writer;\n\n return mustache;\n}));\n","import mustache from \"mustache\";\n\nconst html = `\n\n\n`;\n\nconst template = `\n
    \n
    \n {{#authors}}\n
    \n {{#personalURL}}\n {{name}}\n {{/personalURL}}\n {{^personalURL}}\n
    {{name}}
    \n {{/personalURL}}\n {{#affiliation}}\n {{#affiliationURL}}\n {{affiliation}}\n {{/affiliationURL}}\n {{^affiliationURL}}\n
    {{affiliation}}
    \n {{/affiliationURL}}\n {{/affiliation}}\n
    \n {{/authors}}\n
    \n
    \n
    {{publishedMonth}}. {{publishedDay}}
    \n
    {{publishedYear}}
    \n
    \n \n
    Citation:
    \n
    {{concatenatedAuthors}}, {{publishedYear}}
    \n
    \n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-byline');\n if (el) {\n el.innerHTML = html + mustache.render(template, data);\n }\n}\n","const html = `\n\n\n
    \n

    References

    \n \n

    Errors, Reuse, and Citation

    \n

    If you see mistakes or want to suggest changes, please create an issue on GitHub.

    \n

    Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on GitHub. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: “Figure from …”.

    \n

    For attribution in academic contexts, please cite this work as

    \n
    \n  

    BibTeX citation

    \n
    \n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-appendix')\n if (el) {\n let oldHtml = el.innerHTML;\n el.innerHTML = html;\n let div = el.querySelector(\"div.l-body\")\n\n if (dom.querySelector(\"dt-fn\")) {\n div.innerHTML = `

    Footnotes

    ` + div.innerHTML;\n }\n\n div.innerHTML = oldHtml + div.innerHTML;\n if (data.githubCompareUpdatesUrl) {\n div.innerHTML = `

    Updates

    View all changes to this article since it was first published.

    ` + div.innerHTML;\n }\n\n el.querySelector(\"a.github\").setAttribute(\"href\", data.githubUrl);\n el.querySelector(\"a.github-issue\").setAttribute(\"href\", data.githubUrl + \"/issues/new\");\n el.querySelector(\".citation.short\").textContent = data.concatenatedAuthors + \", \" + '\"' + data.title + '\", Distill, ' + data.publishedYear + \".\";\n var bibtex = \"@article{\" + data.slug + \",\\n\";\n bibtex += \" author = {\" + data.bibtexAuthors + \"},\\n\";\n bibtex += \" title = {\" + data.title + \"},\\n\";\n bibtex += \" journal = {Distill},\\n\";\n bibtex += \" year = {\" + data.publishedYear + \"},\\n\";\n bibtex += \" note = {\" + data.url + \"}\\n\";\n bibtex += \"}\";\n el.querySelector(\".citation.long\").textContent = bibtex;\n }\n\n}\n","export default function(dom, data) {\n let css = `\n dt-cite {\n color: hsla(206, 90%, 20%, 0.7);\n }\n dt-cite .citation-number {\n cursor: default;\n white-space: nowrap;\n font-family: -apple-system, BlinkMacSystemFont, \"Roboto\", Helvetica, sans-serif;\n font-size: 75%;\n color: hsla(206, 90%, 20%, 0.7);\n display: inline-block;\n line-height: 1.1em;\n text-align: center;\n position: relative;\n top: -2px;\n margin: 0 2px;\n }\n figcaption dt-cite .citation-number {\n font-size: 11px;\n font-weight: normal;\n top: -2px;\n line-height: 1em;\n }\n `;\n\n let style = dom.createElement(\"style\");\n style.textContent = css;\n dom.querySelector(\"body\").appendChild(style);\n\n let citations = data.citations;\n /*if (data.citations) {\n citations = Object.keys(data.citations).map(c => data.citations[c]);\n citations.sort((a, b) => {\n return a.author.localeCompare(b.author);\n });\n }*/\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach((el,n) => {\n var key = el.getAttribute(\"key\");\n if (key) {\n var keys = key.split(\",\");\n var cite_string = inline_cite_short(keys);\n var cite_hover_str = \"\";\n keys.map((key,n) => {\n if (n>0) cite_hover_str += \"

    \";\n cite_hover_str += hover_cite(data.bibliography[key]);\n });\n cite_hover_str = cite_hover_str.replace(/\"/g, \"'\")\n var orig_string = el.innerHTML;\n if (orig_string != \"\") orig_string += \" \";\n el.innerHTML = `${orig_string}${cite_string}`;\n }\n });\n\n let bibEl = dom.querySelector(\"dt-bibliography\");\n if (bibEl) {\n let ol = dom.createElement(\"ol\");\n citations.forEach(key => {\n let el = dom.createElement(\"li\");\n el.innerHTML = bibliography_cite(data.bibliography[key]);\n ol.appendChild(el);\n })\n bibEl.appendChild(ol);\n }\n\n function inline_cite_short(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var n = data.citations.indexOf(key)+1;\n return \"\"+n;\n } else {\n return \"?\";\n }\n }\n return \"[\"+keys.map(cite_string).join(\", \")+\"]\";\n }\n\n function inline_cite_long(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var ent = data.bibliography[key];\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var year = ent.year;\n if (names.length == 1) return names[0] + \", \" + year;\n if (names.length == 2) return names[0] + \" & \" + names[1] + \", \" + year;\n if (names.length > 2) return names[0] + \", et al., \" + year;\n } else {\n return \"?\";\n }\n }\n return keys.map(cite_string).join(\", \");\n }\n\n function author_string(ent, template, sep, finalSep){\n var names = ent.author.split(\" and \");\n let name_strings = names.map(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1];\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n var initials = \"\";\n if (firsts != undefined) {\n initials = firsts.trim().split(\" \").map(s => s.trim()[0]);\n initials = initials.join(\".\")+\".\";\n }\n return template.replace(\"${F}\", firsts)\n .replace(\"${L}\", last)\n .replace(\"${I}\", initials);\n });\n if (names.length > 1) {\n var str = name_strings.slice(0, names.length-1).join(sep);\n str += (finalSep || sep) + name_strings[names.length-1];\n return str;\n } else {\n return name_strings[0];\n }\n }\n\n function venue_string(ent) {\n var cite = (ent.journal || ent.booktitle || \"\")\n if (\"volume\" in ent){\n var issue = ent.issue || ent.number;\n issue = (issue != undefined)? \"(\"+issue+\")\" : \"\";\n cite += \", Vol \" + ent.volume + issue;\n }\n if (\"pages\" in ent){\n cite += \", pp. \" + ent.pages\n }\n if (cite != \"\") cite += \". \"\n if (\"publisher\" in ent){\n cite += ent.publisher;\n if (cite[cite.length-1] != \".\") cite += \".\";\n }\n return cite;\n }\n\n function link_string(ent){\n if (\"url\" in ent){\n var url = ent.url;\n var arxiv_match = (/arxiv\\.org\\/abs\\/([0-9\\.]*)/).exec(url);\n if (arxiv_match != null){\n url = `http://arxiv.org/pdf/${arxiv_match[1]}.pdf`;\n }\n\n if (url.slice(-4) == \".pdf\"){\n var label = \"PDF\";\n } else if (url.slice(-5) == \".html\") {\n var label = \"HTML\";\n }\n return `  [${label||\"link\"}]`;\n }/* else if (\"doi\" in ent){\n return `  [DOI]`;\n }*/ else {\n return \"\";\n }\n }\n function doi_string(ent, new_line){\n if (\"doi\" in ent) {\n return `${new_line?\"
    \":\"\"} DOI: ${ent.doi}`;\n } else {\n return \"\";\n }\n }\n\n function bibliography_cite(ent, fancy){\n if (ent){\n var cite = \"\" + ent.title + \" \"\n cite += link_string(ent) + \"
    \";\n cite += author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += venue_string(ent);\n cite += doi_string(ent);\n return cite\n /*var cite = author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += \"\" + ent.title + \". \";\n cite += venue_string(ent);\n cite += doi_string(ent);\n cite += link_string(ent);\n return cite*/\n } else {\n return \"?\";\n }\n }\n\n function hover_cite(ent){\n if (ent){\n var cite = \"\";\n cite += \"\" + ent.title + \"\";\n cite += link_string(ent);\n cite += \"
    \"\n\n var a_str = author_string(ent, \"${I} ${L}\", \", \") + \".\";\n var v_str = venue_string(ent).trim() + \" \" + ent.year + \". \" + doi_string(ent, true);\n\n if ((a_str+v_str).length < Math.min(40, ent.title.length)) {\n cite += a_str + \" \" + v_str;\n } else {\n cite += a_str + \"
    \" + v_str;\n }\n return cite;\n } else {\n return \"?\";\n }\n }\n\n\n //https://scholar.google.com/scholar?q=allintitle%3ADocument+author%3Aolah\n function get_GS_URL(ent){\n if (ent){\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var title = ent.title.split(\" \")//.replace(/[,:]/, \"\")\n var url = \"http://search.labs.crossref.org/dois?\"//\"\"https://scholar.google.com/scholar?\"\n url += uris({q: names.join(\" \") + \" \" + title.join(\" \")})\n }\n\n }\n}\n","export default function(dom, data) {\n\n var fnTags = [].slice.apply(dom.querySelectorAll(\"dt-fn\"));\n var fnContent = [];\n fnTags.forEach((el,n) => {\n var content = el.innerHTML;\n fnContent.push(content);\n n = (n+1)+\"\";\n var key = \"fn-\"+n;\n var escaped_content = content.replace(/\"/g, \"'\");\n el.innerHTML = `${n}`;\n });\n\n let fnList = dom.querySelector(\"dt-fn-list\");\n if (fnList) {\n let ol = dom.createElement(\"ol\");\n fnContent.forEach(content => {\n let el = dom.createElement(\"li\");\n el.innerHTML = content;\n ol.appendChild(el);\n })\n fnList.appendChild(ol);\n }\n\n}\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n */\n\n;(function() {\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^( *[-*_]){3,} *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,\n nptable: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n blockquote: /^( *>[^\\n]+(\\n(?!def)[^\\n]+)*\\n*)+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n table: noop,\n paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,\n text: /^[^\\n]+/\n};\n\nblock.bullet = /(?:[*+-]|\\d+\\.)/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = replace(block.item, 'gm')\n (/bull/g, block.bullet)\n ();\n\nblock.list = replace(block.list)\n (/bull/g, block.bullet)\n ('hr', '\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))')\n ('def', '\\\\n+(?=' + block.def.source + ')')\n ();\n\nblock.blockquote = replace(block.blockquote)\n ('def', block.def)\n ();\n\nblock._tag = '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'\n + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'\n + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|[^\\\\w\\\\s@]*@)\\\\b';\n\nblock.html = replace(block.html)\n ('comment', //)\n ('closed', /<(tag)[\\s\\S]+?<\\/\\1>/)\n ('closing', /])*?>/)\n (/tag/g, block._tag)\n ();\n\nblock.paragraph = replace(block.paragraph)\n ('hr', block.hr)\n ('heading', block.heading)\n ('lheading', block.lheading)\n ('blockquote', block.blockquote)\n ('tag', '<' + block._tag)\n ('def', block.def)\n ();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]*?)\\s*\\1 *(?:\\n+|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = replace(block.paragraph)\n ('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n ();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top, bq) {\n var src = src.replace(/^ +$/gm, '')\n , next\n , loose\n , cap\n , bull\n , b\n , item\n , space\n , i\n , l;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic\n ? cap.replace(/\\n+$/, '')\n : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top, true);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n\n this.tokens.push({\n type: 'list_start',\n ordered: bull.length > 1\n });\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n this.tokens.push({\n type: loose\n ? 'loose_item_start'\n : 'list_item_start'\n });\n\n // Recurse.\n this.token(item, false, bq);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if ((!bq && top) && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.links[cap[1].toLowerCase()] = {\n href: cap[2],\n title: cap[3]\n };\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i]\n .replace(/^ *\\| *| *\\| *$/g, '')\n .split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n autolink: /^<([^ >]+(@|:\\/)[^ >]+)>/,\n url: noop,\n tag: /^|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^\\b_((?:[^_]|__)+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n code: /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n text: /^[\\s\\S]+?(?=[\\\\?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\ninline.link = replace(inline.link)\n ('inside', inline._inside)\n ('href', inline._href)\n ();\n\ninline.reflink = replace(inline.reflink)\n ('inside', inline._inside)\n ();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: replace(inline.escape)('])', '~|])')(),\n url: /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n text: replace(inline.text)\n (']|', '~]|')\n ('|', '|https?://|')\n ()\n});\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: replace(inline.br)('{2,}', '*')(),\n text: replace(inline.gfm.text)('{2,}', '*')()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer;\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new\n Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n var out = ''\n , link\n , text\n , href\n , cap;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += cap[1];\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = cap[1].charAt(6) === ':'\n ? this.mangle(cap[1].substring(7))\n : this.mangle(cap[1]);\n href = this.mangle('mailto:') + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n src = src.substring(cap[0].length);\n text = escape(cap[1]);\n href = text;\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^/i.test(cap[0])) {\n this.inLink = false;\n }\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0]\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out += this.outputLink(cap, {\n href: cap[2],\n title: cap[3]\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2], true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = escape(link.href)\n , title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = ''\n , l = text.length\n , i = 0\n , ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || {};\n}\n\nRenderer.prototype.code = function(code, lang, escaped) {\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '\\n
    ';\n }\n\n return '
    '\n    + (escaped ? code : escape(code, true))\n    + '\\n
    \\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '
    \\n' + quote + '
    \\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw) {\n return ''\n + text\n + '\\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n};\n\nRenderer.prototype.list = function(body, ordered) {\n var type = ordered ? 'ol' : 'ul';\n return '<' + type + '>\\n' + body + '\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '
  • ' + text + '
  • \\n';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '

    ' + text + '

    \\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + '\\n'\n + body\n + '\\n'\n + '
    \\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '\\n' + content + '\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' style=\"text-align:' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.em = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? '
    ' : '
    ';\n};\n\nRenderer.prototype.del = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n if (this.options.sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return '';\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0) {\n return '';\n }\n }\n var out = '
    ';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n var out = '\"'' : '>';\n return out;\n};\n\nRenderer.prototype.text = function(text) {\n return text;\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer;\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options, renderer) {\n var parser = new Parser(options, renderer);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options, this.renderer);\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n this.token.text);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = ''\n , body = ''\n , i\n , row\n , cell\n , flags\n , j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n flags = { header: true, align: this.token.align[i] };\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n var body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n var body = ''\n , ordered = this.token.ordered;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered);\n }\n case 'list_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'loose_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'html': {\n var html = !this.token.pre && !this.options.pedantic\n ? this.inline.output(this.token.text)\n : this.token.text;\n return this.renderer.html(html);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n }\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n return html\n .replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\nfunction unescape(html) {\n\t// explicitly match decimal, hex, and named HTML entities \n return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/g, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction replace(regex, opt) {\n regex = regex.source;\n opt = opt || '';\n return function self(name, val) {\n if (!name) return new RegExp(regex, opt);\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return self;\n };\n}\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1\n , target\n , key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n\n var highlight = opt.highlight\n , tokens\n , pending\n , i = 0;\n\n try {\n tokens = Lexer.lex(src, opt)\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/chjj/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occured:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n sanitizer: null,\n mangle: true,\n smartLists: false,\n silent: false,\n highlight: null,\n langPrefix: 'lang-',\n smartypants: false,\n headerPrefix: '',\n renderer: new Renderer,\n xhtml: false\n};\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.parse = marked;\n\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n this.marked = marked;\n}\n\n}).call(function() {\n return this || (typeof window !== 'undefined' ? window : global);\n}());\n","import marked from 'marked';\n\nmarked.setOptions({\n gfm: true,\n smartypants: true\n});\n\nexport default function(dom, data) {\n let markdownElements = [].slice.call(dom.querySelectorAll('[markdown]'));\n markdownElements.forEach(el => {\n let content = el.innerHTML;\n // Set default indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n\n el.innerHTML = marked(content);\n });\n}\n","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = _self.Prism = {\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/ text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\tbreak tokenloop;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t delNum = 1;\n\n\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t to = match.index + match[0].length,\n\t\t\t\t\t\t k = i,\n\t\t\t\t\t\t p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && p < to; ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t match = match[0].slice(lookbehindLength),\n\t\t\t\t\t to = from + match.length,\n\t\t\t\t\t before = str.slice(0, from),\n\t\t\t\t\t after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (env.type == 'comment') {\n\t\tenv.attributes['spellcheck'] = 'true';\n\t}\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n \t// In worker\n\t_self.addEventListener('message', function(evt) {\n\t\tvar message = JSON.parse(evt.data),\n\t\t lang = message.language,\n\t\t code = message.code,\n\t\t immediateClose = message.immediateClose;\n\n\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\tif (immediateClose) {\n\t\t\t_self.close();\n\t\t}\n\t}, false);\n\n\treturn _self.Prism;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (document.addEventListener && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': //,\n\t'prolog': /<\\?[\\w\\W]+?\\?>/,\n\t'doctype': //i,\n\t'cdata': //i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\w\\W])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:('|\")[\\w\\W]*?(\\1)|[^\\s>]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /[=>\"']/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\w\\W]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^\\{\\}\\s][^\\{\\};]*?(?=\\s*\\{)/,\n\t'string': {\n\t\tpattern: /(\"|')(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'property': /(\\b|\\B)[\\w-]+(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|').*?\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\w\\W]*?\\*\\//,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[a-z0-9_\\.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /(\\.|\\\\)/\n\t\t}\n\t},\n\t'keyword': /\\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(0x[\\dA-Fa-f]+|0b[01]+|0o[0-7]+|\\d*\\.?\\d+([Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*(?=\\()/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*\\*?|\\/|~|\\^|%|\\.{3}/\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[.+?]|\\\\.|[^/\\\\\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\\\\\|\\\\?[^\\\\])*?`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript'\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tif(Array.prototype.forEach) { // Check to prevent error in IE8\n\t\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\t\tvar language, parent = pre;\n\t\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\t\tparent = parent.parentNode;\n\t\t\t\t}\n\n\t\t\t\tif (parent) {\n\t\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t\t}\n\n\t\t\t\tif (!language) {\n\t\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t\t}\n\n\t\t\t\tvar code = document.createElement('code');\n\t\t\t\tcode.className = 'language-' + language;\n\n\t\t\t\tpre.textContent = '';\n\n\t\t\t\tcode.textContent = 'Loading…';\n\n\t\t\t\tpre.appendChild(code);\n\n\t\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\t\txhr.open('GET', src, true);\n\n\t\t\t\txhr.onreadystatechange = function () {\n\t\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\txhr.send(null);\n\t\t\t});\n\t\t}\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\n})();\n","import Prism from \"prismjs\";\n\nexport default function(dom, data) {\n let codeElements = [].slice.call(dom.querySelectorAll(\"dt-code\"));\n codeElements.forEach(el => {\n let content = el.textContent;\n el.innerHTML = \"\";\n let language = el.getAttribute(\"language\");\n let c = dom.createElement(\"code\");\n if (el.getAttribute(\"block\") === \"\") {\n // Let's normalize the tab indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n let p = dom.createElement(\"pre\");\n p.appendChild(c);\n el.appendChild(p);\n } else {\n el.appendChild(c);\n }\n let highlighted = content;\n if (Prism.languages[language]) {\n c.setAttribute(\"class\", \"language-\" + language);\n highlighted = Prism.highlight(content, Prism.languages[language]);\n }\n c.innerHTML = highlighted;\n });\n}\n","export default function(dom, data) {\n\n var textNodes = dom.createTreeWalker(\n dom.body,\n dom.defaultView.NodeFilter.SHOW_TEXT\n );\n while (textNodes.nextNode()) {\n var n = textNodes.currentNode,\n text = n.nodeValue;\n if (text && acceptNode(n)) {\n text = quotes(text);\n text = punctuation(text);\n n.nodeValue = text;\n }\n }\n}\n\nfunction acceptNode(node) {\n var parent = node.parentElement;\n var isMath = (parent && parent.getAttribute && parent.getAttribute(\"class\")) ? parent.getAttribute(\"class\").includes(\"katex\") || parent.getAttribute(\"class\").includes(\"MathJax\") : false;\n return parent &&\n parent.nodeName !== \"SCRIPT\" &&\n parent.nodeName !== \"STYLE\" &&\n parent.nodeName !== \"CODE\" &&\n parent.nodeName !== \"PRE\" &&\n parent.nodeName !== \"SPAN\" &&\n parent.nodeName !== \"DT-HEADER\" &&\n parent.nodeName !== \"DT-BYLINE\" &&\n parent.nodeName !== \"DT-MATH\" &&\n parent.nodeName !== \"DT-CODE\" &&\n parent.nodeName !== \"DT-BIBLIOGRAPHY\" &&\n parent.nodeName !== \"DT-FOOTER\" &&\n parent.nodeType !== 8 && //comment nodes\n !isMath;\n}\n\n\n/*!\n * typeset - Typesetting for the web\n * @version v0.1.6\n * @link https://github.com/davidmerfield/Typeset.js\n * @author David Merfield\n */\n // which has a CC0 license\n // http://creativecommons.org/publicdomain/zero/1.0/\n\n\nfunction punctuation(text){\n\n // Dashes\n text = text.replace(/--/g, '\\u2014');\n text = text.replace(/ \\u2014 /g,\"\\u2009\\u2014\\u2009\"); //this has thin spaces\n\n // Elipses\n text = text.replace(/\\.\\.\\./g,'…');\n\n // Nbsp for punc with spaces\n var NBSP = \"\\u00a0\";\n var NBSP_PUNCTUATION_START = /([«¿¡]) /g;\n var NBSP_PUNCTUATION_END = / ([\\!\\?:;\\.,‽»])/g;\n\n text = text.replace(NBSP_PUNCTUATION_START, '$1' + NBSP);\n text = text.replace(NBSP_PUNCTUATION_END, NBSP + '$1');\n\n return text;\n}\n\nfunction quotes(text) {\n\n text = text\n .replace(/(\\W|^)\"([^\\s\\!\\?:;\\.,‽»])/g, '$1\\u201c$2') // beginning \"\n .replace(/(\\u201c[^\"]*)\"([^\"]*$|[^\\u201c\"]*\\u201c)/g, '$1\\u201d$2') // ending \"\n .replace(/([^0-9])\"/g,'$1\\u201d') // remaining \" at end of word\n .replace(/(\\W|^)'(\\S)/g, '$1\\u2018$2') // beginning '\n .replace(/([a-z])'([a-z])/ig, '$1\\u2019$2') // conjunction's possession\n .replace(/((\\u2018[^']*)|[a-z])'([^0-9]|$)/ig, '$1\\u2019$3') // ending '\n .replace(/(\\u2018)([0-9]{2}[^\\u2019]*)(\\u2018([^0-9]|$)|$|\\u2019[a-z])/ig, '\\u2019$2$3') // abbrev. years like '93\n .replace(/(\\B|^)\\u2018(?=([^\\u2019]*\\u2019\\b)*([^\\u2019\\u2018]*\\W[\\u2019\\u2018]\\b|[^\\u2019\\u2018]*$))/ig, '$1\\u2019') // backwards apostrophe\n .replace(/'''/g, '\\u2034') // triple prime\n .replace(/(\"|'')/g, '\\u2033') // double prime\n .replace(/'/g, '\\u2032');\n\n // Allow escaped quotes\n text = text.replace(/\\\\“/, '\\\"');\n text = text.replace(/\\\\”/, '\\\"');\n text = text.replace(/\\\\’/, '\\'');\n text = text.replace(/\\\\‘/, '\\'');\n\n return text;\n}\n\nfunction ligatures(text){\n\n text = text.replace(/fi/g, 'fi');\n text = text.replace(/fl/g, 'fl');\n\n return text;\n};\n","import code from './hover-box.txt';\n\nexport default function(dom) {\n let s = dom.createElement(\"script\");\n s.textContent = code;\n dom.querySelector(\"body\").appendChild(s);\n}\n","//import xml from \"xml\";\n\nexport default function(data) {\n\n\n var date = data.publishedDate;\n\n var batch_timestamp = Math.floor(Date.now() / 1000);\n var batch_id = data.authors.length ? data.authors[0].lastName.toLowerCase().slice(0,20) : \"Anonymous\";\n batch_id += \"_\" + date.getFullYear();\n batch_id += \"_\" + data.title.split(\" \")[0].toLowerCase().slice(0,20) + \"_\" + batch_timestamp;\n // generate XML\n var crf_data =\n {doi_batch : [\n\n { _attr: {\n version: \"4.3.7\",\n xmlns: \"http://www.crossref.org/schema/4.3.7\",\n \"xmlns:xsi\": \"http://www.w3.org/2001/XMLSchema-instance\",\n \"xsi:schemaLocation\": \"http://www.crossref.org/schema/4.3.7 http://www.crossref.org/schemas/crossref4.3.7.xsd\",\n }},\n\n { head: [\n {doi_batch_id: batch_id},\n {timestamp: batch_timestamp},\n {depositor: [\n {depositor_name: data.journal.publisherName},\n {email_address: data.journal.publisherEmail},\n ]},\n {registrant: data.journal.publisherName},\n ]},\n\n {body: [\n {journal: [\n\n {journal_metadata: [\n {full_title: data.journal.full_title || data.journal.title},\n {abbrev_title: data.journal.abbrev_title || data.journal.title || data.journal.full_title},\n {issn: data.journal.issn},\n {doi_data: [\n {doi: data.journal.doi},\n {resource: data.journal.url},\n ]},\n ]},\n\n {journal_issue: [\n {publication_date: [\n {month: date.getMonth()+1},\n {year: date.getFullYear()},\n ]},\n {journal_volume: [\n {volume: data.volume},\n ]},\n {issue: data.issue},\n ]},\n\n {journal_article: [\n {titles: [\n {title: data.title},\n ]},\n { contributors:\n data.authors.map((author, ind) => (\n {person_name: [\n { _attr: {\n contributor_role: \"author\",\n sequence: (ind == 0)? \"first\" : \"additional\"\n }},\n {given_name: author.firstName},\n {surname: author.lastName},\n {affiliation: author.affiliation}\n // TODO: ORCID?\n ]}\n ))\n },\n {publication_date: [\n {month: date.getMonth()+1},\n {day: date.getDate()},\n {year: date.getFullYear()}\n ]},\n { publisher_item: [\n {item_number: data.doi}\n ]},\n {doi_data: [\n {doi: data.doi},\n //{timestamp: \"\"},\n {resource: data.url},\n ]},\n {citation_list:\n data.citations.map(key =>\n citation_xml(key, data.bibliography[key]))\n }\n\n ]},\n\n ]},\n ]},\n ]};\n\n return xml(crf_data);\n}\n\nfunction citation_xml(key, ent){\n if (ent == undefined) return {};\n var info = [];\n info.push({_attr: {key: key}});\n if (\"title\" in ent)\n info.push({article_title: ent.title});\n if (\"author\" in ent)\n info.push({author: ent.author.split(\" and \")[0].split(\",\")[0].trim()});\n if (\"journal\" in ent)\n info.push({journal_title: ent.journal});\n if (\"booktitle\" in ent)\n info.push({volume_title: ent.booktitle});\n if (\"volume\" in ent)\n info.push({volume: ent.volume});\n if (\"issue\" in ent)\n info.push({issue: ent.issue});\n if (\"doi\" in ent)\n info.push({doi: ent.doi});\n return {citation: info}\n}\n\nfunction xml(obj) {\n //console.log(typeof(obj), obj)\n if (typeof obj === 'string') return obj;\n if (typeof obj === 'number') return \"\"+obj;\n let keys = Object.keys(obj);\n if (keys.length != 1) console.error(\"can't interpret \", obj, \"as xml\");\n let name = keys[0];\n var full_content = obj[name];\n var attr = {};\n if (Array.isArray(full_content)){\n var content = [];\n for (var i in full_content) {\n var obj = full_content[i];\n var obj_name = Object.keys(obj)[0];\n if (\"_attr\" == obj_name) {\n attr = obj[\"_attr\"];\n } else {\n //console.log(Object.keys(obj)[0])\n content.push(obj);\n }\n }\n } else {\n content = full_content;\n }\n if (content == undefined){\n content = \"undefined\"\n }\n\n let attr_string = \"\";\n for (var k in attr) {\n attr_string += ` ${k}=\\\"${attr[k]}\\\"`\n }\n\n //console.log(typeof content, Array.isArray(content), content instanceof String, content)\n if (Array.isArray(content)){\n content = content.map(xml);\n content = content.join(\"\\n\").split(\"\\n\");\n content = content.map(s => \" \" + s).join(\"\\n\")\n var result = `<${name}${attr_string}>\\n${content}\\n`;\n } else {\n content = xml(content);\n var result = `<${name}${attr_string}>${content}`;\n }\n return result;\n}\n","import logo from \"./distill-logo.svg\";\n\nconst html = `\n\n\n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-header\");\n if(el) {\n el.innerHTML = html;\n } else {\n let header = dom.createElement(\"dt-header\");\n header.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(header, b.firstChild);\n }\n}\n","import logo from \"./distill-logo.svg\";\n\nlet html = `\n\n\n
    \n \n ${logo}\n Distill\n is dedicated to clear explanations of machine learning\n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-footer\");\n if(el) {\n el.innerHTML = html;\n } else {\n let footer = dom.createElement(\"dt-footer\");\n footer.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.appendChild(footer);\n }\n}\n","import html from \"./components/html\";\nimport styles from \"./components/styles\";\nimport frontMatter from \"./components/front-matter\";\nimport bibliography from \"./components/bibliography\";\nimport expandData from \"./components/expand-data\";\nimport meta from \"./components/meta\";\nimport banner from \"./components/banner\";\nimport byline from \"./components/byline\";\nimport appendix from \"./components/appendix\";\nimport citation from \"./components/citation\";\nimport footnote from \"./components/footnote\";\nimport markdown from \"./components/markdown\";\nimport code from \"./components/code\";\nimport typeset from \"./components/typeset\";\nimport hoverBox from \"./components/hover-box-include\";\nimport generateCrossref from \"./components/generate-crossref\";\nimport header from \"./components/header\";\nimport footer from \"./components/footer\";\n\nfunction renderImmediately(dom) {\n html(dom);\n styles(dom);\n}\n\nfunction renderOnLoad(dom, data) {\n frontMatter(dom, data);\n bibliography(dom, data);\n expandData(dom, data);\n meta(dom, data);\n byline(dom, data);\n appendix(dom, data);\n markdown(dom, data);\n code(dom, data);\n citation(dom, data);\n footnote(dom, data);\n typeset(dom, data);\n hoverBox(dom, data);\n}\n\n// If we are in a browser, render automatically...\nif(window && window.document) {\n let data = {};\n renderImmediately(window.document);\n window.document.addEventListener(\"DOMContentLoaded\", (event) => {\n renderOnLoad(window.document, data);\n // Add a banner if we're not on localhost.\n if (window.location.hostname !== \"localhost\" && window.location.origin !== \"file://\") {\n banner(window.document, data);\n }\n generateCrossref(data);\n });\n}\n\n// If we are in node...\nfunction render(dom, data) {\n renderImmediately(dom);\n renderOnLoad(dom, data);\n // Remove script tag so it doesn't run again in the client\n let s = dom.querySelector('script[src*=\"distill.pub/template\"]');\n if (s) { s.parentElement.removeChild(s); };\n}\n\n// Distill specific rendering\nfunction distillify(dom, data) {\n header(dom, data);\n footer(dom, data);\n}\n\nexport {render as render};\nexport {distillify as distillify};\nexport {generateCrossref as generateCrossref};\n"],"names":["let","meta","YAMLException","common","require$$0","Mark","this","Type","require$$1","require$$2","type","arguments","Schema","require$$3","require$$4","require$$5","require","_hasOwnProperty","_toString","require$$6","require$$7","_require","DEFAULT_SAFE_SCHEMA","DEFAULT_FULL_SCHEMA","loadAll","load","safeLoadAll","safeLoad","State","dump","safeDump","require$$8","require$$9","ymlParse","interval","day","timeDay","timeYear","timeSunday","timeMonday","locale","escape","const","html","define","global","Prism","code","render"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":null,"sources":["../components/html.js","../components/styles.js","../node_modules/js-yaml/lib/js-yaml/common.js","../node_modules/js-yaml/lib/js-yaml/exception.js","../node_modules/js-yaml/lib/js-yaml/mark.js","../node_modules/js-yaml/lib/js-yaml/type.js","../node_modules/js-yaml/lib/js-yaml/schema.js","../node_modules/js-yaml/lib/js-yaml/type/str.js","../node_modules/js-yaml/lib/js-yaml/type/seq.js","../node_modules/js-yaml/lib/js-yaml/type/map.js","../node_modules/js-yaml/lib/js-yaml/schema/failsafe.js","../node_modules/js-yaml/lib/js-yaml/type/null.js","../node_modules/js-yaml/lib/js-yaml/type/bool.js","../node_modules/js-yaml/lib/js-yaml/type/int.js","../node_modules/js-yaml/lib/js-yaml/type/float.js","../node_modules/js-yaml/lib/js-yaml/schema/json.js","../node_modules/js-yaml/lib/js-yaml/schema/core.js","../node_modules/js-yaml/lib/js-yaml/type/timestamp.js","../node_modules/js-yaml/lib/js-yaml/type/merge.js","../node_modules/js-yaml/lib/js-yaml/type/binary.js","../node_modules/js-yaml/lib/js-yaml/type/omap.js","../node_modules/js-yaml/lib/js-yaml/type/pairs.js","../node_modules/js-yaml/lib/js-yaml/type/set.js","../node_modules/js-yaml/lib/js-yaml/schema/default_safe.js","../node_modules/js-yaml/lib/js-yaml/type/js/undefined.js","../node_modules/js-yaml/lib/js-yaml/type/js/regexp.js","../node_modules/js-yaml/lib/js-yaml/type/js/function.js","../node_modules/js-yaml/lib/js-yaml/schema/default_full.js","../node_modules/js-yaml/lib/js-yaml/loader.js","../node_modules/js-yaml/lib/js-yaml/dumper.js","../node_modules/js-yaml/lib/js-yaml.js","../node_modules/js-yaml/index.js","../components/front-matter.js","../node_modules/bibtex-parse-js/bibtexParse.js","../components/bibliography.js","../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/utcMinute.js","../node_modules/d3-time/src/utcHour.js","../node_modules/d3-time/src/utcDay.js","../node_modules/d3-time/src/utcWeek.js","../node_modules/d3-time/src/utcMonth.js","../node_modules/d3-time/src/utcYear.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-time-format/src/isoFormat.js","../node_modules/d3-time-format/src/isoParse.js","../components/expand-data.js","../../node_modules/escape-html/index.js","../components/meta.js","../components/banner.js","../node_modules/mustache/mustache.js","../components/byline.js","../components/appendix.js","../components/citation.js","../components/footnote.js","../node_modules/marked/lib/marked.js","../components/markdown.js","../node_modules/prismjs/prism.js","../components/code.js","../components/typeset.js","../components/hover-box-include.js","../components/generate-crossref.js","../components/header.js","../components/footer.js","../index.js"],"sourcesContent":["export default function(dom) {\n if (!dom.querySelector(\"html\").getAttribute(\"lang\")) {\n dom.querySelector(\"html\").setAttribute(\"lang\", \"en\")\n }\n\n let head = dom.querySelector(\"head\");\n\n if (!dom.querySelector(\"meta[charset]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"charset\", \"utf-8\");\n head.appendChild(meta);\n }\n if (!dom.querySelector(\"meta[name=viewport]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"name\", \"viewport\");\n meta.setAttribute(\"content\", \"width=device-width, initial-scale=1\");\n head.appendChild(meta);\n }\n}\n","import base from './styles-base.css';\nimport layout from './styles-layout.css';\nimport article from './styles-article.css';\nimport code from './styles-code.css';\nimport print from './styles-print.css';\n\nexport default function(dom) {\n let s = dom.createElement(\"style\");\n s.textContent = base + layout + article + code + print;\n dom.querySelector(\"head\").appendChild(s);\n}\n","'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n var result = this.name + ': ';\n\n result += this.reason || '(unknown reason)';\n\n if (!compact && this.mark) {\n result += ' ' + this.mark.toString();\n }\n\n return result;\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n\nvar common = require('./common');\n\n\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\n\n\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head, start, tail, end, snippet;\n\n if (!this.buffer) return null;\n\n indent = indent || 4;\n maxLength = maxLength || 75;\n\n head = '';\n start = this.position;\n\n while (start > 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n\n tail = '';\n end = this.position;\n\n while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n\n snippet = this.buffer.slice(start, end);\n\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' +\n common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\n\nMark.prototype.toString = function toString(compact) {\n var snippet, where = '';\n\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n if (!compact) {\n snippet = this.getSnippet();\n\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n\n return where;\n};\n\n\nmodule.exports = Mark;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name, result) {\n var exclude = [];\n\n schema.include.forEach(function (includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n\n schema[name].forEach(function (currentType) {\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n exclude.push(previousIndex);\n }\n });\n\n result.push(currentType);\n });\n\n return result.filter(function (type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {}\n }, index, length;\n\n function collectType(type) {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n\n this.implicit.forEach(function (type) {\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n });\n\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\n\nSchema.DEFAULT = null;\n\n\nSchema.create = function createSchema() {\n var schemas, types;\n\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n\n if (!schemas.every(function (schema) { return schema instanceof Schema; })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n\n if (!types.every(function (type) { return type instanceof Type; })) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n return new Schema({\n include: schemas,\n explicit: types\n });\n};\n\n\nmodule.exports = Schema;\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 8\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 10 (except 0) or base 60\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch === ':') break;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n if (!hasDigits) return false;\n\n // if !base60 - done;\n if (ch !== ':') return true;\n\n // base60 almost not used, no needs to optimize\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch, base, digits = [];\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value, 16);\n return sign * parseInt(value, 8);\n }\n\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseInt(v, 10));\n });\n\n value = 0;\n base = 1;\n\n digits.forEach(function (d) {\n value += (d * base);\n base *= 60;\n });\n\n return sign * value;\n\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (object) { return '0b' + object.toString(2); },\n octal: function (object) { return '0' + object.toString(8); },\n decimal: function (object) { return object.toString(10); },\n hexadecimal: function (object) { return '0x' + object.toString(16).toUpperCase(); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n '^(?:[-+]?(?:[0-9][0-9_]*)\\\\.[0-9_]*(?:[eE][-+][0-9]+)?' +\n '|\\\\.[0-9_]+(?:[eE][-+][0-9]+)?' +\n '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' +\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data)) return false;\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign, base, digits;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n\n } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n\n value = 0.0;\n base = 1;\n\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n\n return sign * value;\n\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./failsafe')\n ],\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./json')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\nvar NodeBuffer;\n\ntry {\n // A trick for browserified version, to not include `Buffer` shim\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n // Wrap into Buffer for NodeJS and leave Array for browser\n if (NodeBuffer) return new NodeBuffer(result);\n\n return result;\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./core')\n ],\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n return true;\n}\n\nfunction constructJavascriptUndefined() {\n /*eslint-disable no-undefined*/\n return undefined;\n}\n\nfunction representJavascriptUndefined() {\n return '';\n}\n\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n if (data === null) return false;\n if (data.length === 0) return false;\n\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // if regexp starts with '/' it can have modifiers and must be properly closed\n // `/foo/gim` - modifiers tail can be maximum 3 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n\n if (modifiers.length > 3) return false;\n // if expression starts with /, is should be properly terminated\n if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n }\n\n return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // `/foo/gim` - tail can be maximum 4 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n\n return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object /*, style*/) {\n var result = '/' + object.source + '/';\n\n if (object.global) result += 'g';\n if (object.multiline) result += 'm';\n if (object.ignoreCase) result += 'i';\n\n return result;\n}\n\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n","'use strict';\n\nvar esprima;\n\n// Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n// If not found - try to fallback to window.esprima. If not\n// found too - then fail to parse.\n//\ntry {\n // workaround to exclude package from browserify list.\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n /*global window */\n if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n if (data === null) return false;\n\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true });\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction constructJavascriptFunction(data) {\n /*jslint evil:true*/\n\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true }),\n params = [],\n body;\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n throw new Error('Failed to resolve function');\n }\n\n ast.body[0].expression.params.forEach(function (param) {\n params.push(param.name);\n });\n\n body = ast.body[0].expression.body.range;\n\n // Esprima's ranges include the first '{' and the last '}' characters on\n // function expressions. So cut them out.\n /*eslint-disable no-new-func*/\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n}\n\nfunction representJavascriptFunction(object /*, style*/) {\n return object.toString();\n}\n\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n","// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [\n require('./default_safe')\n ],\n explicit: [\n require('../type/js/undefined'),\n require('../type/js/regexp'),\n require('../type/js/function')\n ]\n});\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00);\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n return new YAMLException(\n message,\n new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length;\n _position < _length;\n _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode) {\n var index, quantity;\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n throwError(state, 'duplicated mapping key');\n }\n _result[keyNode] = valueNode;\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else {\n break; // Reading is done. Go to the epilogue.\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if (state.lineIndent > nodeIndent && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!state.anchorMap.hasOwnProperty(alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag !== null && state.tag !== '!') {\n if (state.tag === '?') {\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length;\n typeIndex < typeQuantity;\n typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only assigned to plain scalars. So, it isn't\n // needed to check for 'kind' conformity.\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = {};\n state.anchorMap = {};\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n var documents = loadDocuments(input, options), index, length;\n\n for (index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nfunction safeLoadAll(input, output, options) {\n loadAll(input, output, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nfunction safeLoad(input, options) {\n return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// Simplified test for values allowed after the first character in plain style.\nfunction isPlainSafe(c) {\n // Uses a subset of nb-char - c-flow-indicator - \":\" - \"#\"\n // where nb-char ::= c-printable - b-char - c-byte-order-mark.\n return isPrintable(c) && c !== 0xFEFF\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // - \":\" - \"#\"\n && c !== CHAR_COLON\n && c !== CHAR_SHARP;\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n return isPrintable(c) && c !== 0xFEFF\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {\n var i;\n var char;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(string.charCodeAt(0))\n && !isWhitespace(string.charCodeAt(string.length - 1));\n\n if (singleLineOnly) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n return plain && !testAmbiguousType(string)\n ? STYLE_PLAIN : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (string[0] === ' ' && indentPerLevel > 9) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey) {\n state.dump = (function () {\n if (string.length === 0) {\n return \"''\";\n }\n if (!state.noCompatMode &&\n DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n return \"'\" + string + \"'\";\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = (string[0] === ' ') ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char;\n var escapeSeq;\n\n for (var i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n result += !escapeSeq && isPrintable(char)\n ? string[i]\n : escapeSeq || encodeHex(char);\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level, object[index], false, false)) {\n if (index !== 0) _result += ', ';\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || index !== 0) {\n _result += generateNextLine(state, level);\n }\n _result += '- ' + state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (index !== 0) pairBuffer += ', ';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + ': ';\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || index !== 0) {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n state.tag = explicit ? type.tag : '?';\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n writeBlockSequence(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey);\n }\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n state.dump = '!<' + state.tag + '> ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n if (writeNode(state, 0, input, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nfunction safeDump(input, options) {\n return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n","'use strict';\n\n\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\n\n\nfunction deprecated(name) {\n return function () {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\n\n\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\n\n// Deprecated schema names from JS-YAML 2.0.x\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\n\n// Deprecated functions from JS-YAML 1.x.x\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","'use strict';\n\n\nvar yaml = require('./lib/js-yaml.js');\n\n\nmodule.exports = yaml;\n","import ymlParse from \"js-yaml\";\n\nexport default function(dom, data) {\n let localData = {};\n let el = dom.querySelector('script[type=\"text/front-matter\"]');\n if (el) {\n let text = el.textContent;\n localData = ymlParse.safeLoad(text);\n }\n\n data.title = localData.title ? localData.title : \"Untitled\";\n data.description = localData.description ? localData.description : \"No description.\";\n\n data.authors = localData.authors ? localData.authors : [];\n\n data.authors = data.authors.map((author, i) =>{\n let a = {};\n let name = Object.keys(author)[0];\n if ((typeof author) === \"string\") {\n name = author;\n } else {\n a.personalURL = author[name];\n }\n let names = name.split(\" \");\n a.name = name;\n a.firstName = names.slice(0, names.length - 1).join(\" \");\n a.lastName = names[names.length -1];\n if(localData.affiliations[i]) {\n let affiliation = Object.keys(localData.affiliations[i])[0];\n if ((typeof localData.affiliations[i]) === \"string\") {\n affiliation = localData.affiliations[i]\n } else {\n a.affiliationURL = localData.affiliations[i][affiliation];\n }\n a.affiliation = affiliation;\n }\n return a;\n });\n \n\n}\n","/* start bibtexParse 0.0.22 */\n\n//Original work by Henrik Muehe (c) 2010\n//\n//CommonJS port by Mikola Lysenko 2013\n//\n//Port to Browser lib by ORCID / RCPETERS\n//\n//Issues:\n//no comment handling within strings\n//no string concatenation\n//no variable values yet\n//Grammar implemented here:\n//bibtex -> (string | preamble | comment | entry)*;\n//string -> '@STRING' '{' key_equals_value '}';\n//preamble -> '@PREAMBLE' '{' value '}';\n//comment -> '@COMMENT' '{' value '}';\n//entry -> '@' key '{' key ',' key_value_list '}';\n//key_value_list -> key_equals_value (',' key_equals_value)*;\n//key_equals_value -> key '=' value;\n//value -> value_quotes | value_braces | key;\n//value_quotes -> '\"' .*? '\"'; // not quite\n//value_braces -> '{' .*? '\"'; // not quite\n(function(exports) {\n\n function BibtexParser() {\n \n this.months = [\"jan\", \"feb\", \"mar\", \"apr\", \"may\", \"jun\", \"jul\", \"aug\", \"sep\", \"oct\", \"nov\", \"dec\"];\n this.notKey = [',','{','}',' ','='];\n this.pos = 0;\n this.input = \"\";\n this.entries = new Array();\n\n this.currentEntry = \"\";\n\n this.setInput = function(t) {\n this.input = t;\n };\n\n this.getEntries = function() {\n return this.entries;\n };\n\n this.isWhitespace = function(s) {\n return (s == ' ' || s == '\\r' || s == '\\t' || s == '\\n');\n };\n\n this.match = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n this.pos += s.length;\n } else {\n throw \"Token mismatch, expected \" + s + \", found \"\n + this.input.substring(this.pos);\n };\n this.skipWhitespace(canCommentOut);\n };\n\n this.tryMatch = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n return true;\n } else {\n return false;\n };\n this.skipWhitespace(canCommentOut);\n };\n\n /* when search for a match all text can be ignored, not just white space */\n this.matchAt = function() {\n while (this.input.length > this.pos && this.input[this.pos] != '@') {\n this.pos++;\n };\n\n if (this.input[this.pos] == '@') {\n return true;\n };\n return false;\n };\n\n this.skipWhitespace = function(canCommentOut) {\n while (this.isWhitespace(this.input[this.pos])) {\n this.pos++;\n };\n if (this.input[this.pos] == \"%\" && canCommentOut == true) {\n while (this.input[this.pos] != \"\\n\") {\n this.pos++;\n };\n this.skipWhitespace(canCommentOut);\n };\n };\n\n this.value_braces = function() {\n var bracecount = 0;\n this.match(\"{\", false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '}') {\n if (bracecount > 0) {\n bracecount--;\n } else {\n var end = this.pos;\n this.match(\"}\", false);\n return this.input.substring(start, end);\n };\n } else if (this.input[this.pos] == '{') {\n bracecount++;\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value\";\n };\n };\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.value_comment = function() {\n var str = '';\n var brcktCnt = 0;\n while (!(this.tryMatch(\"}\", false) && brcktCnt == 0)) {\n str = str + this.input[this.pos];\n if (this.input[this.pos] == '{')\n brcktCnt++;\n if (this.input[this.pos] == '}')\n brcktCnt--;\n if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n this.pos++;\n };\n return str;\n };\n\n this.value_quotes = function() {\n this.match('\"', false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '\"') {\n var end = this.pos;\n this.match('\"', false);\n return this.input.substring(start, end);\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n }\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.single_value = function() {\n var start = this.pos;\n if (this.tryMatch(\"{\")) {\n return this.value_braces();\n } else if (this.tryMatch('\"')) {\n return this.value_quotes();\n } else {\n var k = this.key();\n if (k.match(\"^[0-9]+$\"))\n return k;\n else if (this.months.indexOf(k.toLowerCase()) >= 0)\n return k.toLowerCase();\n else\n throw \"Value expected:\" + this.input.substring(start) + ' for key: ' + k;\n \n };\n };\n\n this.value = function() {\n var values = [];\n values.push(this.single_value());\n while (this.tryMatch(\"#\")) {\n this.match(\"#\");\n values.push(this.single_value());\n };\n return values.join(\"\");\n };\n\n this.key = function() {\n var start = this.pos;\n while (true) {\n if (this.pos >= this.input.length) {\n throw \"Runaway key\";\n };\n // а-яА-Я is Cyrillic\n //console.log(this.input[this.pos]);\n if (this.notKey.indexOf(this.input[this.pos]) >= 0) {\n return this.input.substring(start, this.pos);\n } else {\n this.pos++;\n \n };\n };\n };\n\n this.key_equals_value = function() {\n var key = this.key();\n if (this.tryMatch(\"=\")) {\n this.match(\"=\");\n var val = this.value();\n return [ key, val ];\n } else {\n throw \"... = value expected, equals sign missing:\"\n + this.input.substring(this.pos);\n };\n };\n\n this.key_value_list = function() {\n var kv = this.key_equals_value();\n this.currentEntry['entryTags'] = {};\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n while (this.tryMatch(\",\")) {\n this.match(\",\");\n // fixes problems with commas at the end of a list\n if (this.tryMatch(\"}\")) {\n break;\n }\n ;\n kv = this.key_equals_value();\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n };\n };\n\n this.entry_body = function(d) {\n this.currentEntry = {};\n this.currentEntry['citationKey'] = this.key();\n this.currentEntry['entryType'] = d.substring(1);\n this.match(\",\");\n this.key_value_list();\n this.entries.push(this.currentEntry);\n };\n\n this.directive = function() {\n this.match(\"@\");\n return \"@\" + this.key();\n };\n\n this.preamble = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'PREAMBLE';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.comment = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'COMMENT';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.entry = function(d) {\n this.entry_body(d);\n };\n\n this.bibtex = function() {\n while (this.matchAt()) {\n var d = this.directive();\n this.match(\"{\");\n if (d == \"@STRING\") {\n this.string();\n } else if (d == \"@PREAMBLE\") {\n this.preamble();\n } else if (d == \"@COMMENT\") {\n this.comment();\n } else {\n this.entry(d);\n }\n this.match(\"}\");\n };\n };\n };\n \n exports.toJSON = function(bibtex) {\n var b = new BibtexParser();\n b.setInput(bibtex);\n b.bibtex();\n return b.entries;\n };\n\n /* added during hackathon don't hate on me */\n exports.toBibtex = function(json) {\n var out = '';\n for ( var i in json) {\n out += \"@\" + json[i].entryType;\n out += '{';\n if (json[i].citationKey)\n out += json[i].citationKey + ', ';\n if (json[i].entry)\n out += json[i].entry ;\n if (json[i].entryTags) {\n var tags = '';\n for (var jdx in json[i].entryTags) {\n if (tags.length != 0)\n tags += ', ';\n tags += jdx + '= {' + json[i].entryTags[jdx] + '}';\n }\n out += tags;\n }\n out += '}\\n\\n';\n }\n return out;\n \n };\n\n})(typeof exports === 'undefined' ? this['bibtexParse'] = {} : exports);\n\n/* end bibtexParse */\n","import bibtexParse from \"bibtex-parse-js\";\n\nexport default function(dom, data) {\n let el = dom.querySelector('script[type=\"text/bibliography\"]');\n let citations = [];\n let bibliography = {};\n //TODO If we don't have a local element, make a request for the document.\n if (el) {\n let rawBib = el.textContent;\n let parsed = bibtexParse.toJSON(rawBib);\n if(parsed) {\n parsed.forEach(e => {\n for (var k in e.entryTags){\n var val = e.entryTags[k];\n val = val.replace(/[\\t\\n ]+/g, \" \");\n val = val.replace(/{\\\\[\"^`\\.'acu~Hvs]( )?([a-zA-Z])}/g,\n (full, x, char) => char);\n val = val.replace(/{\\\\([a-zA-Z])}/g,\n (full, char) => char);\n e.entryTags[k] = val;\n }\n bibliography[e.citationKey] = e.entryTags;\n bibliography[e.citationKey].type = e.entryType;\n });\n }\n\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach(el => {\n let key = el.getAttribute(\"key\");\n if (key) {\n let citationKeys = key.split(\",\");\n citationKeys.forEach(key => {\n if (citations.indexOf(key) == -1){\n citations.push(key);\n if (!(key in bibliography)){\n console.warn(\"No bibliography entry found for: \" + key);\n }\n }\n });\n }\n });\n }\n data.bibliography = bibliography;\n data.citations = citations;\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(new Date(+start)); while (offseti(start, step), floori(start), start < stop)\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) while (--step >= 0) while (offseti(date, 1), !test(date)) {} // eslint-disable-line no-empty\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(Math.floor(date / durationSecond) * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(Math.floor(date / durationMinute) * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute} from \"./duration\";\n\nvar hour = interval(function(date) {\n var offset = date.getTimezoneOffset() * durationMinute % durationHour;\n if (offset < 0) offset += durationHour;\n date.setTime(Math.floor((+date - offset) / durationHour) * durationHour + offset);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval\";\nimport {durationWeek} from \"./duration\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {timeDay, timeSunday, timeMonday, timeYear, utcDay, utcSunday, utcMonday, utcYear} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"S\": formatSeconds,\n \"U\": formatWeekNumberSunday,\n \"w\": formatWeekdayNumber,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"S\": formatUTCSeconds,\n \"U\": formatUTCWeekNumberSunday,\n \"w\": formatUTCWeekdayNumber,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"S\": parseSeconds,\n \"U\": parseWeekNumberSunday,\n \"w\": parseWeekdayNumber,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0);\n if (i != string.length) return null;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n var day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?:\\:?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekdayNumber(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekdayNumber(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {timeFormat} from \"d3-time-format\";\n\nexport default function(dom, data) {\n\n data.authors = data.authors || [];\n\n // paths\n data.url = data.url ? data.url : \"http://distill.pub/\" + data.distillPath;\n data.githubUrl = \"https://github.com/\" + data.githubPath;\n\n data.previewURL = data.previewURL ? data.previewURL : data.url + \"/thumbnail.jpg\"\n\n // Homepage\n //data.homepage = !post.noHomepage;\n data.journal = data.journal || {};\n\n // Dates\n if (data.publishedDate){//} && data.journal) {\n data.volume = data.publishedDate.getFullYear() - 2015;\n data.issue = data.publishedDate.getMonth() + 1;\n }\n\n data.publishedDate = data.publishedDate ? data.publishedDate : new Date(\"Invalid\");\n data.updatedDate = data.updatedDate ? data.updatedDate : new Date(\"Invalid\");\n\n data.publishedDateRFC\n let RFC = timeFormat(\"%a, %d %b %Y %H:%M:%S %Z\");\n let months = [\"Jan\", \"Feb\", \"March\", \"April\", \"May\", \"June\", \"July\", \"Aug\", \"Sept\", \"Oct\", \"Nov\", \"Dec\"];\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n data.publishedDateRFC = RFC(data.publishedDate);\n data.publishedYear = data.publishedDate.getFullYear();\n data.publishedMonth = months[data.publishedDate.getMonth()];\n data.publishedDay = data.publishedDate.getDate();\n data.publishedMonthPadded = zeroPad(data.publishedDate.getMonth() + 1);\n data.publishedDayPadded = zeroPad(data.publishedDate.getDate());\n data.updatedDateRFC = RFC(data.updatedDate);\n\n if (data.authors.length > 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \", et al.\";\n } else if (data.authors.length === 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \" & \" + data.authors[1].lastName;\n } else if (data.authors.length === 1) {\n data.concatenatedAuthors = data.authors[0].lastName\n }\n\n data.bibtexAuthors = data.authors.map(function(author){\n return author.lastName + \", \" + author.firstName;\n }).join(\" and \");\n\n data.slug = data.authors.length ? data.authors[0].lastName.toLowerCase() + data.publishedYear + data.title.split(\" \")[0].toLowerCase() : \"Untitled\";\n\n}\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","import favicon from './distill-favicon.base64';\nimport escape from 'escape-html';\n\nexport default function(dom, data) {\n let head = dom.querySelector(\"head\");\n let appendHead = html => appendHtml(head, html);\n\n function meta(name, content, force) {\n if (content || force)\n appendHead(` \\n`);\n }\n\n appendHead(`\n \n \n \n \n ${data.title}\n `);\n\n appendHead(`\n \n \n \n `);\n data.authors.forEach((a) => {\n appendHtml(head, `\n `)\n });\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n // if this is a proprer article, generate Google Scholar meta data\n if (data.doiSuffix){\n appendHead(`\n \\n`);\n\n meta(\"citation_title\", data.title);\n //meta(\"citation_fulltext_html_url\", data.url);\n meta(\"citation_volume\", data.volume);\n meta(\"citation_issue\", data.issue);\n meta(\"citation_firstpage\", data.doiSuffix? `e${data.doiSuffix}` : undefined);\n meta(\"citation_doi\", data.doi);\n\n let journal = data.journal || {};\n meta(\"citation_journal_title\", journal.full_title || journal.title);\n meta(\"citation_journal_abbrev\", journal.abbrev_title);\n meta(\"citation_issn\", journal.issn);\n meta(\"citation_publisher\", journal.publisher);\n meta(\"citation_fulltext_world_readable\", \"\", true);\n\n if (data.publishedDate){\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n meta(\"citation_online_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n // Should we do something different here?\n meta(\"citation_publication_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n }\n\n (data.authors || []).forEach((a) => {\n meta(\"citation_author\", `${a.lastName}, ${a.firstName}`);\n meta(\"citation_author_institution\", a.affiliation);\n });\n\n if (data.citations) {\n data.citations.forEach(key => {\n let d = data.bibliography[key];\n if(!d) {\n console.warn(\"No bibliography data fround for \" + key)\n } else {\n meta(\"citation_reference\", citation_meta_content(data.bibliography[key]) )\n };\n });\n }\n }\n}\n\nfunction appendHtml(el, html) {\n el.innerHTML += html;\n}\n\nfunction citation_meta_content(ref){\n // Special test for arxiv\n var content = `citation_title=${ref.title};`;\n\n let name_strings = ref.author.split(\" and \").forEach(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1].trim();\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n content += `citation_author=${firsts} ${last};`;\n });\n\n if (\"year\" in ref) {\n content += `citation_publication_date=${ref.year};`;\n }\n\n var arxiv_id_search = /https?:\\/\\/arxiv\\.org\\/pdf\\/([0-9]*\\.[0-9]*)\\.pdf/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /https?:\\/\\/arxiv\\.org\\/abs\\/([0-9]*\\.[0-9]*)/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /arXiv preprint arXiv:([0-9]*\\.[0-9]*)/.exec(ref.journal);\n if (arxiv_id_search && arxiv_id_search[1]){\n content += `citation_arxiv_id=${arxiv_id_search[1]};`;\n return content;\n }\n if (\"journal\" in ref){\n content += `citation_journal_title=${ref.journal};`;\n }\n if (\"volume\" in ref) {\n content += `citation_volume=${ref.volume};`;\n }\n if (\"issue\" in ref || \"number\" in ref){\n content += `citation_number=${ref.issue || ref.number};`;\n }\n /*content += `citation_first_page=${};`;\n content += `citation_publication_date=${};`;*/\n return content;\n}\n","const html = `\n\n
    This article is a draft, awaiting review for publication in Distill
    \n`;\n\nexport default function(dom, data) {\n let banner = dom.createElement(\"dt-banner\");\n banner.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(banner, b.firstChild);\n banner.addEventListener(\"click\", function() {\n banner.style.display = \"none\";\n });\n}\n","/*!\n * mustache.js - Logic-less {{mustache}} templates with JavaScript\n * http://github.com/janl/mustache.js\n */\n\n/*global define: false Mustache: true*/\n\n(function defineMustache (global, factory) {\n if (typeof exports === 'object' && exports && typeof exports.nodeName !== 'string') {\n factory(exports); // CommonJS\n } else if (typeof define === 'function' && define.amd) {\n define(['exports'], factory); // AMD\n } else {\n global.Mustache = {};\n factory(global.Mustache); // script, wsh, asp\n }\n}(this, function mustacheFactory (mustache) {\n\n var objectToString = Object.prototype.toString;\n var isArray = Array.isArray || function isArrayPolyfill (object) {\n return objectToString.call(object) === '[object Array]';\n };\n\n function isFunction (object) {\n return typeof object === 'function';\n }\n\n /**\n * More correct typeof string handling array\n * which normally returns typeof 'object'\n */\n function typeStr (obj) {\n return isArray(obj) ? 'array' : typeof obj;\n }\n\n function escapeRegExp (string) {\n return string.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n }\n\n /**\n * Null safe way of checking whether or not an object,\n * including its prototype, has a given property\n */\n function hasProperty (obj, propName) {\n return obj != null && typeof obj === 'object' && (propName in obj);\n }\n\n // Workaround for https://issues.apache.org/jira/browse/COUCHDB-577\n // See https://github.com/janl/mustache.js/issues/189\n var regExpTest = RegExp.prototype.test;\n function testRegExp (re, string) {\n return regExpTest.call(re, string);\n }\n\n var nonSpaceRe = /\\S/;\n function isWhitespace (string) {\n return !testRegExp(nonSpaceRe, string);\n }\n\n var entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n function escapeHtml (string) {\n return String(string).replace(/[&<>\"'`=\\/]/g, function fromEntityMap (s) {\n return entityMap[s];\n });\n }\n\n var whiteRe = /\\s*/;\n var spaceRe = /\\s+/;\n var equalsRe = /\\s*=/;\n var curlyRe = /\\s*\\}/;\n var tagRe = /#|\\^|\\/|>|\\{|&|=|!/;\n\n /**\n * Breaks up the given `template` string into a tree of tokens. If the `tags`\n * argument is given here it must be an array with two string values: the\n * opening and closing tags used in the template (e.g. [ \"<%\", \"%>\" ]). Of\n * course, the default is to use mustaches (i.e. mustache.tags).\n *\n * A token is an array with at least 4 elements. The first element is the\n * mustache symbol that was used inside the tag, e.g. \"#\" or \"&\". If the tag\n * did not contain a symbol (i.e. {{myValue}}) this element is \"name\". For\n * all text that appears outside a symbol this element is \"text\".\n *\n * The second element of a token is its \"value\". For mustache tags this is\n * whatever else was inside the tag besides the opening symbol. For text tokens\n * this is the text itself.\n *\n * The third and fourth elements of the token are the start and end indices,\n * respectively, of the token in the original template.\n *\n * Tokens that are the root node of a subtree contain two more elements: 1) an\n * array of tokens in the subtree and 2) the index in the original template at\n * which the closing tag for that section begins.\n */\n function parseTemplate (template, tags) {\n if (!template)\n return [];\n\n var sections = []; // Stack to hold section tokens\n var tokens = []; // Buffer to hold the tokens\n var spaces = []; // Indices of whitespace tokens on the current line\n var hasTag = false; // Is there a {{tag}} on the current line?\n var nonSpace = false; // Is there a non-space char on the current line?\n\n // Strips all whitespace tokens array for the current line\n // if there was a {{#tag}} on it and otherwise only space.\n function stripSpace () {\n if (hasTag && !nonSpace) {\n while (spaces.length)\n delete tokens[spaces.pop()];\n } else {\n spaces = [];\n }\n\n hasTag = false;\n nonSpace = false;\n }\n\n var openingTagRe, closingTagRe, closingCurlyRe;\n function compileTags (tagsToCompile) {\n if (typeof tagsToCompile === 'string')\n tagsToCompile = tagsToCompile.split(spaceRe, 2);\n\n if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)\n throw new Error('Invalid tags: ' + tagsToCompile);\n\n openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\\\s*');\n closingTagRe = new RegExp('\\\\s*' + escapeRegExp(tagsToCompile[1]));\n closingCurlyRe = new RegExp('\\\\s*' + escapeRegExp('}' + tagsToCompile[1]));\n }\n\n compileTags(tags || mustache.tags);\n\n var scanner = new Scanner(template);\n\n var start, type, value, chr, token, openSection;\n while (!scanner.eos()) {\n start = scanner.pos;\n\n // Match any text between tags.\n value = scanner.scanUntil(openingTagRe);\n\n if (value) {\n for (var i = 0, valueLength = value.length; i < valueLength; ++i) {\n chr = value.charAt(i);\n\n if (isWhitespace(chr)) {\n spaces.push(tokens.length);\n } else {\n nonSpace = true;\n }\n\n tokens.push([ 'text', chr, start, start + 1 ]);\n start += 1;\n\n // Check for whitespace on the current line.\n if (chr === '\\n')\n stripSpace();\n }\n }\n\n // Match the opening tag.\n if (!scanner.scan(openingTagRe))\n break;\n\n hasTag = true;\n\n // Get the tag type.\n type = scanner.scan(tagRe) || 'name';\n scanner.scan(whiteRe);\n\n // Get the tag value.\n if (type === '=') {\n value = scanner.scanUntil(equalsRe);\n scanner.scan(equalsRe);\n scanner.scanUntil(closingTagRe);\n } else if (type === '{') {\n value = scanner.scanUntil(closingCurlyRe);\n scanner.scan(curlyRe);\n scanner.scanUntil(closingTagRe);\n type = '&';\n } else {\n value = scanner.scanUntil(closingTagRe);\n }\n\n // Match the closing tag.\n if (!scanner.scan(closingTagRe))\n throw new Error('Unclosed tag at ' + scanner.pos);\n\n token = [ type, value, start, scanner.pos ];\n tokens.push(token);\n\n if (type === '#' || type === '^') {\n sections.push(token);\n } else if (type === '/') {\n // Check section nesting.\n openSection = sections.pop();\n\n if (!openSection)\n throw new Error('Unopened section \"' + value + '\" at ' + start);\n\n if (openSection[1] !== value)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + start);\n } else if (type === 'name' || type === '{' || type === '&') {\n nonSpace = true;\n } else if (type === '=') {\n // Set the tags for the next time around.\n compileTags(value);\n }\n }\n\n // Make sure there are no open sections when we're done.\n openSection = sections.pop();\n\n if (openSection)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + scanner.pos);\n\n return nestTokens(squashTokens(tokens));\n }\n\n /**\n * Combines the values of consecutive text tokens in the given `tokens` array\n * to a single token.\n */\n function squashTokens (tokens) {\n var squashedTokens = [];\n\n var token, lastToken;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n if (token) {\n if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {\n lastToken[1] += token[1];\n lastToken[3] = token[3];\n } else {\n squashedTokens.push(token);\n lastToken = token;\n }\n }\n }\n\n return squashedTokens;\n }\n\n /**\n * Forms the given array of `tokens` into a nested tree structure where\n * tokens that represent a section have two additional items: 1) an array of\n * all tokens that appear in that section and 2) the index in the original\n * template that represents the end of that section.\n */\n function nestTokens (tokens) {\n var nestedTokens = [];\n var collector = nestedTokens;\n var sections = [];\n\n var token, section;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n switch (token[0]) {\n case '#':\n case '^':\n collector.push(token);\n sections.push(token);\n collector = token[4] = [];\n break;\n case '/':\n section = sections.pop();\n section[5] = token[2];\n collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;\n break;\n default:\n collector.push(token);\n }\n }\n\n return nestedTokens;\n }\n\n /**\n * A simple string scanner that is used by the template parser to find\n * tokens in template strings.\n */\n function Scanner (string) {\n this.string = string;\n this.tail = string;\n this.pos = 0;\n }\n\n /**\n * Returns `true` if the tail is empty (end of string).\n */\n Scanner.prototype.eos = function eos () {\n return this.tail === '';\n };\n\n /**\n * Tries to match the given regular expression at the current position.\n * Returns the matched text if it can match, the empty string otherwise.\n */\n Scanner.prototype.scan = function scan (re) {\n var match = this.tail.match(re);\n\n if (!match || match.index !== 0)\n return '';\n\n var string = match[0];\n\n this.tail = this.tail.substring(string.length);\n this.pos += string.length;\n\n return string;\n };\n\n /**\n * Skips all text until the given regular expression can be matched. Returns\n * the skipped string, which is the entire tail if no match can be made.\n */\n Scanner.prototype.scanUntil = function scanUntil (re) {\n var index = this.tail.search(re), match;\n\n switch (index) {\n case -1:\n match = this.tail;\n this.tail = '';\n break;\n case 0:\n match = '';\n break;\n default:\n match = this.tail.substring(0, index);\n this.tail = this.tail.substring(index);\n }\n\n this.pos += match.length;\n\n return match;\n };\n\n /**\n * Represents a rendering context by wrapping a view object and\n * maintaining a reference to the parent context.\n */\n function Context (view, parentContext) {\n this.view = view;\n this.cache = { '.': this.view };\n this.parent = parentContext;\n }\n\n /**\n * Creates a new context using the given view with this context\n * as the parent.\n */\n Context.prototype.push = function push (view) {\n return new Context(view, this);\n };\n\n /**\n * Returns the value of the given name in this context, traversing\n * up the context hierarchy if the value is absent in this context's view.\n */\n Context.prototype.lookup = function lookup (name) {\n var cache = this.cache;\n\n var value;\n if (cache.hasOwnProperty(name)) {\n value = cache[name];\n } else {\n var context = this, names, index, lookupHit = false;\n\n while (context) {\n if (name.indexOf('.') > 0) {\n value = context.view;\n names = name.split('.');\n index = 0;\n\n /**\n * Using the dot notion path in `name`, we descend through the\n * nested objects.\n *\n * To be certain that the lookup has been successful, we have to\n * check if the last object in the path actually has the property\n * we are looking for. We store the result in `lookupHit`.\n *\n * This is specially necessary for when the value has been set to\n * `undefined` and we want to avoid looking up parent contexts.\n **/\n while (value != null && index < names.length) {\n if (index === names.length - 1)\n lookupHit = hasProperty(value, names[index]);\n\n value = value[names[index++]];\n }\n } else {\n value = context.view[name];\n lookupHit = hasProperty(context.view, name);\n }\n\n if (lookupHit)\n break;\n\n context = context.parent;\n }\n\n cache[name] = value;\n }\n\n if (isFunction(value))\n value = value.call(this.view);\n\n return value;\n };\n\n /**\n * A Writer knows how to take a stream of tokens and render them to a\n * string, given a context. It also maintains a cache of templates to\n * avoid the need to parse the same template twice.\n */\n function Writer () {\n this.cache = {};\n }\n\n /**\n * Clears all cached templates in this writer.\n */\n Writer.prototype.clearCache = function clearCache () {\n this.cache = {};\n };\n\n /**\n * Parses and caches the given `template` and returns the array of tokens\n * that is generated from the parse.\n */\n Writer.prototype.parse = function parse (template, tags) {\n var cache = this.cache;\n var tokens = cache[template];\n\n if (tokens == null)\n tokens = cache[template] = parseTemplate(template, tags);\n\n return tokens;\n };\n\n /**\n * High-level method that is used to render the given `template` with\n * the given `view`.\n *\n * The optional `partials` argument may be an object that contains the\n * names and templates of partials that are used in the template. It may\n * also be a function that is used to load partial templates on the fly\n * that takes a single argument: the name of the partial.\n */\n Writer.prototype.render = function render (template, view, partials) {\n var tokens = this.parse(template);\n var context = (view instanceof Context) ? view : new Context(view);\n return this.renderTokens(tokens, context, partials, template);\n };\n\n /**\n * Low-level method that renders the given array of `tokens` using\n * the given `context` and `partials`.\n *\n * Note: The `originalTemplate` is only ever used to extract the portion\n * of the original template that was contained in a higher-order section.\n * If the template doesn't use higher-order sections, this argument may\n * be omitted.\n */\n Writer.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate) {\n var buffer = '';\n\n var token, symbol, value;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n value = undefined;\n token = tokens[i];\n symbol = token[0];\n\n if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate);\n else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate);\n else if (symbol === '>') value = this.renderPartial(token, context, partials, originalTemplate);\n else if (symbol === '&') value = this.unescapedValue(token, context);\n else if (symbol === 'name') value = this.escapedValue(token, context);\n else if (symbol === 'text') value = this.rawValue(token);\n\n if (value !== undefined)\n buffer += value;\n }\n\n return buffer;\n };\n\n Writer.prototype.renderSection = function renderSection (token, context, partials, originalTemplate) {\n var self = this;\n var buffer = '';\n var value = context.lookup(token[1]);\n\n // This function is used to render an arbitrary template\n // in the current context by higher-order sections.\n function subRender (template) {\n return self.render(template, context, partials);\n }\n\n if (!value) return;\n\n if (isArray(value)) {\n for (var j = 0, valueLength = value.length; j < valueLength; ++j) {\n buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate);\n }\n } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {\n buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate);\n } else if (isFunction(value)) {\n if (typeof originalTemplate !== 'string')\n throw new Error('Cannot use higher-order sections without the original template');\n\n // Extract the portion of the original template that the section contains.\n value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);\n\n if (value != null)\n buffer += value;\n } else {\n buffer += this.renderTokens(token[4], context, partials, originalTemplate);\n }\n return buffer;\n };\n\n Writer.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate) {\n var value = context.lookup(token[1]);\n\n // Use JavaScript's definition of falsy. Include empty arrays.\n // See https://github.com/janl/mustache.js/issues/186\n if (!value || (isArray(value) && value.length === 0))\n return this.renderTokens(token[4], context, partials, originalTemplate);\n };\n\n Writer.prototype.renderPartial = function renderPartial (token, context, partials) {\n if (!partials) return;\n\n var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\n if (value != null)\n return this.renderTokens(this.parse(value), context, partials, value);\n };\n\n Writer.prototype.unescapedValue = function unescapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return value;\n };\n\n Writer.prototype.escapedValue = function escapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return mustache.escape(value);\n };\n\n Writer.prototype.rawValue = function rawValue (token) {\n return token[1];\n };\n\n mustache.name = 'mustache.js';\n mustache.version = '2.3.0';\n mustache.tags = [ '{{', '}}' ];\n\n // All high-level mustache.* functions use this writer.\n var defaultWriter = new Writer();\n\n /**\n * Clears all cached templates in the default writer.\n */\n mustache.clearCache = function clearCache () {\n return defaultWriter.clearCache();\n };\n\n /**\n * Parses and caches the given template in the default writer and returns the\n * array of tokens it contains. Doing this ahead of time avoids the need to\n * parse templates on the fly as they are rendered.\n */\n mustache.parse = function parse (template, tags) {\n return defaultWriter.parse(template, tags);\n };\n\n /**\n * Renders the `template` with the given `view` and `partials` using the\n * default writer.\n */\n mustache.render = function render (template, view, partials) {\n if (typeof template !== 'string') {\n throw new TypeError('Invalid template! Template should be a \"string\" ' +\n 'but \"' + typeStr(template) + '\" was given as the first ' +\n 'argument for mustache#render(template, view, partials)');\n }\n\n return defaultWriter.render(template, view, partials);\n };\n\n // This is here for backwards compatibility with 0.4.x.,\n /*eslint-disable */ // eslint wants camel cased function name\n mustache.to_html = function to_html (template, view, partials, send) {\n /*eslint-enable*/\n\n var result = mustache.render(template, view, partials);\n\n if (isFunction(send)) {\n send(result);\n } else {\n return result;\n }\n };\n\n // Export the escaping function so that the user may override it.\n // See https://github.com/janl/mustache.js/issues/244\n mustache.escape = escapeHtml;\n\n // Export these mainly for testing, but also for advanced usage.\n mustache.Scanner = Scanner;\n mustache.Context = Context;\n mustache.Writer = Writer;\n\n return mustache;\n}));\n","import mustache from \"mustache\";\n\nconst html = `\n\n\n`;\n\nconst template = `\n
    \n
    \n {{#authors}}\n
    \n {{#personalURL}}\n {{name}}\n {{/personalURL}}\n {{^personalURL}}\n
    {{name}}
    \n {{/personalURL}}\n {{#affiliation}}\n {{#affiliationURL}}\n {{affiliation}}\n {{/affiliationURL}}\n {{^affiliationURL}}\n
    {{affiliation}}
    \n {{/affiliationURL}}\n {{/affiliation}}\n
    \n {{/authors}}\n
    \n
    \n
    {{publishedMonth}}. {{publishedDay}}
    \n
    {{publishedYear}}
    \n
    \n \n
    Citation:
    \n
    {{concatenatedAuthors}}, {{publishedYear}}
    \n
    \n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-byline');\n if (el) {\n el.innerHTML = html + mustache.render(template, data);\n }\n}\n","const html = `\n\n\n
    \n

    References

    \n \n

    Errors, Reuse, and Citation

    \n

    If you see mistakes or want to suggest changes, please create an issue on GitHub.

    \n

    Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on GitHub. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: “Figure from …”.

    \n

    For attribution in academic contexts, please cite this work as

    \n
    \n  

    BibTeX citation

    \n
    \n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-appendix')\n if (el) {\n let oldHtml = el.innerHTML;\n el.innerHTML = html;\n let div = el.querySelector(\"div.l-body\")\n\n if (dom.querySelector(\"dt-fn\")) {\n div.innerHTML = `

    Footnotes

    ` + div.innerHTML;\n }\n\n div.innerHTML = oldHtml + div.innerHTML;\n if (data.githubCompareUpdatesUrl) {\n div.innerHTML = `

    Updates

    View all changes to this article since it was first published.

    ` + div.innerHTML;\n }\n\n el.querySelector(\"a.github\").setAttribute(\"href\", data.githubUrl);\n el.querySelector(\"a.github-issue\").setAttribute(\"href\", data.githubUrl + \"/issues/new\");\n el.querySelector(\".citation.short\").textContent = data.concatenatedAuthors + \", \" + '\"' + data.title + '\", Distill, ' + data.publishedYear + \".\";\n var bibtex = \"@article{\" + data.slug + \",\\n\";\n bibtex += \" author = {\" + data.bibtexAuthors + \"},\\n\";\n bibtex += \" title = {\" + data.title + \"},\\n\";\n bibtex += \" journal = {Distill},\\n\";\n bibtex += \" year = {\" + data.publishedYear + \"},\\n\";\n bibtex += \" note = {\" + data.url + \"}\\n\";\n bibtex += \"}\";\n el.querySelector(\".citation.long\").textContent = bibtex;\n }\n\n}\n","export default function(dom, data) {\n let css = `\n dt-cite {\n color: hsla(206, 90%, 20%, 0.7);\n }\n dt-cite .citation-number {\n cursor: default;\n white-space: nowrap;\n font-family: -apple-system, BlinkMacSystemFont, \"Roboto\", Helvetica, sans-serif;\n font-size: 75%;\n color: hsla(206, 90%, 20%, 0.7);\n display: inline-block;\n line-height: 1.1em;\n text-align: center;\n position: relative;\n top: -2px;\n margin: 0 2px;\n }\n figcaption dt-cite .citation-number {\n font-size: 11px;\n font-weight: normal;\n top: -2px;\n line-height: 1em;\n }\n `;\n\n let style = dom.createElement(\"style\");\n style.textContent = css;\n dom.querySelector(\"body\").appendChild(style);\n\n let citations = data.citations;\n /*if (data.citations) {\n citations = Object.keys(data.citations).map(c => data.citations[c]);\n citations.sort((a, b) => {\n return a.author.localeCompare(b.author);\n });\n }*/\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach((el,n) => {\n var key = el.getAttribute(\"key\");\n if (key) {\n var keys = key.split(\",\");\n var cite_string = inline_cite_short(keys);\n var cite_hover_str = \"\";\n keys.map((key,n) => {\n if (n>0) cite_hover_str += \"

    \";\n cite_hover_str += hover_cite(data.bibliography[key]);\n });\n cite_hover_str = cite_hover_str.replace(/\"/g, \"'\")\n var orig_string = el.innerHTML;\n if (orig_string != \"\") orig_string += \" \";\n el.innerHTML = `${orig_string}${cite_string}`;\n }\n });\n\n let bibEl = dom.querySelector(\"dt-bibliography\");\n if (bibEl) {\n let ol = dom.createElement(\"ol\");\n citations.forEach(key => {\n let el = dom.createElement(\"li\");\n el.innerHTML = bibliography_cite(data.bibliography[key]);\n ol.appendChild(el);\n })\n bibEl.appendChild(ol);\n }\n\n function inline_cite_short(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var n = data.citations.indexOf(key)+1;\n return \"\"+n;\n } else {\n return \"?\";\n }\n }\n return \"[\"+keys.map(cite_string).join(\", \")+\"]\";\n }\n\n function inline_cite_long(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var ent = data.bibliography[key];\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var year = ent.year;\n if (names.length == 1) return names[0] + \", \" + year;\n if (names.length == 2) return names[0] + \" & \" + names[1] + \", \" + year;\n if (names.length > 2) return names[0] + \", et al., \" + year;\n } else {\n return \"?\";\n }\n }\n return keys.map(cite_string).join(\", \");\n }\n\n function author_string(ent, template, sep, finalSep){\n var names = ent.author.split(\" and \");\n let name_strings = names.map(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1];\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n var initials = \"\";\n if (firsts != undefined) {\n initials = firsts.trim().split(\" \").map(s => s.trim()[0]);\n initials = initials.join(\".\")+\".\";\n }\n return template.replace(\"${F}\", firsts)\n .replace(\"${L}\", last)\n .replace(\"${I}\", initials);\n });\n if (names.length > 1) {\n var str = name_strings.slice(0, names.length-1).join(sep);\n str += (finalSep || sep) + name_strings[names.length-1];\n return str;\n } else {\n return name_strings[0];\n }\n }\n\n function venue_string(ent) {\n var cite = (ent.journal || ent.booktitle || \"\")\n if (\"volume\" in ent){\n var issue = ent.issue || ent.number;\n issue = (issue != undefined)? \"(\"+issue+\")\" : \"\";\n cite += \", Vol \" + ent.volume + issue;\n }\n if (\"pages\" in ent){\n cite += \", pp. \" + ent.pages\n }\n if (cite != \"\") cite += \". \"\n if (\"publisher\" in ent){\n cite += ent.publisher;\n if (cite[cite.length-1] != \".\") cite += \".\";\n }\n return cite;\n }\n\n function link_string(ent){\n if (\"url\" in ent){\n var url = ent.url;\n var arxiv_match = (/arxiv\\.org\\/abs\\/([0-9\\.]*)/).exec(url);\n if (arxiv_match != null){\n url = `http://arxiv.org/pdf/${arxiv_match[1]}.pdf`;\n }\n\n if (url.slice(-4) == \".pdf\"){\n var label = \"PDF\";\n } else if (url.slice(-5) == \".html\") {\n var label = \"HTML\";\n }\n return `  [${label||\"link\"}]`;\n }/* else if (\"doi\" in ent){\n return `  [DOI]`;\n }*/ else {\n return \"\";\n }\n }\n function doi_string(ent, new_line){\n if (\"doi\" in ent) {\n return `${new_line?\"
    \":\"\"} DOI: ${ent.doi}`;\n } else {\n return \"\";\n }\n }\n\n function bibliography_cite(ent, fancy){\n if (ent){\n var cite = \"\" + ent.title + \" \"\n cite += link_string(ent) + \"
    \";\n cite += author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += venue_string(ent);\n cite += doi_string(ent);\n return cite\n /*var cite = author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += \"\" + ent.title + \". \";\n cite += venue_string(ent);\n cite += doi_string(ent);\n cite += link_string(ent);\n return cite*/\n } else {\n return \"?\";\n }\n }\n\n function hover_cite(ent){\n if (ent){\n var cite = \"\";\n cite += \"\" + ent.title + \"\";\n cite += link_string(ent);\n cite += \"
    \"\n\n var a_str = author_string(ent, \"${I} ${L}\", \", \") + \".\";\n var v_str = venue_string(ent).trim() + \" \" + ent.year + \". \" + doi_string(ent, true);\n\n if ((a_str+v_str).length < Math.min(40, ent.title.length)) {\n cite += a_str + \" \" + v_str;\n } else {\n cite += a_str + \"
    \" + v_str;\n }\n return cite;\n } else {\n return \"?\";\n }\n }\n\n\n //https://scholar.google.com/scholar?q=allintitle%3ADocument+author%3Aolah\n function get_GS_URL(ent){\n if (ent){\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var title = ent.title.split(\" \")//.replace(/[,:]/, \"\")\n var url = \"http://search.labs.crossref.org/dois?\"//\"\"https://scholar.google.com/scholar?\"\n url += uris({q: names.join(\" \") + \" \" + title.join(\" \")})\n }\n\n }\n}\n","export default function(dom, data) {\n\n var fnTags = [].slice.apply(dom.querySelectorAll(\"dt-fn\"));\n var fnContent = [];\n fnTags.forEach((el,n) => {\n var content = el.innerHTML;\n fnContent.push(content);\n n = (n+1)+\"\";\n var key = \"fn-\"+n;\n var escaped_content = content.replace(/\"/g, \"'\");\n el.innerHTML = `${n}`;\n });\n\n let fnList = dom.querySelector(\"dt-fn-list\");\n if (fnList) {\n let ol = dom.createElement(\"ol\");\n fnContent.forEach(content => {\n let el = dom.createElement(\"li\");\n el.innerHTML = content;\n ol.appendChild(el);\n })\n fnList.appendChild(ol);\n }\n\n}\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n */\n\n;(function() {\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^( *[-*_]){3,} *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,\n nptable: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n blockquote: /^( *>[^\\n]+(\\n(?!def)[^\\n]+)*\\n*)+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n table: noop,\n paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,\n text: /^[^\\n]+/\n};\n\nblock.bullet = /(?:[*+-]|\\d+\\.)/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = replace(block.item, 'gm')\n (/bull/g, block.bullet)\n ();\n\nblock.list = replace(block.list)\n (/bull/g, block.bullet)\n ('hr', '\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))')\n ('def', '\\\\n+(?=' + block.def.source + ')')\n ();\n\nblock.blockquote = replace(block.blockquote)\n ('def', block.def)\n ();\n\nblock._tag = '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'\n + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'\n + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|[^\\\\w\\\\s@]*@)\\\\b';\n\nblock.html = replace(block.html)\n ('comment', //)\n ('closed', /<(tag)[\\s\\S]+?<\\/\\1>/)\n ('closing', /])*?>/)\n (/tag/g, block._tag)\n ();\n\nblock.paragraph = replace(block.paragraph)\n ('hr', block.hr)\n ('heading', block.heading)\n ('lheading', block.lheading)\n ('blockquote', block.blockquote)\n ('tag', '<' + block._tag)\n ('def', block.def)\n ();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]*?)\\s*\\1 *(?:\\n+|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = replace(block.paragraph)\n ('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n ();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top, bq) {\n var src = src.replace(/^ +$/gm, '')\n , next\n , loose\n , cap\n , bull\n , b\n , item\n , space\n , i\n , l;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic\n ? cap.replace(/\\n+$/, '')\n : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top, true);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n\n this.tokens.push({\n type: 'list_start',\n ordered: bull.length > 1\n });\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n this.tokens.push({\n type: loose\n ? 'loose_item_start'\n : 'list_item_start'\n });\n\n // Recurse.\n this.token(item, false, bq);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if ((!bq && top) && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.links[cap[1].toLowerCase()] = {\n href: cap[2],\n title: cap[3]\n };\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i]\n .replace(/^ *\\| *| *\\| *$/g, '')\n .split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n autolink: /^<([^ >]+(@|:\\/)[^ >]+)>/,\n url: noop,\n tag: /^|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^\\b_((?:[^_]|__)+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n code: /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n text: /^[\\s\\S]+?(?=[\\\\?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\ninline.link = replace(inline.link)\n ('inside', inline._inside)\n ('href', inline._href)\n ();\n\ninline.reflink = replace(inline.reflink)\n ('inside', inline._inside)\n ();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: replace(inline.escape)('])', '~|])')(),\n url: /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n text: replace(inline.text)\n (']|', '~]|')\n ('|', '|https?://|')\n ()\n});\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: replace(inline.br)('{2,}', '*')(),\n text: replace(inline.gfm.text)('{2,}', '*')()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer;\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new\n Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n var out = ''\n , link\n , text\n , href\n , cap;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += cap[1];\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = cap[1].charAt(6) === ':'\n ? this.mangle(cap[1].substring(7))\n : this.mangle(cap[1]);\n href = this.mangle('mailto:') + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n src = src.substring(cap[0].length);\n text = escape(cap[1]);\n href = text;\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^/i.test(cap[0])) {\n this.inLink = false;\n }\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0]\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out += this.outputLink(cap, {\n href: cap[2],\n title: cap[3]\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2], true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = escape(link.href)\n , title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = ''\n , l = text.length\n , i = 0\n , ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || {};\n}\n\nRenderer.prototype.code = function(code, lang, escaped) {\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '\\n
    ';\n }\n\n return '
    '\n    + (escaped ? code : escape(code, true))\n    + '\\n
    \\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '
    \\n' + quote + '
    \\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw) {\n return ''\n + text\n + '\\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n};\n\nRenderer.prototype.list = function(body, ordered) {\n var type = ordered ? 'ol' : 'ul';\n return '<' + type + '>\\n' + body + '\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '
  • ' + text + '
  • \\n';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '

    ' + text + '

    \\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + '\\n'\n + body\n + '\\n'\n + '
    \\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '\\n' + content + '\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' style=\"text-align:' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.em = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? '
    ' : '
    ';\n};\n\nRenderer.prototype.del = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n if (this.options.sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return '';\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0) {\n return '';\n }\n }\n var out = '
    ';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n var out = '\"'' : '>';\n return out;\n};\n\nRenderer.prototype.text = function(text) {\n return text;\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer;\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options, renderer) {\n var parser = new Parser(options, renderer);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options, this.renderer);\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n this.token.text);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = ''\n , body = ''\n , i\n , row\n , cell\n , flags\n , j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n flags = { header: true, align: this.token.align[i] };\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n var body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n var body = ''\n , ordered = this.token.ordered;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered);\n }\n case 'list_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'loose_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'html': {\n var html = !this.token.pre && !this.options.pedantic\n ? this.inline.output(this.token.text)\n : this.token.text;\n return this.renderer.html(html);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n }\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n return html\n .replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\nfunction unescape(html) {\n\t// explicitly match decimal, hex, and named HTML entities \n return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/g, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction replace(regex, opt) {\n regex = regex.source;\n opt = opt || '';\n return function self(name, val) {\n if (!name) return new RegExp(regex, opt);\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return self;\n };\n}\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1\n , target\n , key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n\n var highlight = opt.highlight\n , tokens\n , pending\n , i = 0;\n\n try {\n tokens = Lexer.lex(src, opt)\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/chjj/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occured:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n sanitizer: null,\n mangle: true,\n smartLists: false,\n silent: false,\n highlight: null,\n langPrefix: 'lang-',\n smartypants: false,\n headerPrefix: '',\n renderer: new Renderer,\n xhtml: false\n};\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.parse = marked;\n\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n this.marked = marked;\n}\n\n}).call(function() {\n return this || (typeof window !== 'undefined' ? window : global);\n}());\n","import marked from 'marked';\n\nmarked.setOptions({\n gfm: true,\n smartypants: true\n});\n\nexport default function(dom, data) {\n let markdownElements = [].slice.call(dom.querySelectorAll('[markdown]'));\n markdownElements.forEach(el => {\n let content = el.innerHTML;\n // Set default indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n\n el.innerHTML = marked(content);\n });\n}\n","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = _self.Prism = {\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/ text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\tbreak tokenloop;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t delNum = 1;\n\n\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t to = match.index + match[0].length,\n\t\t\t\t\t\t k = i,\n\t\t\t\t\t\t p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && p < to; ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t match = match[0].slice(lookbehindLength),\n\t\t\t\t\t to = from + match.length,\n\t\t\t\t\t before = str.slice(0, from),\n\t\t\t\t\t after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (env.type == 'comment') {\n\t\tenv.attributes['spellcheck'] = 'true';\n\t}\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n \t// In worker\n\t_self.addEventListener('message', function(evt) {\n\t\tvar message = JSON.parse(evt.data),\n\t\t lang = message.language,\n\t\t code = message.code,\n\t\t immediateClose = message.immediateClose;\n\n\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\tif (immediateClose) {\n\t\t\t_self.close();\n\t\t}\n\t}, false);\n\n\treturn _self.Prism;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (document.addEventListener && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': //,\n\t'prolog': /<\\?[\\w\\W]+?\\?>/,\n\t'doctype': //i,\n\t'cdata': //i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\w\\W])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:('|\")[\\w\\W]*?(\\1)|[^\\s>]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /[=>\"']/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\w\\W]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^\\{\\}\\s][^\\{\\};]*?(?=\\s*\\{)/,\n\t'string': {\n\t\tpattern: /(\"|')(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'property': /(\\b|\\B)[\\w-]+(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|').*?\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\w\\W]*?\\*\\//,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[a-z0-9_\\.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /(\\.|\\\\)/\n\t\t}\n\t},\n\t'keyword': /\\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(0x[\\dA-Fa-f]+|0b[01]+|0o[0-7]+|\\d*\\.?\\d+([Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*(?=\\()/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*\\*?|\\/|~|\\^|%|\\.{3}/\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[.+?]|\\\\.|[^/\\\\\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\\\\\|\\\\?[^\\\\])*?`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript'\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tif(Array.prototype.forEach) { // Check to prevent error in IE8\n\t\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\t\tvar language, parent = pre;\n\t\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\t\tparent = parent.parentNode;\n\t\t\t\t}\n\n\t\t\t\tif (parent) {\n\t\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t\t}\n\n\t\t\t\tif (!language) {\n\t\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t\t}\n\n\t\t\t\tvar code = document.createElement('code');\n\t\t\t\tcode.className = 'language-' + language;\n\n\t\t\t\tpre.textContent = '';\n\n\t\t\t\tcode.textContent = 'Loading…';\n\n\t\t\t\tpre.appendChild(code);\n\n\t\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\t\txhr.open('GET', src, true);\n\n\t\t\t\txhr.onreadystatechange = function () {\n\t\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\txhr.send(null);\n\t\t\t});\n\t\t}\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\n})();\n","import Prism from \"prismjs\";\n\nexport default function(dom, data) {\n let codeElements = [].slice.call(dom.querySelectorAll(\"dt-code\"));\n codeElements.forEach(el => {\n let content = el.textContent;\n el.innerHTML = \"\";\n let language = el.getAttribute(\"language\");\n let c = dom.createElement(\"code\");\n if (el.getAttribute(\"block\") === \"\") {\n // Let's normalize the tab indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n let p = dom.createElement(\"pre\");\n p.appendChild(c);\n el.appendChild(p);\n } else {\n el.appendChild(c);\n }\n let highlighted = content;\n if (Prism.languages[language]) {\n c.setAttribute(\"class\", \"language-\" + language);\n highlighted = Prism.highlight(content, Prism.languages[language]);\n }\n c.innerHTML = highlighted;\n });\n}\n","export default function(dom, data) {\n\n var textNodes = dom.createTreeWalker(\n dom.body,\n dom.defaultView.NodeFilter.SHOW_TEXT\n );\n while (textNodes.nextNode()) {\n var n = textNodes.currentNode,\n text = n.nodeValue;\n if (text && acceptNode(n)) {\n text = quotes(text);\n text = punctuation(text);\n n.nodeValue = text;\n }\n }\n}\n\nfunction acceptNode(node) {\n var parent = node.parentElement;\n var isMath = (parent && parent.getAttribute && parent.getAttribute(\"class\")) ? parent.getAttribute(\"class\").includes(\"katex\") || parent.getAttribute(\"class\").includes(\"MathJax\") : false;\n return parent &&\n parent.nodeName !== \"SCRIPT\" &&\n parent.nodeName !== \"STYLE\" &&\n parent.nodeName !== \"CODE\" &&\n parent.nodeName !== \"PRE\" &&\n parent.nodeName !== \"SPAN\" &&\n parent.nodeName !== \"DT-HEADER\" &&\n parent.nodeName !== \"DT-BYLINE\" &&\n parent.nodeName !== \"DT-MATH\" &&\n parent.nodeName !== \"DT-CODE\" &&\n parent.nodeName !== \"DT-BIBLIOGRAPHY\" &&\n parent.nodeName !== \"DT-FOOTER\" &&\n parent.nodeType !== 8 && //comment nodes\n !isMath;\n}\n\n\n/*!\n * typeset - Typesetting for the web\n * @version v0.1.6\n * @link https://github.com/davidmerfield/Typeset.js\n * @author David Merfield\n */\n // which has a CC0 license\n // http://creativecommons.org/publicdomain/zero/1.0/\n\n\nfunction punctuation(text){\n\n // Dashes\n text = text.replace(/--/g, '\\u2014');\n text = text.replace(/ \\u2014 /g,\"\\u2009\\u2014\\u2009\"); //this has thin spaces\n\n // Elipses\n text = text.replace(/\\.\\.\\./g,'…');\n\n // Nbsp for punc with spaces\n var NBSP = \"\\u00a0\";\n var NBSP_PUNCTUATION_START = /([«¿¡]) /g;\n var NBSP_PUNCTUATION_END = / ([\\!\\?:;\\.,‽»])/g;\n\n text = text.replace(NBSP_PUNCTUATION_START, '$1' + NBSP);\n text = text.replace(NBSP_PUNCTUATION_END, NBSP + '$1');\n\n return text;\n}\n\nfunction quotes(text) {\n\n text = text\n .replace(/(\\W|^)\"([^\\s\\!\\?:;\\.,‽»])/g, '$1\\u201c$2') // beginning \"\n .replace(/(\\u201c[^\"]*)\"([^\"]*$|[^\\u201c\"]*\\u201c)/g, '$1\\u201d$2') // ending \"\n .replace(/([^0-9])\"/g,'$1\\u201d') // remaining \" at end of word\n .replace(/(\\W|^)'(\\S)/g, '$1\\u2018$2') // beginning '\n .replace(/([a-z])'([a-z])/ig, '$1\\u2019$2') // conjunction's possession\n .replace(/((\\u2018[^']*)|[a-z])'([^0-9]|$)/ig, '$1\\u2019$3') // ending '\n .replace(/(\\u2018)([0-9]{2}[^\\u2019]*)(\\u2018([^0-9]|$)|$|\\u2019[a-z])/ig, '\\u2019$2$3') // abbrev. years like '93\n .replace(/(\\B|^)\\u2018(?=([^\\u2019]*\\u2019\\b)*([^\\u2019\\u2018]*\\W[\\u2019\\u2018]\\b|[^\\u2019\\u2018]*$))/ig, '$1\\u2019') // backwards apostrophe\n .replace(/'''/g, '\\u2034') // triple prime\n .replace(/(\"|'')/g, '\\u2033') // double prime\n .replace(/'/g, '\\u2032');\n\n // Allow escaped quotes\n text = text.replace(/\\\\“/, '\\\"');\n text = text.replace(/\\\\”/, '\\\"');\n text = text.replace(/\\\\’/, '\\'');\n text = text.replace(/\\\\‘/, '\\'');\n\n return text;\n}\n\nfunction ligatures(text){\n\n text = text.replace(/fi/g, 'fi');\n text = text.replace(/fl/g, 'fl');\n\n return text;\n};\n","import code from './hover-box.txt';\n\nexport default function(dom) {\n let s = dom.createElement(\"script\");\n s.textContent = code;\n dom.querySelector(\"body\").appendChild(s);\n}\n","//import xml from \"xml\";\n\nexport default function(data) {\n\n\n var date = data.publishedDate;\n\n var batch_timestamp = Math.floor(Date.now() / 1000);\n var batch_id = data.authors.length ? data.authors[0].lastName.toLowerCase().slice(0,20) : \"Anonymous\";\n batch_id += \"_\" + date.getFullYear();\n batch_id += \"_\" + data.title.split(\" \")[0].toLowerCase().slice(0,20) + \"_\" + batch_timestamp;\n // generate XML\n var crf_data =\n {doi_batch : [\n\n { _attr: {\n version: \"4.3.7\",\n xmlns: \"http://www.crossref.org/schema/4.3.7\",\n \"xmlns:xsi\": \"http://www.w3.org/2001/XMLSchema-instance\",\n \"xsi:schemaLocation\": \"http://www.crossref.org/schema/4.3.7 http://www.crossref.org/schemas/crossref4.3.7.xsd\",\n }},\n\n { head: [\n {doi_batch_id: batch_id},\n {timestamp: batch_timestamp},\n {depositor: [\n {depositor_name: data.journal.publisherName},\n {email_address: data.journal.publisherEmail},\n ]},\n {registrant: data.journal.publisherName},\n ]},\n\n {body: [\n {journal: [\n\n {journal_metadata: [\n {full_title: data.journal.full_title || data.journal.title},\n {abbrev_title: data.journal.abbrev_title || data.journal.title || data.journal.full_title},\n {issn: data.journal.issn},\n {doi_data: [\n {doi: data.journal.doi},\n {resource: data.journal.url},\n ]},\n ]},\n\n {journal_issue: [\n {publication_date: [\n {month: date.getMonth()+1},\n {year: date.getFullYear()},\n ]},\n {journal_volume: [\n {volume: data.volume},\n ]},\n {issue: data.issue},\n ]},\n\n {journal_article: [\n {titles: [\n {title: data.title},\n ]},\n { contributors:\n data.authors.map((author, ind) => (\n {person_name: [\n { _attr: {\n contributor_role: \"author\",\n sequence: (ind == 0)? \"first\" : \"additional\"\n }},\n {given_name: author.firstName},\n {surname: author.lastName},\n {affiliation: author.affiliation}\n // TODO: ORCID?\n ]}\n ))\n },\n {publication_date: [\n {month: date.getMonth()+1},\n {day: date.getDate()},\n {year: date.getFullYear()}\n ]},\n { publisher_item: [\n {item_number: data.doi}\n ]},\n {doi_data: [\n {doi: data.doi},\n //{timestamp: \"\"},\n {resource: data.url},\n ]},\n {citation_list:\n data.citations.map(key =>\n citation_xml(key, data.bibliography[key]))\n }\n\n ]},\n\n ]},\n ]},\n ]};\n\n return xml(crf_data);\n}\n\nfunction citation_xml(key, ent){\n if (ent == undefined) return {};\n var info = [];\n info.push({_attr: {key: key}});\n if (\"title\" in ent)\n info.push({article_title: ent.title});\n if (\"author\" in ent)\n info.push({author: ent.author.split(\" and \")[0].split(\",\")[0].trim()});\n if (\"journal\" in ent)\n info.push({journal_title: ent.journal});\n if (\"booktitle\" in ent)\n info.push({volume_title: ent.booktitle});\n if (\"volume\" in ent)\n info.push({volume: ent.volume});\n if (\"issue\" in ent)\n info.push({issue: ent.issue});\n if (\"doi\" in ent)\n info.push({doi: ent.doi});\n return {citation: info}\n}\n\nfunction xml(obj) {\n //console.log(typeof(obj), obj)\n if (typeof obj === 'string') return obj;\n if (typeof obj === 'number') return \"\"+obj;\n let keys = Object.keys(obj);\n if (keys.length != 1) console.error(\"can't interpret \", obj, \"as xml\");\n let name = keys[0];\n var full_content = obj[name];\n var attr = {};\n if (Array.isArray(full_content)){\n var content = [];\n for (var i in full_content) {\n var obj = full_content[i];\n var obj_name = Object.keys(obj)[0];\n if (\"_attr\" == obj_name) {\n attr = obj[\"_attr\"];\n } else {\n //console.log(Object.keys(obj)[0])\n content.push(obj);\n }\n }\n } else {\n content = full_content;\n }\n if (content == undefined){\n content = \"undefined\"\n }\n\n let attr_string = \"\";\n for (var k in attr) {\n attr_string += ` ${k}=\\\"${attr[k]}\\\"`\n }\n\n //console.log(typeof content, Array.isArray(content), content instanceof String, content)\n if (Array.isArray(content)){\n content = content.map(xml);\n content = content.join(\"\\n\").split(\"\\n\");\n content = content.map(s => \" \" + s).join(\"\\n\")\n var result = `<${name}${attr_string}>\\n${content}\\n`;\n } else {\n content = xml(content);\n var result = `<${name}${attr_string}>${content}`;\n }\n return result;\n}\n","import logo from \"./distill-logo.svg\";\n\nconst html = `\n\n\n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-header\");\n if(el) {\n el.innerHTML = html;\n } else {\n let header = dom.createElement(\"dt-header\");\n header.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(header, b.firstChild);\n }\n}\n","import logo from \"./distill-logo.svg\";\n\nlet html = `\n\n\n
    \n \n ${logo}\n Distill\n is dedicated to clear explanations of machine learning\n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-footer\");\n if(el) {\n el.innerHTML = html;\n } else {\n let footer = dom.createElement(\"dt-footer\");\n footer.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.appendChild(footer);\n }\n}\n","import html from \"./components/html\";\nimport styles from \"./components/styles\";\nimport frontMatter from \"./components/front-matter\";\nimport bibliography from \"./components/bibliography\";\nimport expandData from \"./components/expand-data\";\nimport meta from \"./components/meta\";\nimport banner from \"./components/banner\";\nimport byline from \"./components/byline\";\nimport appendix from \"./components/appendix\";\nimport citation from \"./components/citation\";\nimport footnote from \"./components/footnote\";\nimport markdown from \"./components/markdown\";\nimport code from \"./components/code\";\nimport typeset from \"./components/typeset\";\nimport hoverBox from \"./components/hover-box-include\";\nimport generateCrossref from \"./components/generate-crossref\";\nimport header from \"./components/header\";\nimport footer from \"./components/footer\";\n\nfunction renderImmediately(dom) {\n html(dom);\n styles(dom);\n}\n\nfunction renderOnLoad(dom, data) {\n frontMatter(dom, data);\n bibliography(dom, data);\n expandData(dom, data);\n meta(dom, data);\n byline(dom, data);\n appendix(dom, data);\n markdown(dom, data);\n code(dom, data);\n citation(dom, data);\n footnote(dom, data);\n typeset(dom, data);\n hoverBox(dom, data);\n}\n\n// If we are in a browser, render automatically...\nif(window && window.document) {\n let data = {};\n renderImmediately(window.document);\n window.document.addEventListener(\"DOMContentLoaded\", (event) => {\n renderOnLoad(window.document, data);\n // Add a banner if we're not on localhost.\n if (window.location.hostname !== \"localhost\" && window.location.origin !== \"file://\") {\n banner(window.document, data);\n }\n generateCrossref(data);\n });\n}\n\n// If we are in node...\nfunction render(dom, data) {\n renderImmediately(dom);\n renderOnLoad(dom, data);\n // Remove script tag so it doesn't run again in the client\n let s = dom.querySelector('script[src*=\"distill.pub/template\"]');\n if (s) { s.parentElement.removeChild(s); };\n}\n\n// Distill specific rendering\nfunction distillify(dom, data) {\n header(dom, data);\n footer(dom, data);\n}\n\nexport {render as render};\nexport {distillify as distillify};\nexport {generateCrossref as generateCrossref};\n"],"names":["let","meta","YAMLException","common","require$$0","Mark","this","Type","require$$1","require$$2","type","arguments","Schema","require$$3","require$$4","require$$5","require","_hasOwnProperty","_toString","require$$6","require$$7","_require","DEFAULT_SAFE_SCHEMA","DEFAULT_FULL_SCHEMA","loadAll","load","safeLoadAll","safeLoad","State","dump","safeDump","require$$8","require$$9","ymlParse","interval","day","timeDay","timeYear","timeSunday","timeMonday","locale","escape","const","html","define","global","Prism","code","render"],"mappings":";;;;;;AAAA,WAAe,SAAS,GAAG,EAAE;EAC3B,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;IACnD,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;GACrD;;EAEDA,IAAI,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;;EAErC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE;IACvCA,IAAI,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACtC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;GACxB;EACD,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,qBAAqB,CAAC,EAAE;IAC7CA,IAAIC,MAAI,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACrCA,MAAI,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACtCA,MAAI,CAAC,YAAY,CAAC,SAAS,EAAE,qCAAqC,CAAC,CAAC;IACpE,IAAI,CAAC,WAAW,CAACA,MAAI,CAAC,CAAC;GACxB;CACF,CAAA;;;;;;;;;;;;ACZD,aAAe,SAAS,GAAG,EAAE;EAC3BD,IAAI,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;EACnC,CAAC,CAAC,WAAW,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC;EACvD,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;CAC1C,CAAA;;ACPD,SAAS,SAAS,CAAC,OAAO,EAAE;EAC1B,OAAO,CAAC,OAAO,OAAO,KAAK,WAAW,MAAM,OAAO,KAAK,IAAI,CAAC,CAAC;CAC/D;;;AAGD,SAAS,QAAQ,CAAC,OAAO,EAAE;EACzB,OAAO,CAAC,OAAO,OAAO,KAAK,QAAQ,MAAM,OAAO,KAAK,IAAI,CAAC,CAAC;CAC5D;;;AAGD,SAAS,OAAO,CAAC,QAAQ,EAAE;EACzB,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAA,OAAO,QAAQ,CAAC,EAAA;OACxC,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAA,OAAO,EAAE,CAAC,EAAA;;EAExC,OAAO,EAAE,QAAQ,EAAE,CAAC;CACrB;;;AAGD,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE;EAC9B,IAAI,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC;;EAEnC,IAAI,MAAM,EAAE;IACV,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;IAEjC,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;MACtE,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;MACxB,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;KAC3B;GACF;;EAED,OAAO,MAAM,CAAC;CACf;;;AAGD,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE;EAC7B,IAAI,MAAM,GAAG,EAAE,EAAE,KAAK,CAAC;;EAEvB,KAAK,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,IAAI,CAAC,EAAE;IACzC,MAAM,IAAI,MAAM,CAAC;GAClB;;EAED,OAAO,MAAM,CAAC;CACf;;;AAGD,SAAS,cAAc,CAAC,MAAM,EAAE;EAC9B,OAAO,CAAC,MAAM,KAAK,CAAC,MAAM,MAAM,CAAC,iBAAiB,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC;CACpE;;;AAGD,kBAAgC,SAAS,CAAC;AAC1C,iBAAgC,QAAQ,CAAC;AACzC,gBAAgC,OAAO,CAAC;AACxC,eAAgC,MAAM,CAAC;AACvC,uBAAgC,cAAc,CAAC;AAC/C,eAAgC,MAAM,CAAC;;;;;;;;;;;AC1DvC;;AAEA,AAEA,SAASE,eAAa,CAAC,MAAM,EAAE,IAAI,EAAE;;EAEnC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;;EAGjB,IAAI,KAAK,CAAC,iBAAiB,EAAE;;IAE3B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;GACjD,MAAM;;IAEL,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,EAAE,EAAE,KAAK,IAAI,EAAE,CAAC;GACxC;;EAED,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;EAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;EACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACjB,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,kBAAkB,KAAK,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;CACpG;;;;AAIDA,eAAa,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACzDA,eAAa,CAAC,SAAS,CAAC,WAAW,GAAGA,eAAa,CAAC;;;AAGpDA,eAAa,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,CAAC,OAAO,EAAE;EAC5D,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;;EAE9B,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,kBAAkB,CAAC;;EAE5C,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE;IACzB,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;GACtC;;EAED,OAAO,MAAM,CAAC;CACf,CAAC;;;AAGF,aAAc,GAAGA,eAAa,CAAC;;ACvC/B,IAAIC,QAAM,GAAGC,QAAmB,CAAC;;;AAGjC,SAASC,MAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE;EAClD,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC;EACrB,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC;EACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;EACzB,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC;EACrB,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC;CACxB;;;AAGDA,MAAI,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE;;;EACjE,IAAI,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC;;EAEpC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;;EAE9B,MAAM,GAAG,MAAM,IAAI,CAAC,CAAC;EACrB,SAAS,GAAG,SAAS,IAAI,EAAE,CAAC;;EAE5B,IAAI,GAAG,EAAE,CAAC;EACV,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;;EAEtB,OAAO,KAAK,GAAG,CAAC,IAAI,0BAA0B,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;IAC5F,KAAK,IAAI,CAAC,CAAC;IACX,IAAIC,MAAI,CAAC,QAAQ,GAAG,KAAK,IAAI,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;MAC/C,IAAI,GAAG,OAAO,CAAC;MACf,KAAK,IAAI,CAAC,CAAC;MACX,MAAM;KACP;GACF;;EAED,IAAI,GAAG,EAAE,CAAC;EACV,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;;EAEpB,OAAO,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,0BAA0B,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;IACrG,GAAG,IAAI,CAAC,CAAC;IACT,IAAI,GAAG,GAAGA,MAAI,CAAC,QAAQ,IAAI,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;MAC7C,IAAI,GAAG,OAAO,CAAC;MACf,GAAG,IAAI,CAAC,CAAC;MACT,MAAM;KACP;GACF;;EAED,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;;EAExC,OAAOH,QAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI;SACzDA,QAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;CAC/E,CAAC;;;AAGFE,MAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,CAAC,OAAO,EAAE;EACnD,IAAI,OAAO,EAAE,KAAK,GAAG,EAAE,CAAC;;EAExB,IAAI,IAAI,CAAC,IAAI,EAAE;IACb,KAAK,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;GACpC;;EAED,KAAK,IAAI,UAAU,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,WAAW,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;;EAExE,IAAI,CAAC,OAAO,EAAE;IACZ,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;;IAE5B,IAAI,OAAO,EAAE;MACX,KAAK,IAAI,KAAK,GAAG,OAAO,CAAC;KAC1B;GACF;;EAED,OAAO,KAAK,CAAC;CACd,CAAC;;;AAGF,QAAc,GAAGA,MAAI,CAAC;;ACzEtB,IAAIH,eAAa,GAAGE,SAAsB,CAAC;;AAE3C,IAAI,wBAAwB,GAAG;EAC7B,MAAM;EACN,SAAS;EACT,WAAW;EACX,YAAY;EACZ,WAAW;EACX,WAAW;EACX,cAAc;EACd,cAAc;CACf,CAAC;;AAEF,IAAI,eAAe,GAAG;EACpB,QAAQ;EACR,UAAU;EACV,SAAS;CACV,CAAC;;AAEF,SAAS,mBAAmB,CAAC,GAAG,EAAE;EAChC,IAAI,MAAM,GAAG,EAAE,CAAC;;EAEhB,IAAI,GAAG,KAAK,IAAI,EAAE;IAChB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,KAAK,EAAE;MACxC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,KAAK,EAAE;QAClC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;OAC/B,CAAC,CAAC;KACJ,CAAC,CAAC;GACJ;;EAED,OAAO,MAAM,CAAC;CACf;;AAED,SAASG,MAAI,CAAC,GAAG,EAAE,OAAO,EAAE;EAC1B,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;;EAExB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE;IAC3C,IAAI,wBAAwB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;MACjD,MAAM,IAAIL,eAAa,CAAC,kBAAkB,GAAG,IAAI,GAAG,6BAA6B,GAAG,GAAG,GAAG,cAAc,CAAC,CAAC;KAC3G;GACF,CAAC,CAAC;;;EAGH,IAAI,CAAC,GAAG,YAAY,GAAG,CAAC;EACxB,IAAI,CAAC,IAAI,WAAW,OAAO,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC;EACpD,IAAI,CAAC,OAAO,QAAQ,OAAO,CAAC,SAAS,CAAC,SAAS,YAAY,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;EAC5E,IAAI,CAAC,SAAS,MAAM,OAAO,CAAC,WAAW,CAAC,OAAO,UAAU,IAAI,EAAE,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;EAChF,IAAI,CAAC,UAAU,KAAK,OAAO,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC;EACpD,IAAI,CAAC,SAAS,MAAM,OAAO,CAAC,WAAW,CAAC,OAAO,IAAI,CAAC;EACpD,IAAI,CAAC,SAAS,MAAM,OAAO,CAAC,WAAW,CAAC,OAAO,IAAI,CAAC;EACpD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC;EACpD,IAAI,CAAC,YAAY,GAAG,mBAAmB,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,CAAC;;EAEzE,IAAI,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;IAC7C,MAAM,IAAIA,eAAa,CAAC,gBAAgB,GAAG,IAAI,CAAC,IAAI,GAAG,sBAAsB,GAAG,GAAG,GAAG,cAAc,CAAC,CAAC;GACvG;CACF;;AAED,QAAc,GAAGK,MAAI,CAAC;;;;ACxDtB,IAAIJ,QAAM,UAAUC,QAAmB,CAAC;AACxC,IAAIF,eAAa,GAAGM,SAAsB,CAAC;AAC3C,IAAID,MAAI,YAAYE,IAAiB,CAAC;;;AAGtC,SAAS,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;EACzC,IAAI,OAAO,GAAG,EAAE,CAAC;;EAEjB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,cAAc,EAAE;IAC/C,MAAM,GAAG,WAAW,CAAC,cAAc,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;GACpD,CAAC,CAAC;;EAEH,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,WAAW,EAAE;IAC1C,MAAM,CAAC,OAAO,CAAC,UAAU,YAAY,EAAE,aAAa,EAAE;MACpD,IAAI,YAAY,CAAC,GAAG,KAAK,WAAW,CAAC,GAAG,IAAI,YAAY,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,EAAE;QAClF,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;OAC7B;KACF,CAAC,CAAC;;IAEH,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;GAC1B,CAAC,CAAC;;EAEH,OAAO,MAAM,CAAC,MAAM,CAAC,UAAUC,OAAI,EAAE,KAAK,EAAE;IAC1C,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;GACtC,CAAC,CAAC;CACJ;;;AAGD,SAAS,UAAU,iBAAiB;;;EAClC,IAAI,MAAM,GAAG;QACP,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,EAAE;OACb,EAAE,KAAK,EAAE,MAAM,CAAC;;EAErB,SAAS,WAAW,CAACA,OAAI,EAAE;IACzB,MAAM,CAACA,OAAI,CAAC,IAAI,CAAC,CAACA,OAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAACA,OAAI,CAAC,GAAG,CAAC,GAAGA,OAAI,CAAC;GACnE;;EAED,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IACrEC,WAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;GACvC;EACD,OAAO,MAAM,CAAC;CACf;;;AAGD,SAASC,QAAM,CAAC,UAAU,EAAE;EAC1B,IAAI,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,KAAK,EAAE,CAAC;EAC1C,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,IAAI,EAAE,CAAC;EAC1C,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,IAAI,EAAE,CAAC;;EAE1C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAUF,OAAI,EAAE;IACpC,IAAIA,OAAI,CAAC,QAAQ,IAAIA,OAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;MAC/C,MAAM,IAAIR,eAAa,CAAC,iHAAiH,CAAC,CAAC;KAC5I;GACF,CAAC,CAAC;;EAEH,IAAI,CAAC,gBAAgB,GAAG,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;EAC1D,IAAI,CAAC,gBAAgB,GAAG,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;EAC1D,IAAI,CAAC,eAAe,IAAI,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;CAClF;;;AAGDU,QAAM,CAAC,OAAO,GAAG,IAAI,CAAC;;;AAGtBA,QAAM,CAAC,MAAM,GAAG,SAAS,YAAY,GAAG;EACtC,IAAI,OAAO,EAAE,KAAK,CAAC;;EAEnB,QAAQ,SAAS,CAAC,MAAM;IACtB,KAAK,CAAC;MACJ,OAAO,GAAGA,QAAM,CAAC,OAAO,CAAC;MACzB,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;MACrB,MAAM;;IAER,KAAK,CAAC;MACJ,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;MACvB,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;MACrB,MAAM;;IAER;MACE,MAAM,IAAIV,eAAa,CAAC,sDAAsD,CAAC,CAAC;GACnF;;EAED,OAAO,GAAGC,QAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;EAClC,KAAK,GAAGA,QAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;;EAE9B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,MAAM,EAAE,EAAE,OAAO,MAAM,YAAYS,QAAM,CAAC,EAAE,CAAC,EAAE;IAC1E,MAAM,IAAIV,eAAa,CAAC,2FAA2F,CAAC,CAAC;GACtH;;EAED,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAUQ,OAAI,EAAE,EAAE,OAAOA,OAAI,YAAYH,MAAI,CAAC,EAAE,CAAC,EAAE;IAClE,MAAM,IAAIL,eAAa,CAAC,oFAAoF,CAAC,CAAC;GAC/G;;EAED,OAAO,IAAIU,QAAM,CAAC;IAChB,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE,KAAK;GAChB,CAAC,CAAC;CACJ,CAAC;;;AAGF,UAAc,GAAGA,QAAM,CAAC;;ACzGxB,IAAIL,MAAI,GAAGH,IAAkB,CAAC;;AAE9B,OAAc,GAAG,IAAIG,MAAI,CAAC,uBAAuB,EAAE;EACjD,IAAI,EAAE,QAAQ;EACd,SAAS,EAAE,UAAU,IAAI,EAAE,EAAE,OAAO,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,EAAE;CACjE,CAAC,CAAC;;ACLH,IAAIA,MAAI,GAAGH,IAAkB,CAAC;;AAE9B,OAAc,GAAG,IAAIG,MAAI,CAAC,uBAAuB,EAAE;EACjD,IAAI,EAAE,UAAU;EAChB,SAAS,EAAE,UAAU,IAAI,EAAE,EAAE,OAAO,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,EAAE;CACjE,CAAC,CAAC;;ACLH,IAAIA,MAAI,GAAGH,IAAkB,CAAC;;AAE9B,OAAc,GAAG,IAAIG,MAAI,CAAC,uBAAuB,EAAE;EACjD,IAAI,EAAE,SAAS;EACf,SAAS,EAAE,UAAU,IAAI,EAAE,EAAE,OAAO,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,EAAE;CACjE,CAAC,CAAC;;ACAH,IAAIK,QAAM,GAAGR,MAAoB,CAAC;;;AAGlC,YAAc,GAAG,IAAIQ,QAAM,CAAC;EAC1B,QAAQ,EAAE;IACRJ,GAAsB;IACtBC,GAAsB;IACtBI,GAAsB;GACvB;CACF,CAAC,CAAC;;ACdH,IAAIN,MAAI,GAAGH,IAAkB,CAAC;;AAE9B,SAAS,eAAe,CAAC,IAAI,EAAE;EAC7B,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;;EAE/B,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;;EAEtB,OAAO,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,GAAG;UACzB,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC;CAC/E;;AAED,SAAS,iBAAiB,GAAG;EAC3B,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,MAAM,CAAC,MAAM,EAAE;EACtB,OAAO,MAAM,KAAK,IAAI,CAAC;CACxB;;AAED,SAAc,GAAG,IAAIG,MAAI,CAAC,wBAAwB,EAAE;EAClD,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,eAAe;EACxB,SAAS,EAAE,iBAAiB;EAC5B,SAAS,EAAE,MAAM;EACjB,SAAS,EAAE;IACT,SAAS,EAAE,YAAY,EAAE,OAAO,GAAG,CAAC,KAAK;IACzC,SAAS,EAAE,YAAY,EAAE,OAAO,MAAM,CAAC,EAAE;IACzC,SAAS,EAAE,YAAY,EAAE,OAAO,MAAM,CAAC,EAAE;IACzC,SAAS,EAAE,YAAY,EAAE,OAAO,MAAM,CAAC,EAAE;GAC1C;EACD,YAAY,EAAE,WAAW;CAC1B,CAAC,CAAC;;AC/BH,IAAIA,MAAI,GAAGH,IAAkB,CAAC;;AAE9B,SAAS,kBAAkB,CAAC,IAAI,EAAE;EAChC,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;EAEhC,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;;EAEtB,OAAO,CAAC,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,CAAC;UACpE,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC;CAClF;;AAED,SAAS,oBAAoB,CAAC,IAAI,EAAE;EAClC,OAAO,IAAI,KAAK,MAAM;SACf,IAAI,KAAK,MAAM;SACf,IAAI,KAAK,MAAM,CAAC;CACxB;;AAED,SAAS,SAAS,CAAC,MAAM,EAAE;EACzB,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,kBAAkB,CAAC;CACtE;;AAED,QAAc,GAAG,IAAIG,MAAI,CAAC,wBAAwB,EAAE;EAClD,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,kBAAkB;EAC3B,SAAS,EAAE,oBAAoB;EAC/B,SAAS,EAAE,SAAS;EACpB,SAAS,EAAE;IACT,SAAS,EAAE,UAAU,MAAM,EAAE,EAAE,OAAO,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE;IAClE,SAAS,EAAE,UAAU,MAAM,EAAE,EAAE,OAAO,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE;IAClE,SAAS,EAAE,UAAU,MAAM,EAAE,EAAE,OAAO,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE;GACnE;EACD,YAAY,EAAE,WAAW;CAC1B,CAAC,CAAC;;AChCH,IAAIJ,QAAM,GAAGC,QAAoB,CAAC;AAClC,IAAIG,MAAI,KAAKC,IAAkB,CAAC;;AAEhC,SAAS,SAAS,CAAC,CAAC,EAAE;EACpB,OAAO,CAAC,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ;UACxC,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,CAAC;UACzC,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,CAAC,CAAC;CACnD;;AAED,SAAS,SAAS,CAAC,CAAC,EAAE;EACpB,QAAQ,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAE;CACnD;;AAED,SAAS,SAAS,CAAC,CAAC,EAAE;EACpB,QAAQ,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAE;CACnD;;AAED,SAAS,kBAAkB,CAAC,IAAI,EAAE;EAChC,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;EAEhC,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM;MACjB,KAAK,GAAG,CAAC;MACT,SAAS,GAAG,KAAK;MACjB,EAAE,CAAC;;EAEP,IAAI,CAAC,GAAG,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;EAEvB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;;;EAGjB,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE;IAC5B,EAAE,GAAG,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;GACpB;;EAED,IAAI,EAAE,KAAK,GAAG,EAAE;;IAEd,IAAI,KAAK,GAAG,CAAC,KAAK,GAAG,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;IACnC,EAAE,GAAG,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;;;;IAInB,IAAI,EAAE,KAAK,GAAG,EAAE;;MAEd,KAAK,EAAE,CAAC;;MAER,OAAO,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE;QAC3B,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACjB,IAAI,EAAE,KAAK,GAAG,EAAE,EAAA,SAAS,EAAA;QACzB,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;QAC3C,SAAS,GAAG,IAAI,CAAC;OAClB;MACD,OAAO,SAAS,CAAC;KAClB;;;IAGD,IAAI,EAAE,KAAK,GAAG,EAAE;;MAEd,KAAK,EAAE,CAAC;;MAER,OAAO,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE;QAC3B,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACjB,IAAI,EAAE,KAAK,GAAG,EAAE,EAAA,SAAS,EAAA;QACzB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;QACrD,SAAS,GAAG,IAAI,CAAC;OAClB;MACD,OAAO,SAAS,CAAC;KAClB;;;IAGD,OAAO,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE;MAC3B,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;MACjB,IAAI,EAAE,KAAK,GAAG,EAAE,EAAA,SAAS,EAAA;MACzB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;MACrD,SAAS,GAAG,IAAI,CAAC;KAClB;IACD,OAAO,SAAS,CAAC;GAClB;;;;EAID,OAAO,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE;IAC3B,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACjB,IAAI,EAAE,KAAK,GAAG,EAAE,EAAA,SAAS,EAAA;IACzB,IAAI,EAAE,KAAK,GAAG,EAAE,EAAA,MAAM,EAAA;IACtB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE;MACtC,OAAO,KAAK,CAAC;KACd;IACD,SAAS,GAAG,IAAI,CAAC;GAClB;;EAED,IAAI,CAAC,SAAS,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;;EAG7B,IAAI,EAAE,KAAK,GAAG,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;;;EAG5B,OAAO,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;CACpD;;AAED,SAAS,oBAAoB,CAAC,IAAI,EAAE;EAClC,IAAI,KAAK,GAAG,IAAI,EAAE,IAAI,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,EAAE,CAAC;;EAElD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;IAC7B,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;GACjC;;EAED,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;;EAEd,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE;IAC5B,IAAI,EAAE,KAAK,GAAG,EAAE,EAAA,IAAI,GAAG,CAAC,CAAC,CAAC,EAAA;IAC1B,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;GACf;;EAED,IAAI,KAAK,KAAK,GAAG,EAAE,EAAA,OAAO,CAAC,CAAC,EAAA;;EAE5B,IAAI,EAAE,KAAK,GAAG,EAAE;IACd,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,EAAA,OAAO,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAA;IAChE,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,EAAA,OAAO,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAA;IACxD,OAAO,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;GAClC;;EAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;IAC7B,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;MACpC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;KACjC,CAAC,CAAC;;IAEH,KAAK,GAAG,CAAC,CAAC;IACV,IAAI,GAAG,CAAC,CAAC;;IAET,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;MAC1B,KAAK,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;MACpB,IAAI,IAAI,EAAE,CAAC;KACZ,CAAC,CAAC;;IAEH,OAAO,IAAI,GAAG,KAAK,CAAC;;GAErB;;EAED,OAAO,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;CACnC;;AAED,SAAS,SAAS,CAAC,MAAM,EAAE;EACzB,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,iBAAiB;UAC7D,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,CAACL,QAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;CAC7D;;AAED,SAAc,GAAG,IAAII,MAAI,CAAC,uBAAuB,EAAE;EACjD,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,kBAAkB;EAC3B,SAAS,EAAE,oBAAoB;EAC/B,SAAS,EAAE,SAAS;EACpB,SAAS,EAAE;IACT,MAAM,OAAO,UAAU,MAAM,EAAE,EAAE,OAAO,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;IACpE,KAAK,QAAQ,UAAU,MAAM,EAAE,EAAE,OAAO,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;IACpE,OAAO,MAAM,UAAU,MAAM,EAAE,EAAE,cAAc,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE;IACrE,WAAW,EAAE,UAAU,MAAM,EAAE,EAAE,OAAO,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE;GACpF;EACD,YAAY,EAAE,SAAS;EACvB,YAAY,EAAE;IACZ,MAAM,OAAO,EAAE,CAAC,GAAG,KAAK,EAAE;IAC1B,KAAK,QAAQ,EAAE,CAAC,GAAG,KAAK,EAAE;IAC1B,OAAO,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE;IAC1B,WAAW,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE;GAC3B;CACF,CAAC,CAAC;;ACrKH,IAAIJ,QAAM,GAAGC,QAAoB,CAAC;AAClC,IAAIG,MAAI,KAAKC,IAAkB,CAAC;;AAEhC,IAAI,kBAAkB,GAAG,IAAI,MAAM;EACjC,wDAAwD;EACxD,gCAAgC;EAChC,+CAA+C;EAC/C,0BAA0B;EAC1B,uBAAuB,CAAC,CAAC;;AAE3B,SAAS,gBAAgB,CAAC,IAAI,EAAE;EAC9B,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;EAEhC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;EAEjD,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,kBAAkB,CAAC,IAAI,EAAE;EAChC,IAAI,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC;;EAE9B,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;EAC9C,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;EACnC,MAAM,GAAG,EAAE,CAAC;;EAEZ,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;IAC/B,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;GACxB;;EAED,IAAI,KAAK,KAAK,MAAM,EAAE;IACpB,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;;GAE3E,MAAM,IAAI,KAAK,KAAK,MAAM,EAAE;IAC3B,OAAO,GAAG,CAAC;;GAEZ,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;IAClC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;MACpC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;KACnC,CAAC,CAAC;;IAEH,KAAK,GAAG,GAAG,CAAC;IACZ,IAAI,GAAG,CAAC,CAAC;;IAET,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;MAC1B,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;MAClB,IAAI,IAAI,EAAE,CAAC;KACZ,CAAC,CAAC;;IAEH,OAAO,IAAI,GAAG,KAAK,CAAC;;GAErB;EACD,OAAO,IAAI,GAAG,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;CACrC;;;AAGD,IAAI,sBAAsB,GAAG,eAAe,CAAC;;AAE7C,SAAS,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE;EACzC,IAAI,GAAG,CAAC;;EAER,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;IACjB,QAAQ,KAAK;MACX,KAAK,WAAW,EAAE,OAAO,MAAM,CAAC;MAChC,KAAK,WAAW,EAAE,OAAO,MAAM,CAAC;MAChC,KAAK,WAAW,EAAE,OAAO,MAAM,CAAC;KACjC;GACF,MAAM,IAAI,MAAM,CAAC,iBAAiB,KAAK,MAAM,EAAE;IAC9C,QAAQ,KAAK;MACX,KAAK,WAAW,EAAE,OAAO,MAAM,CAAC;MAChC,KAAK,WAAW,EAAE,OAAO,MAAM,CAAC;MAChC,KAAK,WAAW,EAAE,OAAO,MAAM,CAAC;KACjC;GACF,MAAM,IAAI,MAAM,CAAC,iBAAiB,KAAK,MAAM,EAAE;IAC9C,QAAQ,KAAK;MACX,KAAK,WAAW,EAAE,OAAO,OAAO,CAAC;MACjC,KAAK,WAAW,EAAE,OAAO,OAAO,CAAC;MACjC,KAAK,WAAW,EAAE,OAAO,OAAO,CAAC;KAClC;GACF,MAAM,IAAIL,QAAM,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;IACxC,OAAO,MAAM,CAAC;GACf;;EAED,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;;;;;EAK1B,OAAO,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC;CACxE;;AAED,SAAS,OAAO,CAAC,MAAM,EAAE;EACvB,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,iBAAiB;UAC5D,MAAM,GAAG,CAAC,KAAK,CAAC,IAAIA,QAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;CAC5D;;AAED,WAAc,GAAG,IAAII,MAAI,CAAC,yBAAyB,EAAE;EACnD,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,gBAAgB;EACzB,SAAS,EAAE,kBAAkB;EAC7B,SAAS,EAAE,OAAO;EAClB,SAAS,EAAE,kBAAkB;EAC7B,YAAY,EAAE,WAAW;CAC1B,CAAC,CAAC;;AC7FH,IAAIK,QAAM,GAAGR,MAAoB,CAAC;;;AAGlC,QAAc,GAAG,IAAIQ,QAAM,CAAC;EAC1B,OAAO,EAAE;IACPJ,QAAqB;GACtB;EACD,QAAQ,EAAE;IACRC,KAAuB;IACvBI,IAAuB;IACvBC,KAAsB;IACtBC,OAAwB;GACzB;CACF,CAAC,CAAC;;ACdH,IAAIH,QAAM,GAAGR,MAAoB,CAAC;;;AAGlC,QAAc,GAAG,IAAIQ,QAAM,CAAC;EAC1B,OAAO,EAAE;IACPJ,IAAiB;GAClB;CACF,CAAC,CAAC;;ACfH,IAAID,OAAI,GAAGH,IAAkB,CAAC;;AAE9B,IAAI,gBAAgB,GAAG,IAAI,MAAM;EAC/B,yBAAyB;EACzB,eAAe;EACf,gBAAgB,CAAC,CAAC;;AAEpB,IAAI,qBAAqB,GAAG,IAAI,MAAM;EACpC,yBAAyB;EACzB,gBAAgB;EAChB,gBAAgB;EAChB,kBAAkB;EAClB,eAAe;EACf,eAAe;EACf,eAAe;EACf,kBAAkB;EAClB,kCAAkC;EAClC,wBAAwB,CAAC,CAAC;;AAE5B,SAAS,oBAAoB,CAAC,IAAI,EAAE;EAClC,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;EAChC,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;EACtD,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;EAC3D,OAAO,KAAK,CAAC;CACd;;AAED,SAAS,sBAAsB,CAAC,IAAI,EAAE;EACpC,IAAI,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,CAAC;MAC3D,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC;;EAE3C,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACpC,IAAI,KAAK,KAAK,IAAI,EAAE,EAAA,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAA;;EAE7D,IAAI,KAAK,KAAK,IAAI,EAAE,EAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC,EAAA;;;;EAI1D,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EACnB,KAAK,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACxB,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;;EAElB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACb,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;GAC7C;;;;EAID,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EACnB,MAAM,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EACrB,MAAM,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;;EAErB,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;IACZ,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChC,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;MAC1B,QAAQ,IAAI,GAAG,CAAC;KACjB;IACD,QAAQ,GAAG,CAAC,QAAQ,CAAC;GACtB;;;;EAID,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;IACZ,OAAO,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACvB,SAAS,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9B,KAAK,GAAG,CAAC,OAAO,GAAG,EAAE,GAAG,SAAS,IAAI,KAAK,CAAC;IAC3C,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,EAAA,KAAK,GAAG,CAAC,KAAK,CAAC,EAAA;GACtC;;EAED,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;;EAE5E,IAAI,KAAK,EAAE,EAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,CAAC,EAAA;;EAEhD,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,sBAAsB,CAAC,MAAM,cAAc;EAClD,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC;CAC7B;;AAED,aAAc,GAAG,IAAIG,OAAI,CAAC,6BAA6B,EAAE;EACvD,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,oBAAoB;EAC7B,SAAS,EAAE,sBAAsB;EACjC,UAAU,EAAE,IAAI;EAChB,SAAS,EAAE,sBAAsB;CAClC,CAAC,CAAC;;ACrFH,IAAIA,OAAI,GAAGH,IAAkB,CAAC;;AAE9B,SAAS,gBAAgB,CAAC,IAAI,EAAE;EAC9B,OAAO,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC;CACvC;;AAED,SAAc,GAAG,IAAIG,OAAI,CAAC,yBAAyB,EAAE;EACnD,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,gBAAgB;CAC1B,CAAC,CAAC;;;;;;;;;;;;;;;;ACPH,IAAI,UAAU,CAAC;;AAEf,IAAI;;EAEF,IAAI,QAAQ,GAAGS,eAAO,CAAC;EACvB,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;CACxC,CAAC,OAAO,EAAE,EAAE,EAAE;;AAEf,IAAIT,OAAI,SAASH,IAAkB,CAAC;;;;AAIpC,IAAI,UAAU,GAAG,uEAAuE,CAAC;;;AAGzF,SAAS,iBAAiB,CAAC,IAAI,EAAE;EAC/B,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;EAEhC,IAAI,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,UAAU,CAAC;;;EAG/D,KAAK,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE;IAC9B,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;;;IAGrC,IAAI,IAAI,GAAG,EAAE,EAAE,EAAA,SAAS,EAAA;;;IAGxB,IAAI,IAAI,GAAG,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;IAE3B,MAAM,IAAI,CAAC,CAAC;GACb;;;EAGD,OAAO,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC;CAC3B;;AAED,SAAS,mBAAmB,CAAC,IAAI,EAAE;EACjC,IAAI,GAAG,EAAE,QAAQ;MACb,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;MACpC,GAAG,GAAG,KAAK,CAAC,MAAM;MAClB,GAAG,GAAG,UAAU;MAChB,IAAI,GAAG,CAAC;MACR,MAAM,GAAG,EAAE,CAAC;;;;EAIhB,KAAK,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE;IAC9B,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE;MAC1B,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;MACjC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;MAChC,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;KAC1B;;IAED,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;GACrD;;;;EAID,QAAQ,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;;EAEzB,IAAI,QAAQ,KAAK,CAAC,EAAE;IAClB,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;IACjC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAChC,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;GAC1B,MAAM,IAAI,QAAQ,KAAK,EAAE,EAAE;IAC1B,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;IACjC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;GACjC,MAAM,IAAI,QAAQ,KAAK,EAAE,EAAE;IAC1B,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;GACjC;;;EAGD,IAAI,UAAU,EAAE,EAAA,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,EAAA;;EAE9C,OAAO,MAAM,CAAC;CACf;;AAED,SAAS,mBAAmB,CAAC,MAAM,cAAc;EAC/C,IAAI,MAAM,GAAG,EAAE,EAAE,IAAI,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI;MAChC,GAAG,GAAG,MAAM,CAAC,MAAM;MACnB,GAAG,GAAG,UAAU,CAAC;;;;EAIrB,KAAK,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE;IAC9B,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE;MAC1B,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;MACnC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;MACnC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;MAClC,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;KAC5B;;IAED,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;GAClC;;;;EAID,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;;EAEf,IAAI,IAAI,KAAK,CAAC,EAAE;IACd,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;GAC5B,MAAM,IAAI,IAAI,KAAK,CAAC,EAAE;IACrB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;GACnB,MAAM,IAAI,IAAI,KAAK,CAAC,EAAE;IACrB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;GACnB;;EAED,OAAO,MAAM,CAAC;CACf;;AAED,SAAS,QAAQ,CAAC,MAAM,EAAE;EACxB,OAAO,UAAU,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;CAClD;;AAED,UAAc,GAAG,IAAIG,OAAI,CAAC,0BAA0B,EAAE;EACpD,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,iBAAiB;EAC1B,SAAS,EAAE,mBAAmB;EAC9B,SAAS,EAAE,QAAQ;EACnB,SAAS,EAAE,mBAAmB;CAC/B,CAAC,CAAC;;ACpIH,IAAIA,OAAI,GAAGH,IAAkB,CAAC;;AAE9B,IAAIa,iBAAe,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;AACtD,IAAI,SAAS,SAAS,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;;AAEhD,SAAS,eAAe,CAAC,IAAI,EAAE;EAC7B,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;;EAE/B,IAAI,UAAU,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU;MACzD,MAAM,GAAG,IAAI,CAAC;;EAElB,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IAClE,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACrB,UAAU,GAAG,KAAK,CAAC;;IAEnB,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,iBAAiB,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;IAE7D,KAAK,OAAO,IAAI,IAAI,EAAE;MACpB,IAAIA,iBAAe,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;QACvC,IAAI,CAAC,UAAU,EAAE,EAAA,UAAU,GAAG,IAAI,CAAC,EAAA;aAC9B,EAAA,OAAO,KAAK,CAAC,EAAA;OACnB;KACF;;IAED,IAAI,CAAC,UAAU,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;IAE9B,IAAI,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAA,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAA;SAC5D,EAAA,OAAO,KAAK,CAAC,EAAA;GACnB;;EAED,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,iBAAiB,CAAC,IAAI,EAAE;EAC/B,OAAO,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;CAClC;;AAED,QAAc,GAAG,IAAIV,OAAI,CAAC,wBAAwB,EAAE;EAClD,IAAI,EAAE,UAAU;EAChB,OAAO,EAAE,eAAe;EACxB,SAAS,EAAE,iBAAiB;CAC7B,CAAC,CAAC;;ACzCH,IAAIA,OAAI,GAAGH,IAAkB,CAAC;;AAE9B,IAAIc,WAAS,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;;AAE1C,SAAS,gBAAgB,CAAC,IAAI,EAAE;EAC9B,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;;EAE/B,IAAI,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM;MACjC,MAAM,GAAG,IAAI,CAAC;;EAElB,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;;EAElC,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IAClE,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;;IAErB,IAAIA,WAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,iBAAiB,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;IAE7D,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;IAEzB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;IAEpC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;GAC5C;;EAED,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,kBAAkB,CAAC,IAAI,EAAE;EAChC,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,EAAE,CAAC,EAAA;;EAE7B,IAAI,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM;MACjC,MAAM,GAAG,IAAI,CAAC;;EAElB,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;;EAElC,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IAClE,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;;IAErB,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;IAEzB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;GAC5C;;EAED,OAAO,MAAM,CAAC;CACf;;AAED,SAAc,GAAG,IAAIX,OAAI,CAAC,yBAAyB,EAAE;EACnD,IAAI,EAAE,UAAU;EAChB,OAAO,EAAE,gBAAgB;EACzB,SAAS,EAAE,kBAAkB;CAC9B,CAAC,CAAC;;AClDH,IAAIA,OAAI,GAAGH,IAAkB,CAAC;;AAE9B,IAAIa,iBAAe,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;;AAEtD,SAAS,cAAc,CAAC,IAAI,EAAE;EAC5B,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;;EAE/B,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;;EAEvB,KAAK,GAAG,IAAI,MAAM,EAAE;IAClB,IAAIA,iBAAe,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;MACrC,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;KACxC;GACF;;EAED,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,gBAAgB,CAAC,IAAI,EAAE;EAC9B,OAAO,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;CAClC;;AAED,OAAc,GAAG,IAAIV,OAAI,CAAC,uBAAuB,EAAE;EACjD,IAAI,EAAE,SAAS;EACf,OAAO,EAAE,cAAc;EACvB,SAAS,EAAE,gBAAgB;CAC5B,CAAC,CAAC;;AClBH,IAAIK,QAAM,GAAGR,MAAoB,CAAC;;;AAGlC,gBAAc,GAAG,IAAIQ,QAAM,CAAC;EAC1B,OAAO,EAAE;IACPJ,IAAiB;GAClB;EACD,QAAQ,EAAE;IACRC,SAA4B;IAC5BI,KAAwB;GACzB;EACD,QAAQ,EAAE;IACRC,MAAyB;IACzBC,IAAuB;IACvBI,KAAwB;IACxBC,GAAsB;GACvB;CACF,CAAC,CAAC;;ACzBH,IAAIb,OAAI,GAAGH,IAAqB,CAAC;;AAEjC,SAAS,0BAA0B,GAAG;EACpC,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,4BAA4B,GAAG;;EAEtC,OAAO,SAAS,CAAC;CAClB;;AAED,SAAS,4BAA4B,GAAG;EACtC,OAAO,EAAE,CAAC;CACX;;AAED,SAAS,WAAW,CAAC,MAAM,EAAE;EAC3B,OAAO,OAAO,MAAM,KAAK,WAAW,CAAC;CACtC;;AAED,cAAc,GAAG,IAAIG,OAAI,CAAC,gCAAgC,EAAE;EAC1D,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,0BAA0B;EACnC,SAAS,EAAE,4BAA4B;EACvC,SAAS,EAAE,WAAW;EACtB,SAAS,EAAE,4BAA4B;CACxC,CAAC,CAAC;;ACzBH,IAAIA,OAAI,GAAGH,IAAqB,CAAC;;AAEjC,SAAS,uBAAuB,CAAC,IAAI,EAAE;EACrC,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;EAChC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;EAEpC,IAAI,MAAM,GAAG,IAAI;MACb,IAAI,KAAK,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;MACjC,SAAS,GAAG,EAAE,CAAC;;;;EAInB,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;IACrB,IAAI,IAAI,EAAE,EAAA,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,EAAA;;IAE9B,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;IAEvC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;GACxE;;EAED,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,yBAAyB,CAAC,IAAI,EAAE;EACvC,IAAI,MAAM,GAAG,IAAI;MACb,IAAI,KAAK,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;MACjC,SAAS,GAAG,EAAE,CAAC;;;EAGnB,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;IACrB,IAAI,IAAI,EAAE,EAAA,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,EAAA;IAC9B,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;GAChE;;EAED,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CACtC;;AAED,SAAS,yBAAyB,CAAC,MAAM,cAAc;EACrD,IAAI,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;;EAEvC,IAAI,MAAM,CAAC,MAAM,EAAE,EAAA,MAAM,IAAI,GAAG,CAAC,EAAA;EACjC,IAAI,MAAM,CAAC,SAAS,EAAE,EAAA,MAAM,IAAI,GAAG,CAAC,EAAA;EACpC,IAAI,MAAM,CAAC,UAAU,EAAE,EAAA,MAAM,IAAI,GAAG,CAAC,EAAA;;EAErC,OAAO,MAAM,CAAC;CACf;;AAED,SAAS,QAAQ,CAAC,MAAM,EAAE;EACxB,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,iBAAiB,CAAC;CACrE;;AAED,UAAc,GAAG,IAAIG,OAAI,CAAC,6BAA6B,EAAE;EACvD,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,uBAAuB;EAChC,SAAS,EAAE,yBAAyB;EACpC,SAAS,EAAE,QAAQ;EACnB,SAAS,EAAE,yBAAyB;CACrC,CAAC,CAAC;;ACzDH,IAAI,OAAO,CAAC;;;;;;;;;AASZ,IAAI;;EAEF,IAAIc,UAAQ,GAAGL,eAAO,CAAC;EACvB,OAAO,GAAGK,UAAQ,CAAC,SAAS,CAAC,CAAC;CAC/B,CAAC,OAAO,CAAC,EAAE;;EAEV,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,EAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,EAAA;CAC7D;;AAED,IAAId,OAAI,GAAGH,IAAqB,CAAC;;AAEjC,SAAS,yBAAyB,CAAC,IAAI,EAAE;EACvC,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;EAEhC,IAAI;IACF,IAAI,MAAM,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG;QACzB,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;;IAEpD,IAAI,GAAG,CAAC,IAAI,wBAAwB,SAAS;QACzC,GAAG,CAAC,IAAI,CAAC,MAAM,iBAAiB,CAAC;QACjC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,gBAAgB,qBAAqB;QACrD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,oBAAoB,EAAE;MACxD,OAAO,KAAK,CAAC;KACd;;IAED,OAAO,IAAI,CAAC;GACb,CAAC,OAAO,GAAG,EAAE;IACZ,OAAO,KAAK,CAAC;GACd;CACF;;AAED,SAAS,2BAA2B,CAAC,IAAI,EAAE;;;EAGzC,IAAI,MAAM,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG;MACzB,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;MAC/C,MAAM,GAAG,EAAE;MACX,IAAI,CAAC;;EAET,IAAI,GAAG,CAAC,IAAI,wBAAwB,SAAS;MACzC,GAAG,CAAC,IAAI,CAAC,MAAM,iBAAiB,CAAC;MACjC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,gBAAgB,qBAAqB;MACrD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,oBAAoB,EAAE;IACxD,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;GAC/C;;EAED,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,KAAK,EAAE;IACrD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;GACzB,CAAC,CAAC;;EAEH,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;;;;;EAKzC,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACrE;;AAED,SAAS,2BAA2B,CAAC,MAAM,cAAc;EACvD,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;CAC1B;;AAED,SAAS,UAAU,CAAC,MAAM,EAAE;EAC1B,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,mBAAmB,CAAC;CACvE;;AAED,aAAc,GAAG,IAAIG,OAAI,CAAC,+BAA+B,EAAE;EACzD,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,yBAAyB;EAClC,SAAS,EAAE,2BAA2B;EACtC,SAAS,EAAE,UAAU;EACrB,SAAS,EAAE,2BAA2B;CACvC,CAAC,CAAC;;ACvEH,IAAIK,QAAM,GAAGR,MAAoB,CAAC;;;AAGlC,gBAAc,GAAGQ,QAAM,CAAC,OAAO,GAAG,IAAIA,QAAM,CAAC;EAC3C,OAAO,EAAE;IACPJ,YAAyB;GAC1B;EACD,QAAQ,EAAE;IACRC,UAA+B;IAC/BI,MAA4B;IAC5BC,SAA8B;GAC/B;CACF,CAAC,CAAC;;;;ACpBH,IAAI,MAAM,gBAAgBV,QAAmB,CAAC;AAC9C,IAAIF,eAAa,SAASM,SAAsB,CAAC;AACjD,IAAI,IAAI,kBAAkBC,IAAiB,CAAC;AAC5C,IAAIa,qBAAmB,GAAGT,YAAgC,CAAC;AAC3D,IAAIU,qBAAmB,GAAGT,YAAgC,CAAC;;;AAG3D,IAAI,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;;;AAGtD,IAAI,eAAe,KAAK,CAAC,CAAC;AAC1B,IAAI,gBAAgB,IAAI,CAAC,CAAC;AAC1B,IAAI,gBAAgB,IAAI,CAAC,CAAC;AAC1B,IAAI,iBAAiB,GAAG,CAAC,CAAC;;;AAG1B,IAAI,aAAa,IAAI,CAAC,CAAC;AACvB,IAAI,cAAc,GAAG,CAAC,CAAC;AACvB,IAAI,aAAa,IAAI,CAAC,CAAC;;;AAGvB,IAAI,qBAAqB,WAAW,qIAAqI,CAAC;AAC1K,IAAI,6BAA6B,GAAG,oBAAoB,CAAC;AACzD,IAAI,uBAAuB,SAAS,aAAa,CAAC;AAClD,IAAI,kBAAkB,cAAc,wBAAwB,CAAC;AAC7D,IAAI,eAAe,iBAAiB,kFAAkF,CAAC;;;AAGvH,SAAS,MAAM,CAAC,CAAC,EAAE;EACjB,OAAO,CAAC,CAAC,KAAK,IAAI,cAAc,CAAC,KAAK,IAAI,SAAS,CAAC;CACrD;;AAED,SAAS,cAAc,CAAC,CAAC,EAAE;EACzB,OAAO,CAAC,CAAC,KAAK,IAAI,eAAe,CAAC,KAAK,IAAI,YAAY,CAAC;CACzD;;AAED,SAAS,YAAY,CAAC,CAAC,EAAE;EACvB,OAAO,CAAC,CAAC,KAAK,IAAI;UACV,CAAC,KAAK,IAAI,YAAY;UACtB,CAAC,KAAK,IAAI,SAAS;UACnB,CAAC,KAAK,IAAI,SAAS,CAAC;CAC7B;;AAED,SAAS,iBAAiB,CAAC,CAAC,EAAE;EAC5B,OAAO,CAAC,KAAK,IAAI;SACV,CAAC,KAAK,IAAI;SACV,CAAC,KAAK,IAAI;SACV,CAAC,KAAK,IAAI;SACV,CAAC,KAAK,IAAI,QAAQ;CAC1B;;AAED,SAAS,WAAW,CAAC,CAAC,EAAE;EACtB,IAAI,EAAE,CAAC;;EAEP,IAAI,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAE;IAC5C,OAAO,CAAC,GAAG,IAAI,CAAC;GACjB;;;EAGD,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;;EAEd,IAAI,CAAC,IAAI,WAAW,EAAE,MAAM,EAAE,IAAI,IAAI,QAAQ,EAAE;IAC9C,OAAO,EAAE,GAAG,IAAI,GAAG,EAAE,CAAC;GACvB;;EAED,OAAO,CAAC,CAAC,CAAC;CACX;;AAED,SAAS,aAAa,CAAC,CAAC,EAAE;EACxB,IAAI,CAAC,KAAK,IAAI,SAAS,EAAE,OAAO,CAAC,CAAC,EAAE;EACpC,IAAI,CAAC,KAAK,IAAI,SAAS,EAAE,OAAO,CAAC,CAAC,EAAE;EACpC,IAAI,CAAC,KAAK,IAAI,SAAS,EAAE,OAAO,CAAC,CAAC,EAAE;EACpC,OAAO,CAAC,CAAC;CACV;;AAED,SAAS,eAAe,CAAC,CAAC,EAAE;EAC1B,IAAI,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAE;IAC5C,OAAO,CAAC,GAAG,IAAI,CAAC;GACjB;;EAED,OAAO,CAAC,CAAC,CAAC;CACX;;AAED,SAAS,oBAAoB,CAAC,CAAC,EAAE;EAC/B,OAAO,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC7B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,aAAa,MAAM;QAC9B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,eAAe,GAAG;QAC7B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,WAAW,GAAG;QACzB,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,WAAW,QAAQ;QAC9B,CAAC,CAAC,KAAK,IAAI,WAAW,QAAQ,GAAG,EAAE,CAAC;CAC3C;;AAED,SAAS,iBAAiB,CAAC,CAAC,EAAE;EAC5B,IAAI,CAAC,IAAI,MAAM,EAAE;IACf,OAAO,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;GAC/B;;;EAGD,OAAO,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,KAAK,EAAE,IAAI,MAAM;6BAC/B,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,MAAM,IAAI,MAAM,CAAC,CAAC;CAChE;;AAED,IAAI,iBAAiB,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;AACvC,IAAI,eAAe,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;AACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;EAC5B,iBAAiB,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EACvD,eAAe,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;CAC9C;;;AAGD,SAAS,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE;EAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;;EAEnB,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;EAC9C,IAAI,CAAC,MAAM,MAAM,OAAO,CAAC,QAAQ,CAAC,OAAOS,qBAAmB,CAAC;EAC7D,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC;EAC9C,IAAI,CAAC,MAAM,MAAM,OAAO,CAAC,QAAQ,CAAC,OAAO,KAAK,CAAC;EAC/C,IAAI,CAAC,IAAI,QAAQ,OAAO,CAAC,MAAM,CAAC,SAAS,KAAK,CAAC;EAC/C,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;;EAE9C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;EAClD,IAAI,CAAC,OAAO,SAAS,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;;EAEjD,IAAI,CAAC,MAAM,OAAO,KAAK,CAAC,MAAM,CAAC;EAC/B,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC;EACpB,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC;EACpB,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;EACpB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;;EAEpB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;;;;;;;;;;;;CAYrB;;;AAGD,SAAS,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE;EACrC,OAAO,IAAIrB,eAAa;IACtB,OAAO;IACP,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;CAC1G;;AAED,SAAS,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE;EAClC,MAAM,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;CACrC;;AAED,SAAS,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE;EACpC,IAAI,KAAK,CAAC,SAAS,EAAE;IACnB,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;GAC3D;CACF;;;AAGD,IAAI,iBAAiB,GAAG;;EAEtB,IAAI,EAAE,SAAS,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE;;IAEpD,IAAI,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;;IAExB,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,EAAE;MAC1B,UAAU,CAAC,KAAK,EAAE,gCAAgC,CAAC,CAAC;KACrD;;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;MACrB,UAAU,CAAC,KAAK,EAAE,6CAA6C,CAAC,CAAC;KAClE;;IAED,KAAK,GAAG,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;;IAE7C,IAAI,KAAK,KAAK,IAAI,EAAE;MAClB,UAAU,CAAC,KAAK,EAAE,2CAA2C,CAAC,CAAC;KAChE;;IAED,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/B,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;;IAE/B,IAAI,KAAK,KAAK,CAAC,EAAE;MACf,UAAU,CAAC,KAAK,EAAE,2CAA2C,CAAC,CAAC;KAChE;;IAED,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,KAAK,CAAC,eAAe,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;;IAEpC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE;MAC9B,YAAY,CAAC,KAAK,EAAE,0CAA0C,CAAC,CAAC;KACjE;GACF;;EAED,GAAG,EAAE,SAAS,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE;;IAElD,IAAI,MAAM,EAAE,MAAM,CAAC;;IAEnB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;MACrB,UAAU,CAAC,KAAK,EAAE,6CAA6C,CAAC,CAAC;KAClE;;IAED,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;;IAEjB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;MACpC,UAAU,CAAC,KAAK,EAAE,6DAA6D,CAAC,CAAC;KAClF;;IAED,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;MAC9C,UAAU,CAAC,KAAK,EAAE,6CAA6C,GAAG,MAAM,GAAG,cAAc,CAAC,CAAC;KAC5F;;IAED,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;MACjC,UAAU,CAAC,KAAK,EAAE,8DAA8D,CAAC,CAAC;KACnF;;IAED,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;GAC/B;CACF,CAAC;;;AAGF,SAAS,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE;EACpD,IAAI,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC;;EAE5C,IAAI,KAAK,GAAG,GAAG,EAAE;IACf,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;;IAExC,IAAI,SAAS,EAAE;MACb,KAAK,SAAS,GAAG,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM;WACvC,SAAS,GAAG,OAAO;WACnB,SAAS,IAAI,CAAC,EAAE;QACnB,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,EAAE,UAAU,KAAK,IAAI;eAClB,IAAI,IAAI,UAAU,IAAI,UAAU,IAAI,QAAQ,CAAC,CAAC,EAAE;UACrD,UAAU,CAAC,KAAK,EAAE,+BAA+B,CAAC,CAAC;SACpD;OACF;KACF,MAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;MAC9C,UAAU,CAAC,KAAK,EAAE,8CAA8C,CAAC,CAAC;KACnE;;IAED,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC;GACzB;CACF;;AAED,SAAS,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE;EAClE,IAAI,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC;;EAErC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;IAC5B,UAAU,CAAC,KAAK,EAAE,mEAAmE,CAAC,CAAC;GACxF;;EAED,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;EAEjC,KAAK,KAAK,GAAG,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,GAAG,QAAQ,EAAE,KAAK,IAAI,CAAC,EAAE;IAC1E,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;;IAExB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE;MAC3C,WAAW,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;MAC/B,eAAe,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;KAC7B;GACF;CACF;;AAED,SAAS,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;EACrF,IAAI,KAAK,EAAE,QAAQ,CAAC;;EAEpB,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;;EAE1B,IAAI,OAAO,KAAK,IAAI,EAAE;IACpB,OAAO,GAAG,EAAE,CAAC;GACd;;EAED,IAAI,MAAM,KAAK,yBAAyB,EAAE;IACxC,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;MAC5B,KAAK,KAAK,GAAG,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,QAAQ,EAAE,KAAK,IAAI,CAAC,EAAE;QACzE,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC,CAAC;OAClE;KACF,MAAM;MACL,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;KAC3D;GACF,MAAM;IACL,IAAI,CAAC,KAAK,CAAC,IAAI;QACX,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC;QAC/C,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE;MAC1C,UAAU,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC;KAC7C;IACD,OAAO,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IAC7B,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC;GACjC;;EAED,OAAO,OAAO,CAAC;CAChB;;AAED,SAAS,aAAa,CAAC,KAAK,EAAE;EAC5B,IAAI,EAAE,CAAC;;EAEP,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,IAAI,EAAE,KAAK,IAAI,UAAU;IACvB,KAAK,CAAC,QAAQ,EAAE,CAAC;GAClB,MAAM,IAAI,EAAE,KAAK,IAAI,UAAU;IAC9B,KAAK,CAAC,QAAQ,EAAE,CAAC;IACjB,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,UAAU;MAC3D,KAAK,CAAC,QAAQ,EAAE,CAAC;KAClB;GACF,MAAM;IACL,UAAU,CAAC,KAAK,EAAE,0BAA0B,CAAC,CAAC;GAC/C;;EAED,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;EAChB,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;CAClC;;AAED,SAAS,mBAAmB,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE;EAC9D,IAAI,UAAU,GAAG,CAAC;MACd,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAEhD,OAAO,EAAE,KAAK,CAAC,EAAE;IACf,OAAO,cAAc,CAAC,EAAE,CAAC,EAAE;MACzB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;KAC/C;;IAED,IAAI,aAAa,IAAI,EAAE,KAAK,IAAI,SAAS;MACvC,GAAG;QACD,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;OAC/C,QAAQ,EAAE,KAAK,IAAI,YAAY,EAAE,KAAK,IAAI,YAAY,EAAE,KAAK,CAAC,EAAE;KAClE;;IAED,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE;MACd,aAAa,CAAC,KAAK,CAAC,CAAC;;MAErB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;MAC5C,UAAU,EAAE,CAAC;MACb,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC;;MAErB,OAAO,EAAE,KAAK,IAAI,aAAa;QAC7B,KAAK,CAAC,UAAU,EAAE,CAAC;QACnB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;OAC/C;KACF,MAAM;MACL,MAAM;KACP;GACF;;EAED,IAAI,WAAW,KAAK,CAAC,CAAC,IAAI,UAAU,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,GAAG,WAAW,EAAE;IAC5E,YAAY,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;GAC9C;;EAED,OAAO,UAAU,CAAC;CACnB;;AAED,SAAS,qBAAqB,CAAC,KAAK,EAAE;EACpC,IAAI,SAAS,GAAG,KAAK,CAAC,QAAQ;MAC1B,EAAE,CAAC;;EAEP,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;;;;EAIvC,IAAI,CAAC,EAAE,KAAK,IAAI,WAAW,EAAE,KAAK,IAAI;MAClC,EAAE,KAAK,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,GAAG,CAAC,CAAC;MAC5C,EAAE,KAAK,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE;;IAEhD,SAAS,IAAI,CAAC,CAAC;;IAEf,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;;IAEvC,IAAI,EAAE,KAAK,CAAC,IAAI,YAAY,CAAC,EAAE,CAAC,EAAE;MAChC,OAAO,IAAI,CAAC;KACb;GACF;;EAED,OAAO,KAAK,CAAC;CACd;;AAED,SAAS,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE;EACtC,IAAI,KAAK,KAAK,CAAC,EAAE;IACf,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC;GACrB,MAAM,IAAI,KAAK,GAAG,CAAC,EAAE;IACpB,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;GAChD;CACF;;;AAGD,SAAS,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE;EAChE,IAAI,SAAS;MACT,SAAS;MACT,YAAY;MACZ,UAAU;MACV,iBAAiB;MACjB,KAAK;MACL,UAAU;MACV,WAAW;MACX,KAAK,GAAG,KAAK,CAAC,IAAI;MAClB,OAAO,GAAG,KAAK,CAAC,MAAM;MACtB,EAAE,CAAC;;EAEP,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,IAAI,YAAY,CAAC,EAAE,CAAC;MAChB,iBAAiB,CAAC,EAAE,CAAC;MACrB,EAAE,KAAK,IAAI;MACX,EAAE,KAAK,IAAI;MACX,EAAE,KAAK,IAAI;MACX,EAAE,KAAK,IAAI;MACX,EAAE,KAAK,IAAI;MACX,EAAE,KAAK,IAAI;MACX,EAAE,KAAK,IAAI;MACX,EAAE,KAAK,IAAI;MACX,EAAE,KAAK,IAAI;MACX,EAAE,KAAK,IAAI;MACX,EAAE,KAAK,IAAI,SAAS;IACtB,OAAO,KAAK,CAAC;GACd;;EAED,IAAI,EAAE,KAAK,IAAI,WAAW,EAAE,KAAK,IAAI,SAAS;IAC5C,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;;IAEvD,IAAI,YAAY,CAAC,SAAS,CAAC;QACvB,oBAAoB,IAAI,iBAAiB,CAAC,SAAS,CAAC,EAAE;MACxD,OAAO,KAAK,CAAC;KACd;GACF;;EAED,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;EACtB,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;EAClB,YAAY,GAAG,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;EAC3C,iBAAiB,GAAG,KAAK,CAAC;;EAE1B,OAAO,EAAE,KAAK,CAAC,EAAE;IACf,IAAI,EAAE,KAAK,IAAI,SAAS;MACtB,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;;MAEvD,IAAI,YAAY,CAAC,SAAS,CAAC;UACvB,oBAAoB,IAAI,iBAAiB,CAAC,SAAS,CAAC,EAAE;QACxD,MAAM;OACP;;KAEF,MAAM,IAAI,EAAE,KAAK,IAAI,SAAS;MAC7B,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;;MAEvD,IAAI,YAAY,CAAC,SAAS,CAAC,EAAE;QAC3B,MAAM;OACP;;KAEF,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,SAAS,IAAI,qBAAqB,CAAC,KAAK,CAAC;eACnE,oBAAoB,IAAI,iBAAiB,CAAC,EAAE,CAAC,EAAE;MACxD,MAAM;;KAEP,MAAM,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE;MACrB,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;MACnB,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC;MAC7B,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC;MAC/B,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;;MAEtC,IAAI,KAAK,CAAC,UAAU,IAAI,UAAU,EAAE;QAClC,iBAAiB,GAAG,IAAI,CAAC;QACzB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC5C,SAAS;OACV,MAAM;QACL,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QAC5B,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;QACnB,KAAK,CAAC,SAAS,GAAG,UAAU,CAAC;QAC7B,KAAK,CAAC,UAAU,GAAG,WAAW,CAAC;QAC/B,MAAM;OACP;KACF;;IAED,IAAI,iBAAiB,EAAE;MACrB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;MACvD,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;MAC5C,YAAY,GAAG,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;MAC3C,iBAAiB,GAAG,KAAK,CAAC;KAC3B;;IAED,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE;MACvB,UAAU,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;KACjC;;IAED,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;GAC/C;;EAED,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;;EAEvD,IAAI,KAAK,CAAC,MAAM,EAAE;IAChB,OAAO,IAAI,CAAC;GACb;;EAED,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;EACnB,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;EACvB,OAAO,KAAK,CAAC;CACd;;AAED,SAAS,sBAAsB,CAAC,KAAK,EAAE,UAAU,EAAE;EACjD,IAAI,EAAE;MACF,YAAY,EAAE,UAAU,CAAC;;EAE7B,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,IAAI,EAAE,KAAK,IAAI,SAAS;IACtB,OAAO,KAAK,CAAC;GACd;;EAED,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;EACtB,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;EAClB,KAAK,CAAC,QAAQ,EAAE,CAAC;EACjB,YAAY,GAAG,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;;EAE3C,OAAO,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;IAC1D,IAAI,EAAE,KAAK,IAAI,SAAS;MACtB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;MAC1D,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;MAE9C,IAAI,EAAE,KAAK,IAAI,SAAS;QACtB,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC9B,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;OAC7B,MAAM;QACL,OAAO,IAAI,CAAC;OACb;;KAEF,MAAM,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE;MACrB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;MACtD,gBAAgB,CAAC,KAAK,EAAE,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;MACvE,YAAY,GAAG,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;;KAE5C,MAAM,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,SAAS,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE;MAC7E,UAAU,CAAC,KAAK,EAAE,8DAA8D,CAAC,CAAC;;KAEnF,MAAM;MACL,KAAK,CAAC,QAAQ,EAAE,CAAC;MACjB,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;KAC7B;GACF;;EAED,UAAU,CAAC,KAAK,EAAE,4DAA4D,CAAC,CAAC;CACjF;;AAED,SAAS,sBAAsB,CAAC,KAAK,EAAE,UAAU,EAAE;EACjD,IAAI,YAAY;MACZ,UAAU;MACV,SAAS;MACT,SAAS;MACT,GAAG;MACH,EAAE,CAAC;;EAEP,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,IAAI,EAAE,KAAK,IAAI,SAAS;IACtB,OAAO,KAAK,CAAC;GACd;;EAED,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;EACtB,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;EAClB,KAAK,CAAC,QAAQ,EAAE,CAAC;EACjB,YAAY,GAAG,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;;EAE3C,OAAO,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;IAC1D,IAAI,EAAE,KAAK,IAAI,SAAS;MACtB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;MAC1D,KAAK,CAAC,QAAQ,EAAE,CAAC;MACjB,OAAO,IAAI,CAAC;;KAEb,MAAM,IAAI,EAAE,KAAK,IAAI,SAAS;MAC7B,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;MAC1D,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;MAE9C,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE;QACd,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;;;OAG/C,MAAM,IAAI,EAAE,GAAG,GAAG,IAAI,iBAAiB,CAAC,EAAE,CAAC,EAAE;QAC5C,KAAK,CAAC,MAAM,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;QACpC,KAAK,CAAC,QAAQ,EAAE,CAAC;;OAElB,MAAM,IAAI,CAAC,GAAG,GAAG,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;QACxC,SAAS,GAAG,GAAG,CAAC;QAChB,SAAS,GAAG,CAAC,CAAC;;QAEd,OAAO,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE;UACjC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;UAE9C,IAAI,CAAC,GAAG,GAAG,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;YAChC,SAAS,GAAG,CAAC,SAAS,IAAI,CAAC,IAAI,GAAG,CAAC;;WAEpC,MAAM;YACL,UAAU,CAAC,KAAK,EAAE,gCAAgC,CAAC,CAAC;WACrD;SACF;;QAED,KAAK,CAAC,MAAM,IAAI,iBAAiB,CAAC,SAAS,CAAC,CAAC;;QAE7C,KAAK,CAAC,QAAQ,EAAE,CAAC;;OAElB,MAAM;QACL,UAAU,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;OAC9C;;MAED,YAAY,GAAG,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;;KAE5C,MAAM,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE;MACrB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;MACtD,gBAAgB,CAAC,KAAK,EAAE,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;MACvE,YAAY,GAAG,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;;KAE5C,MAAM,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,SAAS,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE;MAC7E,UAAU,CAAC,KAAK,EAAE,8DAA8D,CAAC,CAAC;;KAEnF,MAAM;MACL,KAAK,CAAC,QAAQ,EAAE,CAAC;MACjB,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;KAC7B;GACF;;EAED,UAAU,CAAC,KAAK,EAAE,4DAA4D,CAAC,CAAC;CACjF;;AAED,SAAS,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE;EAC7C,IAAI,QAAQ,GAAG,IAAI;MACf,KAAK;MACL,IAAI,OAAO,KAAK,CAAC,GAAG;MACpB,OAAO;MACP,OAAO,IAAI,KAAK,CAAC,MAAM;MACvB,SAAS;MACT,UAAU;MACV,MAAM;MACN,cAAc;MACd,SAAS;MACT,eAAe,GAAG,EAAE;MACpB,OAAO;MACP,MAAM;MACN,SAAS;MACT,EAAE,CAAC;;EAEP,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,IAAI,EAAE,KAAK,IAAI,SAAS;IACtB,UAAU,GAAG,IAAI,CAAC;IAClB,SAAS,GAAG,KAAK,CAAC;IAClB,OAAO,GAAG,EAAE,CAAC;GACd,MAAM,IAAI,EAAE,KAAK,IAAI,SAAS;IAC7B,UAAU,GAAG,IAAI,CAAC;IAClB,SAAS,GAAG,IAAI,CAAC;IACjB,OAAO,GAAG,EAAE,CAAC;GACd,MAAM;IACL,OAAO,KAAK,CAAC;GACd;;EAED,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE;IACzB,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC;GACzC;;EAED,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE9C,OAAO,EAAE,KAAK,CAAC,EAAE;IACf,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;;IAE7C,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;IAE5C,IAAI,EAAE,KAAK,UAAU,EAAE;MACrB,KAAK,CAAC,QAAQ,EAAE,CAAC;MACjB,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;MACjB,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;MACvB,KAAK,CAAC,IAAI,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;MAChD,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;MACvB,OAAO,IAAI,CAAC;KACb,MAAM,IAAI,CAAC,QAAQ,EAAE;MACpB,UAAU,CAAC,KAAK,EAAE,8CAA8C,CAAC,CAAC;KACnE;;IAED,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;IACpC,MAAM,GAAG,cAAc,GAAG,KAAK,CAAC;;IAEhC,IAAI,EAAE,KAAK,IAAI,SAAS;MACtB,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;;MAEvD,IAAI,YAAY,CAAC,SAAS,CAAC,EAAE;QAC3B,MAAM,GAAG,cAAc,GAAG,IAAI,CAAC;QAC/B,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;OAC9C;KACF;;IAED,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;IACnB,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC7D,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC;IACnB,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC;IACvB,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;;IAE7C,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;IAE5C,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,SAAS;MAClE,MAAM,GAAG,IAAI,CAAC;MACd,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;MAC9C,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;MAC7C,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;MAC7D,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;KAC1B;;IAED,IAAI,SAAS,EAAE;MACb,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;KAC/E,MAAM,IAAI,MAAM,EAAE;MACjB,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;KAC1F,MAAM;MACL,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACvB;;IAED,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;;IAE7C,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;IAE5C,IAAI,EAAE,KAAK,IAAI,SAAS;MACtB,QAAQ,GAAG,IAAI,CAAC;MAChB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;KAC/C,MAAM;MACL,QAAQ,GAAG,KAAK,CAAC;KAClB;GACF;;EAED,UAAU,CAAC,KAAK,EAAE,uDAAuD,CAAC,CAAC;CAC5E;;AAED,SAAS,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE;EAC1C,IAAI,YAAY;MACZ,OAAO;MACP,QAAQ,SAAS,aAAa;MAC9B,cAAc,GAAG,KAAK;MACtB,cAAc,GAAG,KAAK;MACtB,UAAU,OAAO,UAAU;MAC3B,UAAU,OAAO,CAAC;MAClB,cAAc,GAAG,KAAK;MACtB,GAAG;MACH,EAAE,CAAC;;EAEP,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,IAAI,EAAE,KAAK,IAAI,SAAS;IACtB,OAAO,GAAG,KAAK,CAAC;GACjB,MAAM,IAAI,EAAE,KAAK,IAAI,SAAS;IAC7B,OAAO,GAAG,IAAI,CAAC;GAChB,MAAM;IACL,OAAO,KAAK,CAAC;GACd;;EAED,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;EACtB,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;;EAElB,OAAO,EAAE,KAAK,CAAC,EAAE;IACf,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;IAE9C,IAAI,EAAE,KAAK,IAAI,WAAW,EAAE,KAAK,IAAI,SAAS;MAC5C,IAAI,aAAa,KAAK,QAAQ,EAAE;QAC9B,QAAQ,GAAG,CAAC,EAAE,KAAK,IAAI,WAAW,aAAa,GAAG,cAAc,CAAC;OAClE,MAAM;QACL,UAAU,CAAC,KAAK,EAAE,sCAAsC,CAAC,CAAC;OAC3D;;KAEF,MAAM,IAAI,CAAC,GAAG,GAAG,eAAe,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;MAC3C,IAAI,GAAG,KAAK,CAAC,EAAE;QACb,UAAU,CAAC,KAAK,EAAE,8EAA8E,CAAC,CAAC;OACnG,MAAM,IAAI,CAAC,cAAc,EAAE;QAC1B,UAAU,GAAG,UAAU,GAAG,GAAG,GAAG,CAAC,CAAC;QAClC,cAAc,GAAG,IAAI,CAAC;OACvB,MAAM;QACL,UAAU,CAAC,KAAK,EAAE,2CAA2C,CAAC,CAAC;OAChE;;KAEF,MAAM;MACL,MAAM;KACP;GACF;;EAED,IAAI,cAAc,CAAC,EAAE,CAAC,EAAE;IACtB,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE;WAC9C,cAAc,CAAC,EAAE,CAAC,EAAE;;IAE3B,IAAI,EAAE,KAAK,IAAI,SAAS;MACtB,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE;aAC9C,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE;KACnC;GACF;;EAED,OAAO,EAAE,KAAK,CAAC,EAAE;IACf,aAAa,CAAC,KAAK,CAAC,CAAC;IACrB,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC;;IAErB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;IAE5C,OAAO,CAAC,CAAC,cAAc,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU;YAChD,EAAE,KAAK,IAAI,YAAY,EAAE;MAC/B,KAAK,CAAC,UAAU,EAAE,CAAC;MACnB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;KAC/C;;IAED,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU,EAAE;MACpD,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;KAC/B;;IAED,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE;MACd,UAAU,EAAE,CAAC;MACb,SAAS;KACV;;;IAGD,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU,EAAE;;;MAGjC,IAAI,QAAQ,KAAK,aAAa,EAAE;QAC9B,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,GAAG,CAAC,GAAG,UAAU,GAAG,UAAU,CAAC,CAAC;OACnF,MAAM,IAAI,QAAQ,KAAK,aAAa,EAAE;QACrC,IAAI,cAAc,EAAE;UAClB,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC;SACtB;OACF;;;MAGD,MAAM;KACP;;;IAGD,IAAI,OAAO,EAAE;;;MAGX,IAAI,cAAc,CAAC,EAAE,CAAC,EAAE;QACtB,cAAc,GAAG,IAAI,CAAC;;QAEtB,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,GAAG,CAAC,GAAG,UAAU,GAAG,UAAU,CAAC,CAAC;;;OAGnF,MAAM,IAAI,cAAc,EAAE;QACzB,cAAc,GAAG,KAAK,CAAC;QACvB,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;;;OAGrD,MAAM,IAAI,UAAU,KAAK,CAAC,EAAE;QAC3B,IAAI,cAAc,EAAE;UAClB,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC;SACrB;;;OAGF,MAAM;QACL,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;OACjD;;;KAGF,MAAM;;MAEL,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,GAAG,CAAC,GAAG,UAAU,GAAG,UAAU,CAAC,CAAC;KACnF;;IAED,cAAc,GAAG,IAAI,CAAC;IACtB,cAAc,GAAG,IAAI,CAAC;IACtB,UAAU,GAAG,CAAC,CAAC;IACf,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC;;IAE9B,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE;MAChC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;KAC/C;;IAED,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;GAC5D;;EAED,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE;EAC5C,IAAI,KAAK;MACL,IAAI,QAAQ,KAAK,CAAC,GAAG;MACrB,OAAO,KAAK,KAAK,CAAC,MAAM;MACxB,OAAO,KAAK,EAAE;MACd,SAAS;MACT,QAAQ,IAAI,KAAK;MACjB,EAAE,CAAC;;EAEP,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE;IACzB,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC;GACzC;;EAED,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,OAAO,EAAE,KAAK,CAAC,EAAE;;IAEf,IAAI,EAAE,KAAK,IAAI,SAAS;MACtB,MAAM;KACP;;IAED,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;;IAEvD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;MAC5B,MAAM;KACP;;IAED,QAAQ,GAAG,IAAI,CAAC;IAChB,KAAK,CAAC,QAAQ,EAAE,CAAC;;IAEjB,IAAI,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;MACxC,IAAI,KAAK,CAAC,UAAU,IAAI,UAAU,EAAE;QAClC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC5C,SAAS;OACV;KACF;;IAED,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;IACnB,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC9D,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3B,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;;IAErC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;IAE5C,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE;MACzE,UAAU,CAAC,KAAK,EAAE,qCAAqC,CAAC,CAAC;KAC1D,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU,EAAE;MACxC,MAAM;KACP;GACF;;EAED,IAAI,QAAQ,EAAE;IACZ,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;IACjB,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;IACvB,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC;IACxB,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;IACvB,OAAO,IAAI,CAAC;GACb;EACD,OAAO,KAAK,CAAC;CACd;;AAED,SAAS,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE;EACvD,IAAI,SAAS;MACT,YAAY;MACZ,KAAK;MACL,IAAI,YAAY,KAAK,CAAC,GAAG;MACzB,OAAO,SAAS,KAAK,CAAC,MAAM;MAC5B,OAAO,SAAS,EAAE;MAClB,eAAe,GAAG,EAAE;MACpB,MAAM,UAAU,IAAI;MACpB,OAAO,SAAS,IAAI;MACpB,SAAS,OAAO,IAAI;MACpB,aAAa,GAAG,KAAK;MACrB,QAAQ,QAAQ,KAAK;MACrB,EAAE,CAAC;;EAEP,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE;IACzB,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC;GACzC;;EAED,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,OAAO,EAAE,KAAK,CAAC,EAAE;IACf,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IACvD,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;;;;;;IAMnB,IAAI,CAAC,EAAE,KAAK,IAAI,WAAW,EAAE,KAAK,IAAI,YAAY,YAAY,CAAC,SAAS,CAAC,EAAE;;MAEzE,IAAI,EAAE,KAAK,IAAI,SAAS;QACtB,IAAI,aAAa,EAAE;UACjB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;UACzE,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;SACrC;;QAED,QAAQ,GAAG,IAAI,CAAC;QAChB,aAAa,GAAG,IAAI,CAAC;QACrB,YAAY,GAAG,IAAI,CAAC;;OAErB,MAAM,IAAI,aAAa,EAAE;;QAExB,aAAa,GAAG,KAAK,CAAC;QACtB,YAAY,GAAG,IAAI,CAAC;;OAErB,MAAM;QACL,UAAU,CAAC,KAAK,EAAE,wDAAwD,CAAC,CAAC;OAC7E;;MAED,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;MACpB,EAAE,GAAG,SAAS,CAAC;;;;;KAKhB,MAAM,IAAI,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE;;MAExE,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE;QACxB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;QAE5C,OAAO,cAAc,CAAC,EAAE,CAAC,EAAE;UACzB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;SAC/C;;QAED,IAAI,EAAE,KAAK,IAAI,SAAS;UACtB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;UAE9C,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE;YACrB,UAAU,CAAC,KAAK,EAAE,yFAAyF,CAAC,CAAC;WAC9G;;UAED,IAAI,aAAa,EAAE;YACjB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;YACzE,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;WACrC;;UAED,QAAQ,GAAG,IAAI,CAAC;UAChB,aAAa,GAAG,KAAK,CAAC;UACtB,YAAY,GAAG,KAAK,CAAC;UACrB,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC;UACnB,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC;;SAExB,MAAM,IAAI,QAAQ,EAAE;UACnB,UAAU,CAAC,KAAK,EAAE,0DAA0D,CAAC,CAAC;;SAE/E,MAAM;UACL,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;UACjB,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;UACvB,OAAO,IAAI,CAAC;SACb;;OAEF,MAAM,IAAI,QAAQ,EAAE;QACnB,UAAU,CAAC,KAAK,EAAE,gFAAgF,CAAC,CAAC;;OAErG,MAAM;QACL,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;QACjB,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;QACvB,OAAO,IAAI,CAAC;OACb;;KAEF,MAAM;MACL,MAAM;KACP;;;;;IAKD,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU,EAAE;MACzD,IAAI,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,IAAI,EAAE,YAAY,CAAC,EAAE;QACzE,IAAI,aAAa,EAAE;UACjB,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC;SACxB,MAAM;UACL,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;SAC1B;OACF;;MAED,IAAI,CAAC,aAAa,EAAE;QAClB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAC9E,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;OACrC;;MAED,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;MACrC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;KAC7C;;IAED,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE;MAC/C,UAAU,CAAC,KAAK,EAAE,oCAAoC,CAAC,CAAC;KACzD,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU,EAAE;MACxC,MAAM;KACP;GACF;;;;;;;EAOD,IAAI,aAAa,EAAE;IACjB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;GAC1E;;;EAGD,IAAI,QAAQ,EAAE;IACZ,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;IACjB,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;IACvB,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC;IACvB,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;GACxB;;EAED,OAAO,QAAQ,CAAC;CACjB;;AAED,SAAS,eAAe,CAAC,KAAK,EAAE;EAC9B,IAAI,SAAS;MACT,UAAU,GAAG,KAAK;MAClB,OAAO,MAAM,KAAK;MAClB,SAAS;MACT,OAAO;MACP,EAAE,CAAC;;EAEP,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,IAAI,EAAE,KAAK,IAAI,SAAS,EAAA,OAAO,KAAK,CAAC,EAAA;;EAErC,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,EAAE;IACtB,UAAU,CAAC,KAAK,EAAE,+BAA+B,CAAC,CAAC;GACpD;;EAED,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE9C,IAAI,EAAE,KAAK,IAAI,SAAS;IACtB,UAAU,GAAG,IAAI,CAAC;IAClB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;GAE/C,MAAM,IAAI,EAAE,KAAK,IAAI,SAAS;IAC7B,OAAO,GAAG,IAAI,CAAC;IACf,SAAS,GAAG,IAAI,CAAC;IACjB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;GAE/C,MAAM;IACL,SAAS,GAAG,GAAG,CAAC;GACjB;;EAED,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;;EAE3B,IAAI,UAAU,EAAE;IACd,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE;WAC9C,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,IAAI,SAAS;;IAEvC,IAAI,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE;MACjC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;MACvD,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;KAC/C,MAAM;MACL,UAAU,CAAC,KAAK,EAAE,oDAAoD,CAAC,CAAC;KACzE;GACF,MAAM;IACL,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE;;MAEpC,IAAI,EAAE,KAAK,IAAI,SAAS;QACtB,IAAI,CAAC,OAAO,EAAE;UACZ,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;;UAEjE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACvC,UAAU,CAAC,KAAK,EAAE,iDAAiD,CAAC,CAAC;WACtE;;UAED,OAAO,GAAG,IAAI,CAAC;UACf,SAAS,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;SAChC,MAAM;UACL,UAAU,CAAC,KAAK,EAAE,6CAA6C,CAAC,CAAC;SAClE;OACF;;MAED,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;KAC/C;;IAED,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;IAEvD,IAAI,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;MACzC,UAAU,CAAC,KAAK,EAAE,qDAAqD,CAAC,CAAC;KAC1E;GACF;;EAED,IAAI,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;IAC7C,UAAU,CAAC,KAAK,EAAE,2CAA2C,GAAG,OAAO,CAAC,CAAC;GAC1E;;EAED,IAAI,UAAU,EAAE;IACd,KAAK,CAAC,GAAG,GAAG,OAAO,CAAC;;GAErB,MAAM,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;IACxD,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;;GAE/C,MAAM,IAAI,SAAS,KAAK,GAAG,EAAE;IAC5B,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,OAAO,CAAC;;GAE3B,MAAM,IAAI,SAAS,KAAK,IAAI,EAAE;IAC7B,KAAK,CAAC,GAAG,GAAG,oBAAoB,GAAG,OAAO,CAAC;;GAE5C,MAAM;IACL,UAAU,CAAC,KAAK,EAAE,yBAAyB,GAAG,SAAS,GAAG,GAAG,CAAC,CAAC;GAChE;;EAED,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,kBAAkB,CAAC,KAAK,EAAE;EACjC,IAAI,SAAS;MACT,EAAE,CAAC;;EAEP,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,IAAI,EAAE,KAAK,IAAI,SAAS,EAAA,OAAO,KAAK,CAAC,EAAA;;EAErC,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE;IACzB,UAAU,CAAC,KAAK,EAAE,mCAAmC,CAAC,CAAC;GACxD;;EAED,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;EAC9C,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;;EAE3B,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE;IAC9D,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;GAC/C;;EAED,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE;IAChC,UAAU,CAAC,KAAK,EAAE,4DAA4D,CAAC,CAAC;GACjF;;EAED,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;EAC5D,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,SAAS,CAAC,KAAK,EAAE;EACxB,IAAI,SAAS,EAAE,KAAK;MAChB,EAAE,CAAC;;EAEP,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,IAAI,EAAE,KAAK,IAAI,SAAS,EAAA,OAAO,KAAK,CAAC,EAAA;;EAErC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;EAC9C,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;;EAE3B,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE;IAC9D,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;GAC/C;;EAED,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE;IAChC,UAAU,CAAC,KAAK,EAAE,2DAA2D,CAAC,CAAC;GAChF;;EAED,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAErD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;IAC1C,UAAU,CAAC,KAAK,EAAE,sBAAsB,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC;GACzD;;EAED,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;EACtC,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;EACrC,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE;EAChF,IAAI,gBAAgB;MAChB,iBAAiB;MACjB,qBAAqB;MACrB,YAAY,GAAG,CAAC;MAChB,SAAS,IAAI,KAAK;MAClB,UAAU,GAAG,KAAK;MAClB,SAAS;MACT,YAAY;MACZ,IAAI;MACJ,UAAU;MACV,WAAW,CAAC;;EAEhB,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE;IAC3B,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;GAC/B;;EAED,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC;EACpB,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;EACpB,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;EACpB,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;;EAEpB,gBAAgB,GAAG,iBAAiB,GAAG,qBAAqB;IAC1D,iBAAiB,KAAK,WAAW;IACjC,gBAAgB,MAAM,WAAW,CAAC;;EAEpC,IAAI,WAAW,EAAE;IACf,IAAI,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;MACxC,SAAS,GAAG,IAAI,CAAC;;MAEjB,IAAI,KAAK,CAAC,UAAU,GAAG,YAAY,EAAE;QACnC,YAAY,GAAG,CAAC,CAAC;OAClB,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,YAAY,EAAE;QAC5C,YAAY,GAAG,CAAC,CAAC;OAClB,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,YAAY,EAAE;QAC1C,YAAY,GAAG,CAAC,CAAC,CAAC;OACnB;KACF;GACF;;EAED,IAAI,YAAY,KAAK,CAAC,EAAE;IACtB,OAAO,eAAe,CAAC,KAAK,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE;MAC1D,IAAI,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;QACxC,SAAS,GAAG,IAAI,CAAC;QACjB,qBAAqB,GAAG,gBAAgB,CAAC;;QAEzC,IAAI,KAAK,CAAC,UAAU,GAAG,YAAY,EAAE;UACnC,YAAY,GAAG,CAAC,CAAC;SAClB,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,YAAY,EAAE;UAC5C,YAAY,GAAG,CAAC,CAAC;SAClB,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,YAAY,EAAE;UAC1C,YAAY,GAAG,CAAC,CAAC,CAAC;SACnB;OACF,MAAM;QACL,qBAAqB,GAAG,KAAK,CAAC;OAC/B;KACF;GACF;;EAED,IAAI,qBAAqB,EAAE;IACzB,qBAAqB,GAAG,SAAS,IAAI,YAAY,CAAC;GACnD;;EAED,IAAI,YAAY,KAAK,CAAC,IAAI,iBAAiB,KAAK,WAAW,EAAE;IAC3D,IAAI,eAAe,KAAK,WAAW,IAAI,gBAAgB,KAAK,WAAW,EAAE;MACvE,UAAU,GAAG,YAAY,CAAC;KAC3B,MAAM;MACL,UAAU,GAAG,YAAY,GAAG,CAAC,CAAC;KAC/B;;IAED,WAAW,GAAG,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC;;IAE/C,IAAI,YAAY,KAAK,CAAC,EAAE;MACtB,IAAI,qBAAqB;WACpB,iBAAiB,CAAC,KAAK,EAAE,WAAW,CAAC;WACrC,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;UAClD,kBAAkB,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE;QACzC,UAAU,GAAG,IAAI,CAAC;OACnB,MAAM;QACL,IAAI,CAAC,iBAAiB,IAAI,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC;YACxD,sBAAsB,CAAC,KAAK,EAAE,UAAU,CAAC;YACzC,sBAAsB,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE;UAC7C,UAAU,GAAG,IAAI,CAAC;;SAEnB,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE;UAC3B,UAAU,GAAG,IAAI,CAAC;;UAElB,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE;YAC/C,UAAU,CAAC,KAAK,EAAE,2CAA2C,CAAC,CAAC;WAChE;;SAEF,MAAM,IAAI,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,eAAe,KAAK,WAAW,CAAC,EAAE;UAC9E,UAAU,GAAG,IAAI,CAAC;;UAElB,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,EAAE;YACtB,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;WACjB;SACF;;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE;UACzB,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;SAC9C;OACF;KACF,MAAM,IAAI,YAAY,KAAK,CAAC,EAAE;;;MAG7B,UAAU,GAAG,qBAAqB,IAAI,iBAAiB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;KAC7E;GACF;;EAED,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;IAC3C,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;MACrB,KAAK,SAAS,GAAG,CAAC,EAAE,YAAY,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM;WACxD,SAAS,GAAG,YAAY;WACxB,SAAS,IAAI,CAAC,EAAE;QACnB,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;;;;;;QAMtC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;UAC9B,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;UAC5C,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;UACrB,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE;YACzB,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;WAC9C;UACD,MAAM;SACP;OACF;KACF,MAAM,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,UAAU,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE;MACnF,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;MAE1D,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE;QACrD,UAAU,CAAC,KAAK,EAAE,+BAA+B,GAAG,KAAK,CAAC,GAAG,GAAG,uBAAuB,GAAG,IAAI,CAAC,IAAI,GAAG,UAAU,GAAG,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;OACtI;;MAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;QAC/B,UAAU,CAAC,KAAK,EAAE,+BAA+B,GAAG,KAAK,CAAC,GAAG,GAAG,gBAAgB,CAAC,CAAC;OACnF,MAAM;QACL,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE;UACzB,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;SAC9C;OACF;KACF,MAAM;MACL,UAAU,CAAC,KAAK,EAAE,gBAAgB,GAAG,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;KACvD;GACF;;EAED,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE;IAC3B,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GAChC;EACD,OAAO,KAAK,CAAC,GAAG,KAAK,IAAI,KAAK,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,UAAU,CAAC;CACnE;;AAED,SAAS,YAAY,CAAC,KAAK,EAAE;EAC3B,IAAI,aAAa,GAAG,KAAK,CAAC,QAAQ;MAC9B,SAAS;MACT,aAAa;MACb,aAAa;MACb,aAAa,GAAG,KAAK;MACrB,EAAE,CAAC;;EAEP,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;EACrB,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC;EACrC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;EAClB,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;;EAErB,OAAO,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;IAC1D,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;;IAErC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;IAE5C,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,IAAI,EAAE,KAAK,IAAI,SAAS;MAC9C,MAAM;KACP;;IAED,aAAa,GAAG,IAAI,CAAC;IACrB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC9C,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;;IAE3B,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE;MACpC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;KAC/C;;IAED,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7D,aAAa,GAAG,EAAE,CAAC;;IAEnB,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;MAC5B,UAAU,CAAC,KAAK,EAAE,8DAA8D,CAAC,CAAC;KACnF;;IAED,OAAO,EAAE,KAAK,CAAC,EAAE;MACf,OAAO,cAAc,CAAC,EAAE,CAAC,EAAE;QACzB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;OAC/C;;MAED,IAAI,EAAE,KAAK,IAAI,SAAS;QACtB,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE;eAC9C,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;QAChC,MAAM;OACP;;MAED,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE,EAAA,MAAM,EAAA;;MAEtB,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;;MAE3B,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE;QACpC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;OAC/C;;MAED,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;KAClE;;IAED,IAAI,EAAE,KAAK,CAAC,EAAE,EAAA,aAAa,CAAC,KAAK,CAAC,CAAC,EAAA;;IAEnC,IAAI,eAAe,CAAC,IAAI,CAAC,iBAAiB,EAAE,aAAa,CAAC,EAAE;MAC1D,iBAAiB,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;KACvE,MAAM;MACL,YAAY,CAAC,KAAK,EAAE,8BAA8B,GAAG,aAAa,GAAG,GAAG,CAAC,CAAC;KAC3E;GACF;;EAED,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;;EAErC,IAAI,KAAK,CAAC,UAAU,KAAK,CAAC;MACtB,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,IAAI;MACnD,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,IAAI;MACnD,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,IAAI,SAAS;IAC9D,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;IACpB,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;;GAEtC,MAAM,IAAI,aAAa,EAAE;IACxB,UAAU,CAAC,KAAK,EAAE,iCAAiC,CAAC,CAAC;GACtD;;EAED,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,GAAG,CAAC,EAAE,iBAAiB,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;EACzE,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;;EAErC,IAAI,KAAK,CAAC,eAAe;MACrB,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE;IACxF,YAAY,CAAC,KAAK,EAAE,kDAAkD,CAAC,CAAC;GACzE;;EAED,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;;EAEnC,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,SAAS,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE;;IAEtE,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,SAAS;MAC1D,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;MACpB,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;KACtC;IACD,OAAO;GACR;;EAED,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;IACvC,UAAU,CAAC,KAAK,EAAE,uDAAuD,CAAC,CAAC;GAC5E,MAAM;IACL,OAAO;GACR;CACF;;;AAGD,SAAS,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE;EACrC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;EACtB,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;;EAExB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;;;IAGtB,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI;QAC3C,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,UAAU;MACvD,KAAK,IAAI,IAAI,CAAC;KACf;;;IAGD,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE;MAClC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACxB;GACF;;EAED,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;;;EAGtC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC;;EAEpB,OAAO,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,aAAa;IACjE,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC;IACtB,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;GACrB;;EAED,OAAO,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;IAC1C,YAAY,CAAC,KAAK,CAAC,CAAC;GACrB;;EAED,OAAO,KAAK,CAAC,SAAS,CAAC;CACxB;;;AAGD,SAASsB,SAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE;EACzC,IAAI,SAAS,GAAG,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC;;EAE7D,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IACrE,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;GAC5B;CACF;;;AAGD,SAASC,MAAI,CAAC,KAAK,EAAE,OAAO,EAAE;EAC5B,IAAI,SAAS,GAAG,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;;EAE9C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;;IAE1B,OAAO,SAAS,CAAC;GAClB,MAAM,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;IACjC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;GACrB;EACD,MAAM,IAAIvB,eAAa,CAAC,0DAA0D,CAAC,CAAC;CACrF;;;AAGD,SAASwB,aAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;EAC3CF,SAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAEF,qBAAmB,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;CACjF;;;AAGD,SAASK,UAAQ,CAAC,KAAK,EAAE,OAAO,EAAE;EAChC,OAAOF,MAAI,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAEH,qBAAmB,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;CAC7E;;;AAGD,gBAA6BE,SAAO,CAAC;AACrC,aAA6BC,MAAI,CAAC;AAClC,oBAA6BC,aAAW,CAAC;AACzC,iBAA6BC,UAAQ,CAAC;;;;;;;;;;;AC9iDtC,IAAIxB,QAAM,gBAAgBC,QAAmB,CAAC;AAC9C,IAAIF,eAAa,SAASM,SAAsB,CAAC;AACjD,IAAIe,qBAAmB,GAAGd,YAAgC,CAAC;AAC3D,IAAIa,qBAAmB,GAAGT,YAAgC,CAAC;;AAE3D,IAAIK,WAAS,SAAS,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;AAChD,IAAID,iBAAe,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;;AAEtD,IAAI,QAAQ,oBAAoB,IAAI,CAAC;AACrC,IAAI,cAAc,cAAc,IAAI,CAAC;AACrC,IAAI,UAAU,kBAAkB,IAAI,CAAC;AACrC,IAAI,gBAAgB,YAAY,IAAI,CAAC;AACrC,IAAI,iBAAiB,WAAW,IAAI,CAAC;AACrC,IAAI,UAAU,kBAAkB,IAAI,CAAC;AACrC,IAAI,YAAY,gBAAgB,IAAI,CAAC;AACrC,IAAI,cAAc,cAAc,IAAI,CAAC;AACrC,IAAI,iBAAiB,WAAW,IAAI,CAAC;AACrC,IAAI,aAAa,eAAe,IAAI,CAAC;AACrC,IAAI,UAAU,kBAAkB,IAAI,CAAC;AACrC,IAAI,UAAU,kBAAkB,IAAI,CAAC;AACrC,IAAI,UAAU,kBAAkB,IAAI,CAAC;AACrC,IAAI,iBAAiB,WAAW,IAAI,CAAC;AACrC,IAAI,aAAa,eAAe,IAAI,CAAC;AACrC,IAAI,kBAAkB,UAAU,IAAI,CAAC;AACrC,IAAI,wBAAwB,IAAI,IAAI,CAAC;AACrC,IAAI,yBAAyB,GAAG,IAAI,CAAC;AACrC,IAAI,iBAAiB,WAAW,IAAI,CAAC;AACrC,IAAI,uBAAuB,KAAK,IAAI,CAAC;AACrC,IAAI,kBAAkB,UAAU,IAAI,CAAC;AACrC,IAAI,wBAAwB,IAAI,IAAI,CAAC;;AAErC,IAAI,gBAAgB,GAAG,EAAE,CAAC;;AAE1B,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC;AAClC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;AACjC,gBAAgB,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;;AAEjC,IAAI,0BAA0B,GAAG;EAC/B,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;EAC/C,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;CAChD,CAAC;;AAEF,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE;EACpC,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC;;EAElD,IAAI,GAAG,KAAK,IAAI,EAAE,EAAA,OAAO,EAAE,CAAC,EAAA;;EAE5B,MAAM,GAAG,EAAE,CAAC;EACZ,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;EAExB,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IAChE,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;;IAEzB,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;MAC5B,GAAG,GAAG,oBAAoB,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAC3C;IACD,IAAI,GAAG,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;;IAE/C,IAAI,IAAI,IAAIA,iBAAe,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE;MAC1D,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;KAClC;;IAED,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;GACrB;;EAED,OAAO,MAAM,CAAC;CACf;;AAED,SAAS,SAAS,CAAC,SAAS,EAAE;EAC5B,IAAI,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;;EAE3B,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;;EAE9C,IAAI,SAAS,IAAI,IAAI,EAAE;IACrB,MAAM,GAAG,GAAG,CAAC;IACb,MAAM,GAAG,CAAC,CAAC;GACZ,MAAM,IAAI,SAAS,IAAI,MAAM,EAAE;IAC9B,MAAM,GAAG,GAAG,CAAC;IACb,MAAM,GAAG,CAAC,CAAC;GACZ,MAAM,IAAI,SAAS,IAAI,UAAU,EAAE;IAClC,MAAM,GAAG,GAAG,CAAC;IACb,MAAM,GAAG,CAAC,CAAC;GACZ,MAAM;IACL,MAAM,IAAIf,eAAa,CAAC,+DAA+D,CAAC,CAAC;GAC1F;;EAED,OAAO,IAAI,GAAG,MAAM,GAAGC,QAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;CAC5E;;AAED,SAASyB,OAAK,CAAC,OAAO,EAAE;EACtB,IAAI,CAAC,MAAM,SAAS,OAAO,CAAC,QAAQ,CAAC,IAAIL,qBAAmB,CAAC;EAC7D,IAAI,CAAC,MAAM,SAAS,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;EAC1D,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC;EACpD,IAAI,CAAC,SAAS,OAAOpB,QAAM,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;EACzF,IAAI,CAAC,QAAQ,OAAO,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC;EAC5E,IAAI,CAAC,QAAQ,OAAO,OAAO,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC;EACjD,IAAI,CAAC,SAAS,MAAM,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;EAC/C,IAAI,CAAC,MAAM,SAAS,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC;EAC/C,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC;;EAErD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;EAClD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;;EAElD,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;EAChB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;;EAEjB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;EACrB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;CAC5B;;;AAGD,SAAS,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE;EACpC,IAAI,GAAG,GAAGA,QAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC;MAChC,QAAQ,GAAG,CAAC;MACZ,IAAI,GAAG,CAAC,CAAC;MACT,MAAM,GAAG,EAAE;MACX,IAAI;MACJ,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;;EAE3B,OAAO,QAAQ,GAAG,MAAM,EAAE;IACxB,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACtC,IAAI,IAAI,KAAK,CAAC,CAAC,EAAE;MACf,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;MAC9B,QAAQ,GAAG,MAAM,CAAC;KACnB,MAAM;MACL,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;MACxC,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC;KACrB;;IAED,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,MAAM,IAAI,GAAG,CAAC,EAAA;;IAEhD,MAAM,IAAI,IAAI,CAAC;GAChB;;EAED,OAAO,MAAM,CAAC;CACf;;AAED,SAAS,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE;EACtC,OAAO,IAAI,GAAGA,QAAM,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;CACxD;;AAED,SAAS,qBAAqB,CAAC,KAAK,EAAE,GAAG,EAAE;EACzC,IAAI,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC;;EAExB,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IAC/E,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;;IAElC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;MACrB,OAAO,IAAI,CAAC;KACb;GACF;;EAED,OAAO,KAAK,CAAC;CACd;;;AAGD,SAAS,YAAY,CAAC,CAAC,EAAE;EACvB,OAAO,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,QAAQ,CAAC;CAC3C;;;;;;AAMD,SAAS,WAAW,CAAC,CAAC,EAAE;EACtB,QAAQ,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ;UAC9B,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,KAAK,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,MAAM,CAAC;UAChE,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,KAAK,CAAC,KAAK,MAAM,WAAW;WACzD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC;CACzC;;;AAGD,SAAS,WAAW,CAAC,CAAC,EAAE;;;EAGtB,OAAO,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,MAAM;;OAEhC,CAAC,KAAK,UAAU;OAChB,CAAC,KAAK,wBAAwB;OAC9B,CAAC,KAAK,yBAAyB;OAC/B,CAAC,KAAK,uBAAuB;OAC7B,CAAC,KAAK,wBAAwB;;OAE9B,CAAC,KAAK,UAAU;OAChB,CAAC,KAAK,UAAU,CAAC;CACvB;;;AAGD,SAAS,gBAAgB,CAAC,CAAC,EAAE;;;EAG3B,OAAO,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,MAAM;OAChC,CAAC,YAAY,CAAC,CAAC,CAAC;;;OAGhB,CAAC,KAAK,UAAU;OAChB,CAAC,KAAK,aAAa;OACnB,CAAC,KAAK,UAAU;OAChB,CAAC,KAAK,UAAU;OAChB,CAAC,KAAK,wBAAwB;OAC9B,CAAC,KAAK,yBAAyB;OAC/B,CAAC,KAAK,uBAAuB;OAC7B,CAAC,KAAK,wBAAwB;;OAE9B,CAAC,KAAK,UAAU;OAChB,CAAC,KAAK,cAAc;OACpB,CAAC,KAAK,aAAa;OACnB,CAAC,KAAK,gBAAgB;OACtB,CAAC,KAAK,kBAAkB;OACxB,CAAC,KAAK,iBAAiB;OACvB,CAAC,KAAK,iBAAiB;OACvB,CAAC,KAAK,iBAAiB;;OAEvB,CAAC,KAAK,YAAY;OAClB,CAAC,KAAK,kBAAkB;OACxB,CAAC,KAAK,iBAAiB,CAAC;CAC9B;;AAED,IAAI,WAAW,KAAK,CAAC;IACjB,YAAY,IAAI,CAAC;IACjB,aAAa,GAAG,CAAC;IACjB,YAAY,IAAI,CAAC;IACjB,YAAY,IAAI,CAAC,CAAC;;;;;;;;;AAStB,SAAS,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,iBAAiB,EAAE;EAC/F,IAAI,CAAC,CAAC;EACN,IAAI,IAAI,CAAC;EACT,IAAI,YAAY,GAAG,KAAK,CAAC;EACzB,IAAI,eAAe,GAAG,KAAK,CAAC;EAC5B,IAAI,gBAAgB,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC;EACxC,IAAI,iBAAiB,GAAG,CAAC,CAAC,CAAC;EAC3B,IAAI,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;aACvC,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;;EAE/D,IAAI,cAAc,EAAE;;;IAGlB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;MAClC,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;MAC5B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;QACtB,OAAO,YAAY,CAAC;OACrB;MACD,KAAK,GAAG,KAAK,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;KACpC;GACF,MAAM;;IAEL,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;MAClC,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;MAC5B,IAAI,IAAI,KAAK,cAAc,EAAE;QAC3B,YAAY,GAAG,IAAI,CAAC;;QAEpB,IAAI,gBAAgB,EAAE;UACpB,eAAe,GAAG,eAAe;;aAE9B,CAAC,GAAG,iBAAiB,GAAG,CAAC,GAAG,SAAS;aACrC,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;UAC1C,iBAAiB,GAAG,CAAC,CAAC;SACvB;OACF,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;QAC7B,OAAO,YAAY,CAAC;OACrB;MACD,KAAK,GAAG,KAAK,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;KACpC;;IAED,eAAe,GAAG,eAAe,KAAK,gBAAgB;OACnD,CAAC,GAAG,iBAAiB,GAAG,CAAC,GAAG,SAAS;OACrC,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;GAC5C;;;;EAID,IAAI,CAAC,YAAY,IAAI,CAAC,eAAe,EAAE;;;IAGrC,OAAO,KAAK,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;QACtC,WAAW,GAAG,YAAY,CAAC;GAChC;;EAED,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,cAAc,GAAG,CAAC,EAAE;IAC3C,OAAO,YAAY,CAAC;GACrB;;;EAGD,OAAO,eAAe,GAAG,YAAY,GAAG,aAAa,CAAC;CACvD;;;;;;;;AAQD,SAAS,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;EAChD,KAAK,CAAC,IAAI,IAAI,YAAY;IACxB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;MACvB,OAAO,IAAI,CAAC;KACb;IACD,IAAI,CAAC,KAAK,CAAC,YAAY;QACnB,0BAA0B,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;MACrD,OAAO,GAAG,GAAG,MAAM,GAAG,GAAG,CAAC;KAC3B;;IAED,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;;;;;;;;IAQ/C,IAAI,SAAS,GAAG,KAAK,CAAC,SAAS,KAAK,CAAC,CAAC;QAClC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC;;;IAG3E,IAAI,cAAc,GAAG,KAAK;;UAEpB,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IACxD,SAAS,aAAa,CAAC,MAAM,EAAE;MAC7B,OAAO,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;KAC7C;;IAED,QAAQ,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,aAAa,CAAC;MACvF,KAAK,WAAW;QACd,OAAO,MAAM,CAAC;MAChB,KAAK,YAAY;QACf,OAAO,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC;MAChD,KAAK,aAAa;QAChB,OAAO,GAAG,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YAC1C,iBAAiB,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;MACtD,KAAK,YAAY;QACf,OAAO,GAAG,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YAC1C,iBAAiB,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;MAC7E,KAAK,YAAY;QACf,OAAO,GAAG,GAAG,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,GAAG,CAAC;MACrD;QACE,MAAM,IAAID,eAAa,CAAC,wCAAwC,CAAC,CAAC;KACrE;GACF,EAAE,CAAC,CAAC;CACN;;;AAGD,SAAS,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE;EAC3C,IAAI,eAAe,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC;;;EAGxE,IAAI,IAAI,YAAY,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC;EACvD,IAAI,IAAI,GAAG,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC;EAC3E,IAAI,KAAK,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;;EAE3C,OAAO,eAAe,GAAG,KAAK,GAAG,IAAI,CAAC;CACvC;;;AAGD,SAAS,iBAAiB,CAAC,MAAM,EAAE;EACjC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;CAC1E;;;;AAID,SAAS,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE;;;;;EAKjC,IAAI,MAAM,GAAG,gBAAgB,CAAC;;;EAG9B,IAAI,MAAM,IAAI,YAAY;IACxB,IAAI,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,GAAG,MAAM,KAAK,CAAC,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAChD,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC;IAC1B,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC;GACjD,EAAE,CAAC,CAAC;;EAEL,IAAI,gBAAgB,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;EAC/D,IAAI,YAAY,CAAC;;;EAGjB,IAAI,KAAK,CAAC;EACV,QAAQ,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG;IACpC,IAAI,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACvC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;IACjC,MAAM,IAAI,MAAM;SACX,CAAC,gBAAgB,IAAI,CAAC,YAAY,IAAI,IAAI,KAAK,EAAE;UAChD,IAAI,GAAG,EAAE,CAAC;QACZ,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1B,gBAAgB,GAAG,YAAY,CAAC;GACjC;;EAED,OAAO,MAAM,CAAC;CACf;;;;;;AAMD,SAAS,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE;EAC7B,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;;;EAGhD,IAAI,OAAO,GAAG,QAAQ,CAAC;EACvB,IAAI,KAAK,CAAC;;EAEV,IAAI,KAAK,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC;EACvC,IAAI,MAAM,GAAG,EAAE,CAAC;;;;;;EAMhB,QAAQ,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;IACnC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;;IAEnB,IAAI,IAAI,GAAG,KAAK,GAAG,KAAK,EAAE;MACxB,GAAG,GAAG,CAAC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC;MACnC,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;;MAExC,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC;KACjB;IACD,IAAI,GAAG,IAAI,CAAC;GACb;;;;EAID,MAAM,IAAI,IAAI,CAAC;;EAEf,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,EAAE;IAC/C,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;GACjE,MAAM;IACL,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;GAC7B;;EAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CACxB;;;AAGD,SAAS,YAAY,CAAC,MAAM,EAAE;EAC5B,IAAI,MAAM,GAAG,EAAE,CAAC;EAChB,IAAI,IAAI,CAAC;EACT,IAAI,SAAS,CAAC;;EAEd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACtC,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC5B,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,IAAI,CAAC,SAAS,IAAI,WAAW,CAAC,IAAI,CAAC;QACrC,MAAM,CAAC,CAAC,CAAC;QACT,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;GAClC;;EAED,OAAO,MAAM,CAAC;CACf;;AAED,SAAS,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;EAC/C,IAAI,OAAO,GAAG,EAAE;MACZ,IAAI,MAAM,KAAK,CAAC,GAAG;MACnB,KAAK;MACL,MAAM,CAAC;;EAEX,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;;IAElE,IAAI,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;MACxD,IAAI,KAAK,KAAK,CAAC,EAAE,EAAA,OAAO,IAAI,IAAI,CAAC,EAAA;MACjC,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC;KACvB;GACF;;EAED,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;EACjB,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,GAAG,GAAG,CAAC;CAClC;;AAED,SAAS,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;EACzD,IAAI,OAAO,GAAG,EAAE;MACZ,IAAI,MAAM,KAAK,CAAC,GAAG;MACnB,KAAK;MACL,MAAM,CAAC;;EAEX,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;;IAElE,IAAI,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;MAC1D,IAAI,CAAC,OAAO,IAAI,KAAK,KAAK,CAAC,EAAE;QAC3B,OAAO,IAAI,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;OAC3C;MACD,OAAO,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;KAC9B;GACF;;EAED,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;EACjB,KAAK,CAAC,IAAI,GAAG,OAAO,IAAI,IAAI,CAAC;CAC9B;;AAED,SAAS,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;EAC9C,IAAI,OAAO,SAAS,EAAE;MAClB,IAAI,YAAY,KAAK,CAAC,GAAG;MACzB,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;MACnC,KAAK;MACL,MAAM;MACN,SAAS;MACT,WAAW;MACX,UAAU,CAAC;;EAEf,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IACzE,UAAU,GAAG,EAAE,CAAC;;IAEhB,IAAI,KAAK,KAAK,CAAC,EAAE,EAAA,UAAU,IAAI,IAAI,CAAC,EAAA;;IAEpC,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACjC,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;;IAEhC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;MACrD,SAAS;KACV;;IAED,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,EAAA,UAAU,IAAI,IAAI,CAAC,EAAA;;IAEjD,UAAU,IAAI,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;;IAEhC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;MACvD,SAAS;KACV;;IAED,UAAU,IAAI,KAAK,CAAC,IAAI,CAAC;;;IAGzB,OAAO,IAAI,UAAU,CAAC;GACvB;;EAED,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;EACjB,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,GAAG,GAAG,CAAC;CAClC;;AAED,SAAS,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;EACxD,IAAI,OAAO,SAAS,EAAE;MAClB,IAAI,YAAY,KAAK,CAAC,GAAG;MACzB,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;MACnC,KAAK;MACL,MAAM;MACN,SAAS;MACT,WAAW;MACX,YAAY;MACZ,UAAU,CAAC;;;EAGf,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE;;IAE3B,aAAa,CAAC,IAAI,EAAE,CAAC;GACtB,MAAM,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,UAAU,EAAE;;IAE/C,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;GACpC,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE;;IAEzB,MAAM,IAAIA,eAAa,CAAC,0CAA0C,CAAC,CAAC;GACrE;;EAED,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IACzE,UAAU,GAAG,EAAE,CAAC;;IAEhB,IAAI,CAAC,OAAO,IAAI,KAAK,KAAK,CAAC,EAAE;MAC3B,UAAU,IAAI,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;KAC9C;;IAED,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACjC,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;;IAEhC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;MAC7D,SAAS;KACV;;IAED,YAAY,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG;oBACvC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;;IAExD,IAAI,YAAY,EAAE;MAChB,IAAI,KAAK,CAAC,IAAI,IAAI,cAAc,KAAK,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;QAC7D,UAAU,IAAI,GAAG,CAAC;OACnB,MAAM;QACL,UAAU,IAAI,IAAI,CAAC;OACpB;KACF;;IAED,UAAU,IAAI,KAAK,CAAC,IAAI,CAAC;;IAEzB,IAAI,YAAY,EAAE;MAChB,UAAU,IAAI,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;KAC9C;;IAED,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,CAAC,EAAE;MACjE,SAAS;KACV;;IAED,IAAI,KAAK,CAAC,IAAI,IAAI,cAAc,KAAK,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;MAC7D,UAAU,IAAI,GAAG,CAAC;KACnB,MAAM;MACL,UAAU,IAAI,IAAI,CAAC;KACpB;;IAED,UAAU,IAAI,KAAK,CAAC,IAAI,CAAC;;;IAGzB,OAAO,IAAI,UAAU,CAAC;GACvB;;EAED,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;EACjB,KAAK,CAAC,IAAI,GAAG,OAAO,IAAI,IAAI,CAAC;CAC9B;;AAED,SAAS,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;EAC3C,IAAI,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC;;EAElD,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;;EAEhE,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IACpE,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;;IAEvB,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,SAAS;SAClC,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,OAAO,MAAM,KAAK,QAAQ,MAAM,MAAM,YAAY,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;SAC1F,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE;;MAEhD,KAAK,CAAC,GAAG,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;;MAEtC,IAAI,IAAI,CAAC,SAAS,EAAE;QAClB,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC;;QAEtD,IAAIgB,WAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,mBAAmB,EAAE;UAC1D,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;SACzC,MAAM,IAAID,iBAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE;UACtD,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;SAChD,MAAM;UACL,MAAM,IAAIf,eAAa,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,8BAA8B,GAAG,KAAK,GAAG,SAAS,CAAC,CAAC;SAC/F;;QAED,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC;OACtB;;MAED,OAAO,IAAI,CAAC;KACb;GACF;;EAED,OAAO,KAAK,CAAC;CACd;;;;;AAKD,SAAS,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE;EAC9D,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;EACjB,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;;EAEpB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE;IACrC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;GACjC;;EAED,IAAI,IAAI,GAAGgB,WAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;;EAEtC,IAAI,KAAK,EAAE;IACT,KAAK,IAAI,KAAK,CAAC,SAAS,GAAG,CAAC,IAAI,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC;GAC1D;;EAED,IAAI,aAAa,GAAG,IAAI,KAAK,iBAAiB,IAAI,IAAI,KAAK,gBAAgB;MACvE,cAAc;MACd,SAAS,CAAC;;EAEd,IAAI,aAAa,EAAE;IACjB,cAAc,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAClD,SAAS,GAAG,cAAc,KAAK,CAAC,CAAC,CAAC;GACnC;;EAED,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,SAAS,KAAK,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;IAC/F,OAAO,GAAG,KAAK,CAAC;GACjB;;EAED,IAAI,SAAS,IAAI,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE;IACrD,KAAK,CAAC,IAAI,GAAG,OAAO,GAAG,cAAc,CAAC;GACvC,MAAM;IACL,IAAI,aAAa,IAAI,SAAS,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE;MACvE,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;KAC7C;IACD,IAAI,IAAI,KAAK,iBAAiB,EAAE;MAC9B,IAAI,KAAK,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;QACnD,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrD,IAAI,SAAS,EAAE;UACb,KAAK,CAAC,IAAI,GAAG,OAAO,GAAG,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC;SACpD;OACF,MAAM;QACL,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,SAAS,EAAE;UACb,KAAK,CAAC,IAAI,GAAG,OAAO,GAAG,cAAc,GAAG,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC;SAC1D;OACF;KACF,MAAM,IAAI,IAAI,KAAK,gBAAgB,EAAE;MACpC,IAAI,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;QACtC,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACtD,IAAI,SAAS,EAAE;UACb,KAAK,CAAC,IAAI,GAAG,OAAO,GAAG,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC;SACpD;OACF,MAAM;QACL,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,SAAS,EAAE;UACb,KAAK,CAAC,IAAI,GAAG,OAAO,GAAG,cAAc,GAAG,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC;SAC1D;OACF;KACF,MAAM,IAAI,IAAI,KAAK,iBAAiB,EAAE;MACrC,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;QACrB,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;OAC9C;KACF,MAAM;MACL,IAAI,KAAK,CAAC,WAAW,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;MACpC,MAAM,IAAIhB,eAAa,CAAC,yCAAyC,GAAG,IAAI,CAAC,CAAC;KAC3E;;IAED,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;MAC3C,KAAK,CAAC,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;KACnD;GACF;;EAED,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,sBAAsB,CAAC,MAAM,EAAE,KAAK,EAAE;EAC7C,IAAI,OAAO,GAAG,EAAE;MACZ,iBAAiB,GAAG,EAAE;MACtB,KAAK;MACL,MAAM,CAAC;;EAEX,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;;EAEhD,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IAC7E,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;GAC1D;EACD,KAAK,CAAC,cAAc,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;CAC1C;;AAED,SAAS,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE;EACvD,IAAI,aAAa;MACb,KAAK;MACL,MAAM,CAAC;;EAEX,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;IACjD,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;MAChB,IAAI,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;QAC3C,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;OAC/B;KACF,MAAM;MACL,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;MAErB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACzB,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;UAClE,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;SACxD;OACF,MAAM;QACL,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;QAEpC,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;UACzE,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;SACvE;OACF;KACF;GACF;CACF;;AAED,SAAS2B,MAAI,CAAC,KAAK,EAAE,OAAO,EAAE;EAC5B,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;;EAExB,IAAI,KAAK,GAAG,IAAID,OAAK,CAAC,OAAO,CAAC,CAAC;;EAE/B,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAA,sBAAsB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAA;;EAExD,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,EAAA;;EAErE,OAAO,EAAE,CAAC;CACX;;AAED,SAASE,UAAQ,CAAC,KAAK,EAAE,OAAO,EAAE;EAChC,OAAOD,MAAI,CAAC,KAAK,EAAE1B,QAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAEmB,qBAAmB,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;CAC7E;;AAED,aAA0BO,MAAI,CAAC;AAC/B,iBAA0BC,UAAQ,CAAC;;;;;;;AC7xBnC,IAAI,MAAM,GAAG1B,QAA2B,CAAC;AACzC,IAAI,MAAM,GAAGI,QAA2B,CAAC;;;AAGzC,SAAS,UAAU,CAAC,IAAI,EAAE;EACxB,OAAO,YAAY;IACjB,MAAM,IAAI,KAAK,CAAC,WAAW,GAAG,IAAI,GAAG,oCAAoC,CAAC,CAAC;GAC5E,CAAC;CACH;;;AAGD,WAAqCC,IAAyB,CAAC;AAC/D,aAAqCI,MAA2B,CAAC;AACjE,sBAAqCC,QAAoC,CAAC;AAC1E,kBAAqCC,IAAgC,CAAC;AACtE,kBAAqCI,IAAgC,CAAC;AACtE,0BAAqCC,YAAwC,CAAC;AAC9E,0BAAqCW,YAAwC,CAAC;AAC9E,WAAqC,MAAM,CAAC,IAAI,CAAC;AACjD,cAAqC,MAAM,CAAC,OAAO,CAAC;AACpD,eAAqC,MAAM,CAAC,QAAQ,CAAC;AACrD,kBAAqC,MAAM,CAAC,WAAW,CAAC;AACxD,WAAqC,MAAM,CAAC,IAAI,CAAC;AACjD,eAAqC,MAAM,CAAC,QAAQ,CAAC;AACrD,oBAAqCC,SAA8B,CAAC;;;AAGpE,qBAAgClB,QAAoC,CAAC;AACrE,kBAAgCM,YAAwC,CAAC;AACzE,qBAAgCW,YAAwC,CAAC;;;AAGzE,aAAgC,UAAU,CAAC,MAAM,CAAC,CAAC;AACnD,cAAgC,UAAU,CAAC,OAAO,CAAC,CAAC;AACpD,cAAgC,UAAU,CAAC,SAAS,CAAC,CAAC;AACtD,qBAAgC,UAAU,CAAC,gBAAgB,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;ACnC7D,IAAI,IAAI,GAAG3B,MAA2B,CAAC;;;AAGvC,SAAc,GAAG,IAAI,CAAC;;ACJtB,kBAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjCJ,IAAI,SAAS,GAAG,EAAE,CAAC;EACnBA,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,kCAAkC,CAAC,CAAC;EAC/D,IAAI,EAAE,EAAE;IACNA,IAAI,IAAI,GAAG,EAAE,CAAC,WAAW,CAAC;IAC1B,SAAS,GAAGiC,KAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;GACrC;;EAED,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,GAAG,UAAU,CAAC;EAC5D,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,GAAG,iBAAiB,CAAC;;EAErF,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,GAAG,EAAE,CAAC;;EAE1D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,MAAM,EAAE,CAAC,EAAE;IAC1CjC,IAAI,CAAC,GAAG,EAAE,CAAC;IACXA,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,CAAC,OAAO,MAAM,CAAC,KAAK,QAAQ,EAAE;MAChC,IAAI,GAAG,MAAM,CAAC;KACf,MAAM;MACL,CAAC,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;KAC9B;IACDA,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;IACd,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzD,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACpC,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;MAC5BA,IAAI,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC5D,IAAI,CAAC,OAAO,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;QACnD,WAAW,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;OACxC,MAAM;QACL,CAAC,CAAC,cAAc,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;OAC3D;MACD,CAAC,CAAC,WAAW,GAAG,WAAW,CAAC;KAC7B;IACD,OAAO,CAAC,CAAC;GACV,CAAC,CAAC;;;CAGJ,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;ACjBD,CAAC,SAAS,OAAO,EAAE;;IAEf,SAAS,YAAY,GAAG;;QAEpB,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACnG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,EAAE,CAAC;;QAE3B,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;;QAEvB,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,EAAE;YACxB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;SAClB,CAAC;;QAEF,IAAI,CAAC,UAAU,GAAG,WAAW;YACzB,OAAO,IAAI,CAAC,OAAO,CAAC;SACvB,CAAC;;QAEF,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,EAAE;YAC5B,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE;SAC5D,CAAC;;QAEF,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,EAAE,aAAa,EAAE;YACpC,IAAI,aAAa,IAAI,SAAS,IAAI,aAAa,IAAI,IAAI;gBACnD,EAAA,aAAa,GAAG,IAAI,CAAC,EAAA;YACzB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YACnC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBAC1D,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC;aACxB,MAAM;gBACH,MAAM,2BAA2B,GAAG,CAAC,GAAG,UAAU;0BACxC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAC5C,AAAC;YACF,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;SACtC,CAAC;;QAEF,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,EAAE,aAAa,EAAE;YACvC,IAAI,aAAa,IAAI,SAAS,IAAI,aAAa,IAAI,IAAI;gBACnD,EAAA,aAAa,GAAG,IAAI,CAAC,EAAA;YACzB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YACnC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBAC1D,OAAO,IAAI,CAAC;aACf,MAAM;gBACH,OAAO,KAAK,CAAC;aAChB,AAAC;YACF,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;SACtC,CAAC;;;QAGF,IAAI,CAAC,OAAO,GAAG,WAAW;;;YACtB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE;gBAChEM,MAAI,CAAC,GAAG,EAAE,CAAC;aACd,AAAC;;YAEF,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE;gBAC7B,OAAO,IAAI,CAAC;aACf,AAAC;YACF,OAAO,KAAK,CAAC;SAChB,CAAC;;QAEF,IAAI,CAAC,cAAc,GAAG,SAAS,aAAa,EAAE;;;YAC1C,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;gBAC5CA,MAAI,CAAC,GAAG,EAAE,CAAC;aACd,AAAC;YACF,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,aAAa,IAAI,IAAI,EAAE;gBACtD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;oBACjCA,MAAI,CAAC,GAAG,EAAE,CAAC;iBACd,AAAC;gBACF,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;aACtC,AAAC;SACL,CAAC;;QAEF,IAAI,CAAC,YAAY,GAAG,WAAW;;;YAC3B,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACvB,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;YACrB,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,OAAO,IAAI,EAAE;gBACT,IAAI,CAAC,OAAO,EAAE;oBACV,IAAIA,MAAI,CAAC,KAAK,CAACA,MAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE;wBAC7B,IAAI,UAAU,GAAG,CAAC,EAAE;4BAChB,UAAU,EAAE,CAAC;yBAChB,MAAM;4BACH,IAAI,GAAG,GAAGA,MAAI,CAAC,GAAG,CAAC;4BACnBA,MAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;4BACvB,OAAOA,MAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;yBAC3C,AAAC;qBACL,MAAM,IAAIA,MAAI,CAAC,KAAK,CAACA,MAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE;wBACpC,UAAU,EAAE,CAAC;qBAChB,MAAM,IAAIA,MAAI,CAAC,GAAG,IAAIA,MAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC1C,MAAM,oBAAoB,CAAC;qBAC9B,AAAC;iBACL,AAAC;gBACF,IAAIA,MAAI,CAAC,KAAK,CAACA,MAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK;oBAChD,EAAA,OAAO,GAAG,IAAI,CAAC,EAAA;;oBAEf,EAAA,OAAO,GAAG,KAAK,CAAC,EAAA;gBACpBA,MAAI,CAAC,GAAG,EAAE,CAAC;aACd,AAAC;SACL,CAAC;;QAEF,IAAI,CAAC,aAAa,GAAG,WAAW;;;YAC5B,IAAI,GAAG,GAAG,EAAE,CAAC;YACb,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,QAAQ,IAAI,CAAC,CAAC,EAAE;gBAClD,GAAG,GAAG,GAAG,GAAGA,MAAI,CAAC,KAAK,CAACA,MAAI,CAAC,GAAG,CAAC,CAAC;gBACjC,IAAIA,MAAI,CAAC,KAAK,CAACA,MAAI,CAAC,GAAG,CAAC,IAAI,GAAG;oBAC3B,EAAA,QAAQ,EAAE,CAAC,EAAA;gBACf,IAAIA,MAAI,CAAC,KAAK,CAACA,MAAI,CAAC,GAAG,CAAC,IAAI,GAAG;oBAC3B,EAAA,QAAQ,EAAE,CAAC,EAAA;gBACf,IAAIA,MAAI,CAAC,GAAG,IAAIA,MAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;oBACnC,MAAM,qBAAqB,GAAGA,MAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;iBAC7D,AAAC;gBACFA,MAAI,CAAC,GAAG,EAAE,CAAC;aACd,AAAC;YACF,OAAO,GAAG,CAAC;SACd,CAAC;;QAEF,IAAI,CAAC,YAAY,GAAG,WAAW;;;YAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACvB,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;YACrB,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,OAAO,IAAI,EAAE;gBACT,IAAI,CAAC,OAAO,EAAE;oBACV,IAAIA,MAAI,CAAC,KAAK,CAACA,MAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE;wBAC7B,IAAI,GAAG,GAAGA,MAAI,CAAC,GAAG,CAAC;wBACnBA,MAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;wBACvB,OAAOA,MAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;qBAC3C,MAAM,IAAIA,MAAI,CAAC,GAAG,IAAIA,MAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC1C,MAAM,qBAAqB,GAAGA,MAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;qBAC7D,AAAC;iBACL;gBACD,IAAIA,MAAI,CAAC,KAAK,CAACA,MAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK;oBAChD,EAAA,OAAO,GAAG,IAAI,CAAC,EAAA;;oBAEf,EAAA,OAAO,GAAG,KAAK,CAAC,EAAA;gBACpBA,MAAI,CAAC,GAAG,EAAE,CAAC;aACd,AAAC;SACL,CAAC;;QAEF,IAAI,CAAC,YAAY,GAAG,WAAW;YAC3B,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;YACrB,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACpB,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;aAC9B,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBAC3B,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;aAC9B,MAAM;gBACH,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACnB,IAAI,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;oBACnB,EAAA,OAAO,CAAC,CAAC,EAAA;qBACR,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC;oBAC9C,EAAA,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,EAAA;;oBAEvB,EAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,YAAY,GAAG,CAAC,CAAC,EAAA;;aAEhF,AAAC;SACL,CAAC;;QAEF,IAAI,CAAC,KAAK,GAAG,WAAW;;;YACpB,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;YACjC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACvBA,MAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChB,MAAM,CAAC,IAAI,CAACA,MAAI,CAAC,YAAY,EAAE,CAAC,CAAC;aACpC,AAAC;YACF,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAC1B,CAAC;;QAEF,IAAI,CAAC,GAAG,GAAG,WAAW;;;YAClB,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;YACrB,OAAO,IAAI,EAAE;gBACT,IAAIA,MAAI,CAAC,GAAG,IAAIA,MAAI,CAAC,KAAK,CAAC,MAAM,EAAE;oBAC/B,MAAM,aAAa,CAAC;iBACvB,AAAC;;;gBAGF,IAAIA,MAAI,CAAC,MAAM,CAAC,OAAO,CAACA,MAAI,CAAC,KAAK,CAACA,MAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE;oBAChD,OAAOA,MAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAEA,MAAI,CAAC,GAAG,CAAC,CAAC;iBAChD,MAAM;oBACHA,MAAI,CAAC,GAAG,EAAE,CAAC;;iBAEd,AAAC;aACL,AAAC;SACL,CAAC;;QAEF,IAAI,CAAC,gBAAgB,GAAG,WAAW;YAC/B,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACrB,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACpB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChB,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;gBACvB,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;aACvB,MAAM;gBACH,MAAM,4CAA4C;0BACxC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAC5C,AAAC;SACL,CAAC;;QAEF,IAAI,CAAC,cAAc,GAAG,WAAW;;;YAC7B,IAAI,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACjC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;YACpC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9C,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACvBA,MAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;gBAEhB,IAAIA,MAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBACpB,MAAM;iBACT;gBACD,AAAC;gBACD,EAAE,GAAGA,MAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC7BA,MAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;aACjD,AAAC;SACL,CAAC;;QAEF,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,EAAE;YAC1B,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC9C,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAChD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAChB,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACxC,CAAC;;QAEF,IAAI,CAAC,SAAS,GAAG,WAAW;YACxB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAChB,OAAO,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;SAC3B,CAAC;;QAEF,IAAI,CAAC,QAAQ,GAAG,WAAW;YACvB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC;YAC5C,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YAClD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACxC,CAAC;;QAEF,IAAI,CAAC,OAAO,GAAG,WAAW;YACtB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC;YAC3C,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YAClD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACxC,CAAC;;QAEF,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,EAAE;YACrB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SACtB,CAAC;;QAEF,IAAI,CAAC,MAAM,GAAG,WAAW;;;YACrB,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE;gBACnB,IAAI,CAAC,GAAGA,MAAI,CAAC,SAAS,EAAE,CAAC;gBACzBA,MAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChB,IAAI,CAAC,IAAI,SAAS,EAAE;oBAChBA,MAAI,CAAC,MAAM,EAAE,CAAC;iBACjB,MAAM,IAAI,CAAC,IAAI,WAAW,EAAE;oBACzBA,MAAI,CAAC,QAAQ,EAAE,CAAC;iBACnB,MAAM,IAAI,CAAC,IAAI,UAAU,EAAE;oBACxBA,MAAI,CAAC,OAAO,EAAE,CAAC;iBAClB,MAAM;oBACHA,MAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;iBACjB;gBACDA,MAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;aACnB,AAAC;SACL,CAAC;KACL,AAAC;;IAEF,OAAO,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE;QAC9B,IAAI,CAAC,GAAG,IAAI,YAAY,EAAE,CAAC;QAC3B,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnB,CAAC,CAAC,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,CAAC,OAAO,CAAC;KACpB,CAAC;;;IAGF,OAAO,CAAC,QAAQ,GAAG,SAAS,IAAI,EAAE;QAC9B,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,CAAC,IAAI,IAAI,EAAE;YACjB,GAAG,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC/B,GAAG,IAAI,GAAG,CAAC;YACX,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW;gBACnB,EAAA,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,EAAA;YACtC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK;gBACb,EAAA,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAA;YAC1B,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE;gBACnB,IAAI,IAAI,GAAG,EAAE,CAAC;gBACd,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE;oBAC/B,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;wBAChB,EAAA,IAAI,IAAI,IAAI,CAAC,EAAA;oBACjB,IAAI,IAAI,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;iBACtD;gBACD,GAAG,IAAI,IAAI,CAAC;aACf;YACD,GAAG,IAAI,OAAO,CAAC;SAClB;QACD,OAAO,GAAG,CAAC;;KAEd,CAAC;;CAEL,EAAE,AAA4D,OAAO,CAAC,CAAC;;;;;AC7TxE,mBAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjCN,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,kCAAkC,CAAC,CAAC;EAC/DA,IAAI,SAAS,GAAG,EAAE,CAAC;EACnBA,IAAI,YAAY,GAAG,EAAE,CAAC;;EAEtB,IAAI,EAAE,EAAE;IACNA,IAAI,MAAM,GAAG,EAAE,CAAC,WAAW,CAAC;IAC5BA,IAAI,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACxC,GAAG,MAAM,EAAE;MACT,MAAM,CAAC,OAAO,CAAC,UAAA,CAAC,EAAC;QACf,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;UACxB,IAAI,GAAG,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;UACzB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;UACpC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,oCAAoC;4BACpC,UAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,SAAG,IAAI,GAAA,CAAC,CAAC;UAC3C,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,iBAAiB;4BACjB,UAAC,IAAI,EAAE,IAAI,EAAE,SAAG,IAAI,GAAA,CAAC,CAAC;UACxC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;SACtB;QACD,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;QAC1C,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC;OAChD,CAAC,CAAC;KACJ;;;IAGD,IAAI,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/D,QAAQ,CAAC,OAAO,CAAC,UAAA,EAAE,EAAC;MAClBA,IAAI,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;MACjC,IAAI,GAAG,EAAE;QACPA,IAAI,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClC,YAAY,CAAC,OAAO,CAAC,UAAA,GAAG,EAAC;UACvB,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/B,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpB,IAAI,CAAC,CAAC,GAAG,IAAI,YAAY,CAAC,CAAC;cACzB,OAAO,CAAC,IAAI,CAAC,mCAAmC,GAAG,GAAG,CAAC,CAAC;aACzD;WACF;SACF,CAAC,CAAC;OACJ;KACF,CAAC,CAAC;GACJ;EACD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;EACjC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;CAC5B,CAAA;;AC7CD,IAAI,EAAE,GAAG,IAAI,IAAI;IACb,EAAE,GAAG,IAAI,IAAI,CAAC;;AAElB,AAAe,SAAS,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;;EAEjE,SAAS,QAAQ,CAAC,IAAI,EAAE;IACtB,OAAO,MAAM,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;GAC7C;;EAED,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC;;EAE1B,QAAQ,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE;IAC7B,OAAO,MAAM,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;GAChF,CAAC;;EAEF,QAAQ,CAAC,KAAK,GAAG,SAAS,IAAI,EAAE;IAC9B,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC;QACnB,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC;GACxC,CAAC;;EAEF,QAAQ,CAAC,MAAM,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE;IACrC,OAAO,OAAO,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;GACnF,CAAC;;EAEF,QAAQ,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE;IAC3C,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;IACjD,GAAG,EAAA,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAA,QAAQ,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IAC1F,OAAO,KAAK,CAAC;GACd,CAAC;;EAEF,QAAQ,CAAC,MAAM,GAAG,SAAS,IAAI,EAAE;IAC/B,OAAO,WAAW,CAAC,SAAS,IAAI,EAAE;MAChC,IAAI,IAAI,IAAI,IAAI,EAAE,EAAA,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAA,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAA;KAC5E,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;MACtB,IAAI,IAAI,IAAI,IAAI,EAAE,EAAA,OAAO,EAAE,IAAI,IAAI,CAAC,EAAE,EAAA,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,IAAA;KAC/E,CAAC,CAAC;GACJ,CAAC;;EAEF,IAAI,KAAK,EAAE;IACT,QAAQ,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;MACpC,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;MACrC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;MACvB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;KAClC,CAAC;;IAEF,QAAQ,CAAC,KAAK,GAAG,SAAS,IAAI,EAAE;MAC9B,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;MACxB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI;YACtC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ;YACtB,QAAQ,CAAC,MAAM,CAAC,KAAK;gBACjB,SAAS,CAAC,EAAE,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE;gBAC7C,SAAS,CAAC,EAAE,EAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;KACtE,CAAC;GACH;;EAED,OAAO,QAAQ,CAAC;CACjB;;AC1DD,IAAI,WAAW,GAAGkC,WAAQ,CAAC,WAAW;;CAErC,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;EACtB,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;CAC5B,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;EACtB,OAAO,GAAG,GAAG,KAAK,CAAC;CACpB,CAAC,CAAC;;;AAGH,WAAW,CAAC,KAAK,GAAG,SAAS,CAAC,EAAE;EAC9B,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EAClB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;EAC1C,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAA,OAAO,WAAW,CAAC,EAAA;EACjC,OAAOA,WAAQ,CAAC,SAAS,IAAI,EAAE;IAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;GACxC,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;IACtB,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;GAChC,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;IACtB,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;GAC1B,CAAC,CAAC;CACJ,CAAC,AAEF,AACA,AAAO,AAAqC;;ACzBrC,IAAI,cAAc,GAAG,GAAG,CAAC;AAChC,AAAO,IAAI,cAAc,GAAG,GAAG,CAAC;AAChC,AAAO,IAAI,YAAY,GAAG,IAAI,CAAC;AAC/B,AAAO,IAAI,WAAW,GAAG,KAAK,CAAC;AAC/B,AAAO,IAAI,YAAY,GAAG,MAAM,CAAC;;ACDjC,IAAI,MAAM,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;EACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,cAAc,CAAC,GAAG,cAAc,CAAC,CAAC;CAClE,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;EACtB,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,cAAc,CAAC,CAAC;CAC7C,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;EACtB,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,cAAc,CAAC;CACvC,EAAE,SAAS,IAAI,EAAE;EAChB,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;CAC7B,CAAC,CAAC,AAEH,AACA,AAAO,AAA2B;;ACXlC,IAAI,MAAM,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;EACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,cAAc,CAAC,GAAG,cAAc,CAAC,CAAC;CAClE,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;EACtB,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,cAAc,CAAC,CAAC;CAC7C,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;EACtB,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,cAAc,CAAC;CACvC,EAAE,SAAS,IAAI,EAAE;EAChB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;CAC1B,CAAC,CAAC,AAEH,AACA,AAAO,AAA2B;;ACXlC,IAAI,IAAI,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;EACjC,IAAI,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE,GAAG,cAAc,GAAG,YAAY,CAAC;EACtE,IAAI,MAAM,GAAG,CAAC,EAAE,EAAA,MAAM,IAAI,YAAY,CAAC,EAAA;EACvC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,YAAY,CAAC,GAAG,YAAY,GAAG,MAAM,CAAC,CAAC;CACnF,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;EACtB,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,YAAY,CAAC,CAAC;CAC3C,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;EACtB,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,YAAY,CAAC;CACrC,EAAE,SAAS,IAAI,EAAE;EAChB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;CACxB,CAAC,CAAC,AAEH,AACA,AAAO,AAAuB;;ACb9B,IAAI,GAAG,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;EAChC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC3B,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;EACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;CACrC,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;EACtB,OAAO,CAAC,GAAG,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE,GAAG,KAAK,CAAC,iBAAiB,EAAE,CAAC,GAAG,cAAc,CAAC,GAAG,WAAW,CAAC;CAC7G,EAAE,SAAS,IAAI,EAAE;EAChB,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;CAC3B,CAAC,CAAC,AAEH,AACA,AAAO,AAAqB;;ACX5B,SAAS,OAAO,CAAC,CAAC,EAAE;EAClB,OAAOA,WAAQ,CAAC,SAAS,IAAI,EAAE;IAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3D,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;GAC3B,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;IACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;GACzC,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;IACtB,OAAO,CAAC,GAAG,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE,GAAG,KAAK,CAAC,iBAAiB,EAAE,CAAC,GAAG,cAAc,CAAC,GAAG,YAAY,CAAC;GAC9G,CAAC,CAAC;CACJ;;AAED,AAAO,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/B,AAAO,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/B,AAAO,IAAI,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAChC,AAAO,IAAI,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAClC,AAAO,IAAI,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AACjC,AAAO,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/B,AAAO,IAAI,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,AAEjC,AAAO,AAA2B,AAClC,AAAO,AAA2B,AAClC,AAAO,AAA6B,AACpC,AAAO,AAAiC,AACxC,AAAO,AAA+B,AACtC,AAAO,AAA2B,AAClC,AAAO,AAA+B;;AC1BtC,IAAI,KAAK,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;EAClC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EAChB,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC3B,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;EACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC;CACvC,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;EACtB,OAAO,GAAG,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC;CAC3F,EAAE,SAAS,IAAI,EAAE;EAChB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;CACxB,CAAC,CAAC,AAEH,AACA,AAAO,AAAyB;;ACZhC,IAAI,IAAI,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;EACjC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EACpB,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC3B,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;EACtB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,CAAC;CAC7C,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;EACtB,OAAO,GAAG,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;CAChD,EAAE,SAAS,IAAI,EAAE;EAChB,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;CAC3B,CAAC,CAAC;;;AAGH,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,EAAE;EACvB,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;IAC/E,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpB,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;GAC3B,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;IACtB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;GACjD,CAAC,CAAC;CACJ,CAAC,AAEF,AACA,AAAO,AAAuB;;ACtB9B,IAAI,SAAS,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;EACtC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAC1B,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;EACtB,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,cAAc,CAAC,CAAC;CAC7C,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;EACtB,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,cAAc,CAAC;CACvC,EAAE,SAAS,IAAI,EAAE;EAChB,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;CAC7B,CAAC,CAAC,AAEH,AACA,AAAO,AAAiC;;ACXxC,IAAI,OAAO,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;EACpC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC7B,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;EACtB,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,YAAY,CAAC,CAAC;CAC3C,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;EACtB,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,YAAY,CAAC;CACrC,EAAE,SAAS,IAAI,EAAE;EAChB,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;CAC3B,CAAC,CAAC,AAEH,AACA,AAAO,AAA6B;;ACXpC,IAAI,MAAM,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;EACnC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC9B,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;EACtB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,CAAC;CAC3C,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;EACtB,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,WAAW,CAAC;CACpC,EAAE,SAAS,IAAI,EAAE;EAChB,OAAO,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;CAC9B,CAAC,CAAC,AAEH,AACA,AAAO,AAA2B;;ACXlC,SAAS,UAAU,CAAC,CAAC,EAAE;EACrB,OAAOA,WAAQ,CAAC,SAAS,IAAI,EAAE;IAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACpE,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;GAC9B,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;IACtB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;GAC/C,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;IACtB,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,YAAY,CAAC;GACrC,CAAC,CAAC;CACJ;;AAED,AAAO,IAAI,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACrC,AAAO,IAAI,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACrC,AAAO,IAAI,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACtC,AAAO,IAAI,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACxC,AAAO,IAAI,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACvC,AAAO,IAAI,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACrC,AAAO,IAAI,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,AAEvC,AAAO,AAAiC,AACxC,AAAO,AAAiC,AACxC,AAAO,AAAmC,AAC1C,AAAO,AAAuC,AAC9C,AAAO,AAAqC,AAC5C,AAAO,AAAiC,AACxC,AAAO,AAAqC;;AC1B5C,IAAI,QAAQ,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;EACrC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;EACnB,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC9B,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;EACtB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,CAAC;CAC7C,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;EACtB,OAAO,GAAG,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE,CAAC;CACvG,EAAE,SAAS,IAAI,EAAE;EAChB,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;CAC3B,CAAC,CAAC,AAEH,AACA,AAAO,AAA+B;;ACZtC,IAAI,OAAO,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;EACpC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EACvB,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC9B,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;EACtB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,CAAC;CACnD,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;EACtB,OAAO,GAAG,CAAC,cAAc,EAAE,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;CACtD,EAAE,SAAS,IAAI,EAAE;EAChB,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;CAC9B,CAAC,CAAC;;;AAGH,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,EAAE;EAC1B,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;IAC/E,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvB,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;GAC9B,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;IACtB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;GACvD,CAAC,CAAC;CACJ,CAAC,AAEF,AACA,AAAO,AAA6B;;ACvBpC,SAAS,SAAS,CAAC,CAAC,EAAE;EACpB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE;IACzB,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtB,OAAO,IAAI,CAAC;GACb;EACD,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;CACpD;;AAED,SAAS,OAAO,CAAC,CAAC,EAAE;EAClB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE;IACzB,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzB,OAAO,IAAI,CAAC;GACb;EACD,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC9D;;AAED,SAAS,OAAO,CAAC,CAAC,EAAE;EAClB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACnD;;AAED,AAAe,SAAS,YAAY,CAAC,MAAM,EAAE;EAC3C,IAAI,eAAe,GAAG,MAAM,CAAC,QAAQ;MACjC,WAAW,GAAG,MAAM,CAAC,IAAI;MACzB,WAAW,GAAG,MAAM,CAAC,IAAI;MACzB,cAAc,GAAG,MAAM,CAAC,OAAO;MAC/B,eAAe,GAAG,MAAM,CAAC,IAAI;MAC7B,oBAAoB,GAAG,MAAM,CAAC,SAAS;MACvC,aAAa,GAAG,MAAM,CAAC,MAAM;MAC7B,kBAAkB,GAAG,MAAM,CAAC,WAAW,CAAC;;EAE5C,IAAI,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC;MACnC,YAAY,GAAG,YAAY,CAAC,cAAc,CAAC;MAC3C,SAAS,GAAG,QAAQ,CAAC,eAAe,CAAC;MACrC,aAAa,GAAG,YAAY,CAAC,eAAe,CAAC;MAC7C,cAAc,GAAG,QAAQ,CAAC,oBAAoB,CAAC;MAC/C,kBAAkB,GAAG,YAAY,CAAC,oBAAoB,CAAC;MACvD,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC;MACjC,WAAW,GAAG,YAAY,CAAC,aAAa,CAAC;MACzC,YAAY,GAAG,QAAQ,CAAC,kBAAkB,CAAC;MAC3C,gBAAgB,GAAG,YAAY,CAAC,kBAAkB,CAAC,CAAC;;EAExD,IAAI,OAAO,GAAG;IACZ,GAAG,EAAE,kBAAkB;IACvB,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,gBAAgB;IACrB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,gBAAgB;IACrB,GAAG,EAAE,gBAAgB;IACrB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,kBAAkB;IACvB,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,sBAAsB;IAC3B,GAAG,EAAE,mBAAmB;IACxB,GAAG,EAAE,sBAAsB;IAC3B,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,cAAc;IACnB,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,oBAAoB;GAC1B,CAAC;;EAEF,IAAI,UAAU,GAAG;IACf,GAAG,EAAE,qBAAqB;IAC1B,GAAG,EAAE,gBAAgB;IACrB,GAAG,EAAE,mBAAmB;IACxB,GAAG,EAAE,cAAc;IACnB,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,mBAAmB;IACxB,GAAG,EAAE,mBAAmB;IACxB,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,kBAAkB;IACvB,GAAG,EAAE,qBAAqB;IAC1B,GAAG,EAAE,oBAAoB;IACzB,GAAG,EAAE,gBAAgB;IACrB,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,gBAAgB;IACrB,GAAG,EAAE,yBAAyB;IAC9B,GAAG,EAAE,sBAAsB;IAC3B,GAAG,EAAE,yBAAyB;IAC9B,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,oBAAoB;GAC1B,CAAC;;EAEF,IAAI,MAAM,GAAG;IACX,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,mBAAmB;IACxB,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,cAAc;IACnB,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,gBAAgB;IACrB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,qBAAqB;IAC1B,GAAG,EAAE,kBAAkB;IACvB,GAAG,EAAE,qBAAqB;IAC1B,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,mBAAmB;GACzB,CAAC;;;EAGF,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;EAC5C,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;EAC5C,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;EAChD,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;EAClD,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;EAClD,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;;EAEtD,SAAS,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE;IACrC,OAAO,SAAS,IAAI,EAAE;MACpB,IAAI,MAAM,GAAG,EAAE;UACX,CAAC,GAAG,CAAC,CAAC;UACN,CAAC,GAAG,CAAC;UACL,CAAC,GAAG,SAAS,CAAC,MAAM;UACpB,CAAC;UACD,GAAG;UACH,MAAM,CAAC;;MAEX,IAAI,CAAC,CAAC,IAAI,YAAY,IAAI,CAAC,EAAE,EAAA,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAA;;MAEpD,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE;QACd,IAAI,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;UAClC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;UACnC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,EAAA,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAA;eAC1E,EAAA,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAA;UACjC,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,EAAA,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,EAAA;UAC/C,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;UACf,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SACX;OACF;;MAED,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;MACnC,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACxB,CAAC;GACH;;EAED,SAAS,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE;IACpC,OAAO,SAAS,MAAM,EAAE;MACtB,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;UACjB,CAAC,GAAG,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;MACtD,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;;;MAGpC,IAAI,GAAG,IAAI,CAAC,EAAE,EAAA,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAA;;;MAGxC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE;QACxB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,EAAA,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAA;QACxC,IAAIC,MAAG,GAAG,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QACxF,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACR,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAACA,MAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAACA,MAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;OAC1F;;;;MAID,IAAI,GAAG,IAAI,CAAC,EAAE;QACZ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QACjB,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;OACnB;;;MAGD,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;KACnB,CAAC;GACH;;EAED,SAAS,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE;IAC/C,IAAI,CAAC,GAAG,CAAC;QACL,CAAC,GAAG,SAAS,CAAC,MAAM;QACpB,CAAC,GAAG,MAAM,CAAC,MAAM;QACjB,CAAC;QACD,KAAK,CAAC;;IAEV,OAAO,CAAC,GAAG,CAAC,EAAE;MACZ,IAAI,CAAC,IAAI,CAAC,EAAE,EAAA,OAAO,CAAC,CAAC,CAAC,EAAA;MACtB,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;MAC9B,IAAI,CAAC,KAAK,EAAE,EAAE;QACZ,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1B,KAAK,GAAG,MAAM,CAAC,CAAC,IAAI,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAA,OAAO,CAAC,CAAC,CAAC,EAAA;OAC1D,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE;QACtC,OAAO,CAAC,CAAC,CAAC;OACX;KACF;;IAED,OAAO,CAAC,CAAC;GACV;;EAED,SAAS,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACjC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;GAC3E;;EAED,SAAS,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACvC,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;GACjF;;EAED,SAAS,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IAClC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;GAC5E;;EAED,SAAS,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACrC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;GAC/E;;EAED,SAAS,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IAChC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;GAC1E;;EAED,SAAS,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACzC,OAAO,cAAc,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;GACtD;;EAED,SAAS,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACrC,OAAO,cAAc,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;GAClD;;EAED,SAAS,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACrC,OAAO,cAAc,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;GAClD;;EAED,SAAS,kBAAkB,CAAC,CAAC,EAAE;IAC7B,OAAO,oBAAoB,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;GACzC;;EAED,SAAS,aAAa,CAAC,CAAC,EAAE;IACxB,OAAO,eAAe,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;GACpC;;EAED,SAAS,gBAAgB,CAAC,CAAC,EAAE;IAC3B,OAAO,kBAAkB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;GACzC;;EAED,SAAS,WAAW,CAAC,CAAC,EAAE;IACtB,OAAO,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;GACpC;;EAED,SAAS,YAAY,CAAC,CAAC,EAAE;IACvB,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;GAC9C;;EAED,SAAS,qBAAqB,CAAC,CAAC,EAAE;IAChC,OAAO,oBAAoB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;GAC5C;;EAED,SAAS,gBAAgB,CAAC,CAAC,EAAE;IAC3B,OAAO,eAAe,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;GACvC;;EAED,SAAS,mBAAmB,CAAC,CAAC,EAAE;IAC9B,OAAO,kBAAkB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;GAC5C;;EAED,SAAS,cAAc,CAAC,CAAC,EAAE;IACzB,OAAO,aAAa,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;GACvC;;EAED,SAAS,eAAe,CAAC,CAAC,EAAE;IAC1B,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;GACjD;;EAED,OAAO;IACL,MAAM,EAAE,SAAS,SAAS,EAAE;MAC1B,IAAI,CAAC,GAAG,SAAS,CAAC,SAAS,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;MAC5C,CAAC,CAAC,QAAQ,GAAG,WAAW,EAAE,OAAO,SAAS,CAAC,EAAE,CAAC;MAC9C,OAAO,CAAC,CAAC;KACV;IACD,KAAK,EAAE,SAAS,SAAS,EAAE;MACzB,IAAI,CAAC,GAAG,QAAQ,CAAC,SAAS,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;MAC7C,CAAC,CAAC,QAAQ,GAAG,WAAW,EAAE,OAAO,SAAS,CAAC,EAAE,CAAC;MAC9C,OAAO,CAAC,CAAC;KACV;IACD,SAAS,EAAE,SAAS,SAAS,EAAE;MAC7B,IAAI,CAAC,GAAG,SAAS,CAAC,SAAS,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;MAC/C,CAAC,CAAC,QAAQ,GAAG,WAAW,EAAE,OAAO,SAAS,CAAC,EAAE,CAAC;MAC9C,OAAO,CAAC,CAAC;KACV;IACD,QAAQ,EAAE,SAAS,SAAS,EAAE;MAC5B,IAAI,CAAC,GAAG,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;MACrC,CAAC,CAAC,QAAQ,GAAG,WAAW,EAAE,OAAO,SAAS,CAAC,EAAE,CAAC;MAC9C,OAAO,CAAC,CAAC;KACV;GACF,CAAC;CACH;;AAED,IAAI,IAAI,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACpC,QAAQ,GAAG,SAAS;IACpB,SAAS,GAAG,IAAI;IAChB,SAAS,GAAG,iCAAiC,CAAC;;AAElD,SAAS,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;EAC/B,IAAI,IAAI,GAAG,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE;MAC3B,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE;MACrC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;EAC3B,OAAO,IAAI,GAAG,CAAC,MAAM,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;CAC7F;;AAED,SAAS,OAAO,CAAC,CAAC,EAAE;EAClB,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;CACrC;;AAED,SAAS,QAAQ,CAAC,KAAK,EAAE;EACvB,OAAO,IAAI,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;CACrE;;AAED,SAAS,YAAY,CAAC,KAAK,EAAE;EAC3B,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;EACvC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,EAAA,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,EAAA;EAChD,OAAO,GAAG,CAAC;CACZ;;AAED,SAAS,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EACxC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC9C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CAChD;;AAED,SAAS,qBAAqB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EAC3C,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EACvC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CAChD;;AAED,SAAS,qBAAqB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EAC3C,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EACvC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CAChD;;AAED,SAAS,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EACnC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC9C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CAChD;;AAED,SAAS,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EAC/B,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC9C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CAC7E;;AAED,SAAS,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EAC/B,IAAI,CAAC,GAAG,+BAA+B,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACrE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CAC9E;;AAED,SAAS,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EACtC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC9C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CACnD;;AAED,SAAS,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EACrC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC9C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CAChD;;AAED,SAAS,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EACpC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC9C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CACzD;;AAED,SAAS,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EACjC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC9C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CAChD;;AAED,SAAS,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EAClC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC9C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CAChD;;AAED,SAAS,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EAClC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC9C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CAChD;;AAED,SAAS,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EACvC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC9C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CAChD;;AAED,SAAS,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EACzC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC/C,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;CACjC;;AAED,SAAS,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE;EAC9B,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC/B;;AAED,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE;EAC1B,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAChC;;AAED,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE;EAC1B,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC3C;;AAED,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE;EAC7B,OAAO,GAAG,CAAC,CAAC,GAAGC,GAAO,CAAC,KAAK,CAACC,IAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACrD;;AAED,SAAS,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE;EAChC,OAAO,GAAG,CAAC,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACvC;;AAED,SAAS,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE;EAC/B,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACpC;;AAED,SAAS,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE;EAC3B,OAAO,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAClC;;AAED,SAAS,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE;EAC3B,OAAO,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAClC;;AAED,SAAS,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE;EACpC,OAAO,GAAG,CAACC,MAAU,CAAC,KAAK,CAACD,IAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACpD;;AAED,SAAS,mBAAmB,CAAC,CAAC,EAAE;EAC9B,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;CACnB;;AAED,SAAS,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE;EACpC,OAAO,GAAG,CAACE,MAAU,CAAC,KAAK,CAACF,IAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACpD;;AAED,SAAS,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE;EACxB,OAAO,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACzC;;AAED,SAAS,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE;EAC5B,OAAO,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC3C;;AAED,SAAS,UAAU,CAAC,CAAC,EAAE;EACrB,IAAI,CAAC,GAAG,CAAC,CAAC,iBAAiB,EAAE,CAAC;EAC9B,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC/B,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QACvB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;CAC3B;;AAED,SAAS,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE;EACjC,OAAO,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAClC;;AAED,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE;EAC7B,OAAO,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACnC;;AAED,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE;EAC7B,OAAO,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC9C;;AAED,SAAS,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE;EAChC,OAAO,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACnD;;AAED,SAAS,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE;EACnC,OAAO,GAAG,CAAC,CAAC,CAAC,kBAAkB,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC1C;;AAED,SAAS,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE;EAClC,OAAO,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACvC;;AAED,SAAS,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE;EAC9B,OAAO,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACrC;;AAED,SAAS,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE;EAC9B,OAAO,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACrC;;AAED,SAAS,yBAAyB,CAAC,CAAC,EAAE,CAAC,EAAE;EACvC,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAClD;;AAED,SAAS,sBAAsB,CAAC,CAAC,EAAE;EACjC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;CACtB;;AAED,SAAS,yBAAyB,CAAC,CAAC,EAAE,CAAC,EAAE;EACvC,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAClD;;AAED,SAAS,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE;EAC3B,OAAO,GAAG,CAAC,CAAC,CAAC,cAAc,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC5C;;AAED,SAAS,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE;EAC/B,OAAO,GAAG,CAAC,CAAC,CAAC,cAAc,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC9C;;AAED,SAAS,aAAa,GAAG;EACvB,OAAO,OAAO,CAAC;CAChB;;AAED,SAAS,oBAAoB,GAAG;EAC9B,OAAO,GAAG,CAAC;CACZ;;AC9gBD,IAAIG,QAAM,CAAC;AACX,AAAO,IAAI,UAAU,CAAC;AACtB,AAAO,IAAI,SAAS,CAAC;AACrB,AAAO,IAAI,SAAS,CAAC;AACrB,AAAO,IAAI,QAAQ,CAAC;;AAEpB,aAAa,CAAC;EACZ,QAAQ,EAAE,QAAQ;EAClB,IAAI,EAAE,YAAY;EAClB,IAAI,EAAE,cAAc;EACpB,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;EACrB,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC;EACpF,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;EAC5D,MAAM,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC;EAClI,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;CAClG,CAAC,CAAC;;AAEH,AAAe,SAAS,aAAa,CAAC,UAAU,EAAE;EAChDA,QAAM,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;EAClC,UAAU,GAAGA,QAAM,CAAC,MAAM,CAAC;EAC3B,SAAS,GAAGA,QAAM,CAAC,KAAK,CAAC;EACzB,SAAS,GAAGA,QAAM,CAAC,SAAS,CAAC;EAC7B,QAAQ,GAAGA,QAAM,CAAC,QAAQ,CAAC;EAC3B,OAAOA,QAAM,CAAC;CACf;;ACxBM,IAAI,YAAY,GAAG,uBAAuB,CAAC;;AAElD,SAAS,eAAe,CAAC,IAAI,EAAE;EAC7B,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;CAC3B;;AAED,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW;MACpC,eAAe;MACf,SAAS,CAAC,YAAY,CAAC,CAAC,AAE9B,AAAyB;;ACTzB,SAAS,cAAc,CAAC,MAAM,EAAE;EAC9B,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;EAC5B,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;CAClC;;AAED,IAAI,QAAQ,GAAG,CAAC,IAAI,IAAI,CAAC,0BAA0B,CAAC;MAC9C,cAAc;MACd,QAAQ,CAAC,YAAY,CAAC,CAAC,AAE7B,AAAwB;;ACVxB,iBAAe,SAAS,GAAG,EAAE,IAAI,EAAE;;IAE/B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;;;IAGlC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,qBAAqB,GAAG,IAAI,CAAC,WAAW,CAAC;IAC1E,IAAI,CAAC,SAAS,GAAG,qBAAqB,GAAG,IAAI,CAAC,UAAU,CAAC;;IAEzD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,GAAG,gBAAgB,CAAA;;;;IAIjF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;;;IAGlC,IAAI,IAAI,CAAC,aAAa,CAAC;MACrB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC;MACtD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;KAChD;;IAED,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;IACnF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;;IAE7E,IAAI,CAAC,gBAAgB,CAAA;IACrBxC,IAAI,GAAG,GAAG,UAAU,CAAC,0BAA0B,CAAC,CAAC;IACjDA,IAAI,MAAM,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACzGA,IAAI,OAAO,GAAG,UAAC,CAAC,EAAE,EAAK,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;IACtD,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAChD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;IACtD,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;IACjD,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;IACvE,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAChE,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;IAE5C,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;MAC5B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,UAAU,CAAC;KAClE,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;MACpC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;KACxF,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;MACpC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA;KACpD;;IAED,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC;MACpD,OAAO,MAAM,CAAC,QAAQ,GAAG,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC;KAClD,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;IAEjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,UAAU,CAAC;;CAEvJ,CAAA;;;;ACnDD;;;;;;;;AAQA;;;;;AAOA,IAAI,eAAe,GAAG,SAAS,CAAC;;;;;;;AAOhC,WAAc,GAAG,UAAU,CAAC;;;;;;;;;;AAU5B,SAAS,UAAU,CAAC,MAAM,EAAE;EAC1B,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;EACtB,IAAI,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;EAEtC,IAAI,CAAC,KAAK,EAAE;IACV,OAAO,GAAG,CAAC;GACZ;;EAED,IAAI,MAAM,CAAC;EACX,IAAI,IAAI,GAAG,EAAE,CAAC;EACd,IAAI,KAAK,GAAG,CAAC,CAAC;EACd,IAAI,SAAS,GAAG,CAAC,CAAC;;EAElB,KAAK,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;IACrD,QAAQ,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC;MAC3B,KAAK,EAAE;QACL,MAAM,GAAG,QAAQ,CAAC;QAClB,MAAM;MACR,KAAK,EAAE;QACL,MAAM,GAAG,OAAO,CAAC;QACjB,MAAM;MACR,KAAK,EAAE;QACL,MAAM,GAAG,OAAO,CAAC;QACjB,MAAM;MACR,KAAK,EAAE;QACL,MAAM,GAAG,MAAM,CAAC;QAChB,MAAM;MACR,KAAK,EAAE;QACL,MAAM,GAAG,MAAM,CAAC;QAChB,MAAM;MACR;QACE,SAAS;KACZ;;IAED,IAAI,SAAS,KAAK,KAAK,EAAE;MACvB,IAAI,IAAI,GAAG,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;KACzC;;IAED,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;IACtB,IAAI,IAAI,MAAM,CAAC;GAChB;;EAED,OAAO,SAAS,KAAK,KAAK;MACtB,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC;MACtC,IAAI,CAAC;CACV;;AC1ED,WAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjCA,IAAI,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;EACrCA,IAAI,UAAU,GAAG,UAAA,IAAI,EAAC,SAAG,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,GAAA,CAAC;;EAEhD,SAAS,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE;IAClC,IAAI,OAAO,IAAI,KAAK;MAClB,EAAA,UAAU,CAAC,CAAA,mBAAiB,GAAE,IAAI,kBAAY,IAAEyC,OAAM,CAAC,OAAO,CAAC,CAAA,WAAM,CAAC,CAAC,CAAC,EAAA;GAC3E;;EAED,UAAU,CAAC,CAAA,mJAEqD,GAAE,OAAO,0JAE3C,IAAE,IAAI,CAAC,GAAG,CAAA,qBAC/B,IAAE,IAAI,CAAC,KAAK,CAAA,iBACrB,CAAC,CAAC,CAAC;;EAEH,UAAU,CAAC,CAAA,4HAE4D,IAAE,IAAI,CAAC,aAAa,CAAA,MAAE,IAAE,IAAI,CAAC,oBAAoB,CAAA,MAAE,IAAE,IAAI,CAAC,kBAAkB,CAAA,wFAC9E,IAAE,IAAI,CAAC,WAAW,CAAA,cACvF,CAAC,CAAC,CAAC;EACH,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAC,CAAC,EAAE;IACvB,UAAU,CAAC,IAAI,EAAE,CAAA,sDAC0B,IAAE,CAAC,CAAC,SAAS,CAAA,MAAE,IAAE,CAAC,CAAC,QAAQ,CAAA,UAAK,CAAC,CAAC,CAAA;GAC9E,CAAC,CAAC;;EAEH,UAAU,CAAC,CAAA,kLAG0B,IAAE,IAAI,CAAC,KAAK,CAAA,2DACN,IAAE,IAAI,CAAC,WAAW,CAAA,kDAC1B,IAAE,IAAI,CAAC,GAAG,CAAA,qDACR,IAAE,IAAI,CAAC,UAAU,CAAA,gIAGtD,CAAC,CAAC,CAAC;;EAEH,UAAU,CAAC,CAAA,4KAG2B,IAAE,IAAI,CAAC,KAAK,CAAA,2DACN,IAAE,IAAI,CAAC,WAAW,CAAA,mDAC1B,IAAE,IAAI,CAAC,GAAG,CAAA,qDACR,IAAE,IAAI,CAAC,UAAU,CAAA,+HAGvD,CAAC,CAAC,CAAC;;;EAGH,IAAI,IAAI,CAAC,SAAS,CAAC;IACjB,UAAU,CAAC,wFACqE,CAAE,CAAC;;IAEnF,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;;IAEnC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,SAAS,EAAE,CAAA,GAAE,IAAE,IAAI,CAAC,SAAS,CAAA,CAAE,GAAG,SAAS,CAAC,CAAC;IAC7E,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;;IAE/BzC,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;IACjC,IAAI,CAAC,wBAAwB,EAAE,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;IACpE,IAAI,CAAC,yBAAyB,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IACtD,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,oBAAoB,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC9C,IAAI,CAAC,kCAAkC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;;IAEnD,IAAI,IAAI,CAAC,aAAa,CAAC;MACrBA,IAAI,OAAO,GAAG,UAAC,CAAC,EAAE,EAAK,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;MACtD,IAAI,CAAC,sBAAsB,EAAE,CAAA,CAAG,IAAI,CAAC,aAAa,CAAA,MAAE,IAAE,IAAI,CAAC,oBAAoB,CAAA,MAAE,IAAE,IAAI,CAAC,kBAAkB,CAAA,CAAE,CAAC,CAAC;;MAE9G,IAAI,CAAC,2BAA2B,EAAE,CAAA,CAAG,IAAI,CAAC,aAAa,CAAA,MAAE,IAAE,IAAI,CAAC,oBAAoB,CAAA,MAAE,IAAE,IAAI,CAAC,kBAAkB,CAAA,CAAE,CAAC,CAAC;KACpH;;IAED,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAC,CAAC,EAAE;QAC7B,IAAI,CAAC,iBAAiB,EAAE,CAAA,CAAG,CAAC,CAAC,QAAQ,CAAA,OAAG,IAAE,CAAC,CAAC,SAAS,CAAA,CAAE,CAAC,CAAC;QACzD,IAAI,CAAC,6BAA6B,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;KACtD,CAAC,CAAC;;IAEH,IAAI,IAAI,CAAC,SAAS,EAAE;MAClB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAA,GAAG,EAAC;QACzBA,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAC/B,GAAG,CAAC,CAAC,EAAE;UACL,OAAO,CAAC,IAAI,CAAC,kCAAkC,GAAG,GAAG,CAAC,CAAA;SACvD,MAAM;UACL,IAAI,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,CAAA;SAC3E,AAAC;OACH,CAAC,CAAC;KACJ;GACF;CACF,CAAA;;AAED,SAAS,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE;EAC5B,EAAE,CAAC,SAAS,IAAI,IAAI,CAAC;CACtB;;AAED,SAAS,qBAAqB,CAAC,GAAG,CAAC;;EAEjC,IAAI,OAAO,GAAG,iBAAgB,IAAE,GAAG,CAAC,KAAK,CAAA,MAAE,CAAE;;EAE7CA,IAAI,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAA,IAAI,EAAC;IACxD,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACnB,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;MAC1B,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;MACrC,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;KACxC,MAAM;MACL,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;MAC/C,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACpD;IACD,OAAO,IAAI,kBAAiB,GAAE,MAAM,MAAE,GAAE,IAAI,MAAE,CAAE;GACjD,CAAC,CAAC;;EAEH,IAAI,MAAM,IAAI,GAAG,EAAE;IACjB,OAAO,IAAI,4BAA2B,IAAE,GAAG,CAAC,IAAI,CAAA,MAAE,CAAE;GACrD;;EAED,IAAI,eAAe,GAAG,mDAAmD,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EACxF,eAAe,GAAG,eAAe,IAAI,8CAA8C,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EAClG,eAAe,GAAG,eAAe,IAAI,uCAAuC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;EAC/F,IAAI,eAAe,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC;IACxC,OAAO,IAAI,oBAAmB,IAAE,eAAe,CAAC,CAAC,CAAC,CAAA,MAAE,CAAE;IACtD,OAAO,OAAO,CAAC;GAChB;EACD,IAAI,SAAS,IAAI,GAAG,CAAC;IACnB,OAAO,IAAI,yBAAwB,IAAE,GAAG,CAAC,OAAO,CAAA,MAAE,CAAE;GACrD;EACD,IAAI,QAAQ,IAAI,GAAG,EAAE;MACjB,OAAO,IAAI,kBAAiB,IAAE,GAAG,CAAC,MAAM,CAAA,MAAE,CAAE;GAC/C;EACD,IAAI,OAAO,IAAI,GAAG,IAAI,QAAQ,IAAI,GAAG,CAAC;MAClC,OAAO,IAAI,kBAAiB,IAAE,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,CAAA,MAAE,CAAE;GAC5D;;;EAGD,OAAO,OAAO,CAAC;CAChB;;AC3ID0C,IAAMC,MAAI,GAAG,iQAYb,CAAE;;AAEF,aAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjC3C,IAAI,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;EAC5C,MAAM,CAAC,SAAS,GAAG2C,MAAI,CAAC;EACxB3C,IAAI,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;EAClC,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;EACrC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW;IAC1C,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;GAC/B,CAAC,CAAC;CACJ,CAAA;;;;;;;;;;ACfD,CAAC,SAAS,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE;EACzC,IAAI,QAAc,KAAK,QAAQ,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE;IAClF,OAAO,CAAC,OAAO,CAAC,CAAC;GAClB,MAAM,IAAI,OAAO4C,SAAM,KAAK,UAAU,IAAIA,SAAM,CAAC,GAAG,EAAE;IACrDA,SAAM,CAAC,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;GAC9B,MAAM;IACL,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;GAC1B;CACF,CAACtC,cAAI,EAAE,SAAS,eAAe,EAAE,QAAQ,EAAE;;EAE1C,IAAI,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;EAC/C,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,SAAS,eAAe,EAAE,MAAM,EAAE;IAC/D,OAAO,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,gBAAgB,CAAC;GACzD,CAAC;;EAEF,SAAS,UAAU,EAAE,MAAM,EAAE;IAC3B,OAAO,OAAO,MAAM,KAAK,UAAU,CAAC;GACrC;;;;;;EAMD,SAAS,OAAO,EAAE,GAAG,EAAE;IACrB,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,GAAG,OAAO,GAAG,CAAC;GAC5C;;EAED,SAAS,YAAY,EAAE,MAAM,EAAE;IAC7B,OAAO,MAAM,CAAC,OAAO,CAAC,6BAA6B,EAAE,MAAM,CAAC,CAAC;GAC9D;;;;;;EAMD,SAAS,WAAW,EAAE,GAAG,EAAE,QAAQ,EAAE;IACnC,OAAO,GAAG,IAAI,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,CAAC;GACpE;;;;EAID,IAAI,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;EACvC,SAAS,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE;IAC/B,OAAO,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;GACpC;;EAED,IAAI,UAAU,GAAG,IAAI,CAAC;EACtB,SAAS,YAAY,EAAE,MAAM,EAAE;IAC7B,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;GACxC;;EAED,IAAI,SAAS,GAAG;IACd,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;GACd,CAAC;;EAEF,SAAS,UAAU,EAAE,MAAM,EAAE;IAC3B,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,SAAS,aAAa,EAAE,CAAC,EAAE;MACvE,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;KACrB,CAAC,CAAC;GACJ;;EAED,IAAI,OAAO,GAAG,KAAK,CAAC;EACpB,IAAI,OAAO,GAAG,KAAK,CAAC;EACpB,IAAI,QAAQ,GAAG,MAAM,CAAC;EACtB,IAAI,OAAO,GAAG,OAAO,CAAC;EACtB,IAAI,KAAK,GAAG,oBAAoB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;EAwBjC,SAAS,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE;IACtC,IAAI,CAAC,QAAQ;MACX,EAAA,OAAO,EAAE,CAAC,EAAA;;IAEZ,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,QAAQ,GAAG,KAAK,CAAC;;;;IAIrB,SAAS,UAAU,IAAI;MACrB,IAAI,MAAM,IAAI,CAAC,QAAQ,EAAE;QACvB,OAAO,MAAM,CAAC,MAAM;UAClB,EAAA,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,EAAA;OAC/B,MAAM;QACL,MAAM,GAAG,EAAE,CAAC;OACb;;MAED,MAAM,GAAG,KAAK,CAAC;MACf,QAAQ,GAAG,KAAK,CAAC;KAClB;;IAED,IAAI,YAAY,EAAE,YAAY,EAAE,cAAc,CAAC;IAC/C,SAAS,WAAW,EAAE,aAAa,EAAE;MACnC,IAAI,OAAO,aAAa,KAAK,QAAQ;QACnC,EAAA,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAA;;MAElD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;QACvD,EAAA,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,aAAa,CAAC,CAAC,EAAA;;MAEpD,YAAY,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;MACnE,YAAY,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MACnE,cAAc,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAC5E;;IAED,WAAW,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;;IAEnC,IAAI,OAAO,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;;IAEpC,IAAI,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC;IAChD,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE;MACrB,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC;;;MAGpB,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;;MAExC,IAAI,KAAK,EAAE;QACT,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,WAAW,EAAE,EAAE,CAAC,EAAE;UAChE,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;;UAEtB,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE;YACrB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;WAC5B,MAAM;YACL,QAAQ,GAAG,IAAI,CAAC;WACjB;;UAED,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;UAC/C,KAAK,IAAI,CAAC,CAAC;;;UAGX,IAAI,GAAG,KAAK,IAAI;YACd,EAAA,UAAU,EAAE,CAAC,EAAA;SAChB;OACF;;;MAGD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;QAC7B,EAAA,MAAM,EAAA;;MAER,MAAM,GAAG,IAAI,CAAC;;;MAGd,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC;MACrC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;;MAGtB,IAAI,IAAI,KAAK,GAAG,EAAE;QAChB,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvB,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;OACjC,MAAM,IAAI,IAAI,KAAK,GAAG,EAAE;QACvB,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAChC,IAAI,GAAG,GAAG,CAAC;OACZ,MAAM;QACL,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;OACzC;;;MAGD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;QAC7B,EAAA,MAAM,IAAI,KAAK,CAAC,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAA;;MAEpD,KAAK,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;MAC5C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;MAEnB,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE;QAChC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;OACtB,MAAM,IAAI,IAAI,KAAK,GAAG,EAAE;;QAEvB,WAAW,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;;QAE7B,IAAI,CAAC,WAAW;UACd,EAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,CAAC,CAAC,EAAA;;QAElE,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,KAAK;UAC1B,EAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,KAAK,CAAC,CAAC,EAAA;OAC5E,MAAM,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE;QAC1D,QAAQ,GAAG,IAAI,CAAC;OACjB,MAAM,IAAI,IAAI,KAAK,GAAG,EAAE;;QAEvB,WAAW,CAAC,KAAK,CAAC,CAAC;OACpB;KACF;;;IAGD,WAAW,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;;IAE7B,IAAI,WAAW;MACb,EAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAA;;IAEjF,OAAO,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;GACzC;;;;;;EAMD,SAAS,YAAY,EAAE,MAAM,EAAE;IAC7B,IAAI,cAAc,GAAG,EAAE,CAAC;;IAExB,IAAI,KAAK,EAAE,SAAS,CAAC;IACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,SAAS,EAAE,EAAE,CAAC,EAAE;MAC7D,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;;MAElB,IAAI,KAAK,EAAE;QACT,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE;UAC/D,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;UACzB,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;SACzB,MAAM;UACL,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;UAC3B,SAAS,GAAG,KAAK,CAAC;SACnB;OACF;KACF;;IAED,OAAO,cAAc,CAAC;GACvB;;;;;;;;EAQD,SAAS,UAAU,EAAE,MAAM,EAAE;IAC3B,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,IAAI,SAAS,GAAG,YAAY,CAAC;IAC7B,IAAI,QAAQ,GAAG,EAAE,CAAC;;IAElB,IAAI,KAAK,EAAE,OAAO,CAAC;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,SAAS,EAAE,EAAE,CAAC,EAAE;MAC7D,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;;MAElB,QAAQ,KAAK,CAAC,CAAC,CAAC;QACd,KAAK,GAAG,CAAC;QACT,KAAK,GAAG;UACN,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;UACtB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;UACrB,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;UAC1B,MAAM;QACR,KAAK,GAAG;UACN,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;UACzB,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;UACtB,SAAS,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC;UAClF,MAAM;QACR;UACE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;OACzB;KACF;;IAED,OAAO,YAAY,CAAC;GACrB;;;;;;EAMD,SAAS,OAAO,EAAE,MAAM,EAAE;IACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACrB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;IACnB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;GACd;;;;;EAKD,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI;IACtC,OAAO,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;GACzB,CAAC;;;;;;EAMF,OAAO,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,EAAE,EAAE;IAC1C,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;;IAEhC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC;MAC7B,EAAA,OAAO,EAAE,CAAC,EAAA;;IAEZ,IAAI,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;;IAEtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/C,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC;;IAE1B,OAAO,MAAM,CAAC;GACf,CAAC;;;;;;EAMF,OAAO,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,EAAE,EAAE;IACpD,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC;;IAExC,QAAQ,KAAK;MACX,KAAK,CAAC,CAAC;QACL,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;QAClB,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QACf,MAAM;MACR,KAAK,CAAC;QACJ,KAAK,GAAG,EAAE,CAAC;QACX,MAAM;MACR;QACE,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;KAC1C;;IAED,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC;;IAEzB,OAAO,KAAK,CAAC;GACd,CAAC;;;;;;EAMF,SAAS,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE;IACrC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IAChC,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC;GAC7B;;;;;;EAMD,OAAO,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE;IAC5C,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;GAChC,CAAC;;;;;;EAMF,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,IAAI,EAAE;IAChD,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;;IAEvB,IAAI,KAAK,CAAC;IACV,IAAI,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;MAC9B,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;KACrB,MAAM;MACL,IAAI,OAAO,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,GAAG,KAAK,CAAC;;MAEpD,OAAO,OAAO,EAAE;QACd,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;UACzB,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;UACrB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;UACxB,KAAK,GAAG,CAAC,CAAC;;;;;;;;;;;;;UAaV,OAAO,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE;YAC5C,IAAI,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC;cAC5B,EAAA,SAAS,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAA;;YAE/C,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;WAC/B;SACF,MAAM;UACL,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;UAC3B,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SAC7C;;QAED,IAAI,SAAS;UACX,EAAA,MAAM,EAAA;;QAER,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;OAC1B;;MAED,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;KACrB;;IAED,IAAI,UAAU,CAAC,KAAK,CAAC;MACnB,EAAA,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAA;;IAEhC,OAAO,KAAK,CAAC;GACd,CAAC;;;;;;;EAOF,SAAS,MAAM,IAAI;IACjB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;GACjB;;;;;EAKD,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,IAAI;IACnD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;GACjB,CAAC;;;;;;EAMF,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE;IACvD,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACvB,IAAI,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;;IAE7B,IAAI,MAAM,IAAI,IAAI;MAChB,EAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAA;;IAE3D,OAAO,MAAM,CAAC;GACf,CAAC;;;;;;;;;;;EAWF,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;IACnE,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,OAAO,GAAG,CAAC,IAAI,YAAY,OAAO,IAAI,IAAI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;GAC/D,CAAC;;;;;;;;;;;EAWF,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE;;;IAClG,IAAI,MAAM,GAAG,EAAE,CAAC;;IAEhB,IAAI,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,SAAS,EAAE,EAAE,CAAC,EAAE;MAC7D,KAAK,GAAG,SAAS,CAAC;MAClB,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;MAClB,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;;MAElB,IAAI,MAAM,KAAK,GAAG,EAAE,EAAA,KAAK,GAAGA,MAAI,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC,EAAA;WACtF,IAAI,MAAM,KAAK,GAAG,EAAE,EAAA,KAAK,GAAGA,MAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC,EAAA;WAC5F,IAAI,MAAM,KAAK,GAAG,EAAE,EAAA,KAAK,GAAGA,MAAI,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC,EAAA;WAC3F,IAAI,MAAM,KAAK,GAAG,EAAE,EAAA,KAAK,GAAGA,MAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,EAAA;WAChE,IAAI,MAAM,KAAK,MAAM,EAAE,EAAA,KAAK,GAAGA,MAAI,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,EAAA;WACjE,IAAI,MAAM,KAAK,MAAM,EAAE,EAAA,KAAK,GAAGA,MAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAA;;MAEzD,IAAI,KAAK,KAAK,SAAS;QACrB,EAAA,MAAM,IAAI,KAAK,CAAC,EAAA;KACnB;;IAED,OAAO,MAAM,CAAC;GACf,CAAC;;EAEF,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE;;;IACnG,IAAI,IAAI,GAAG,IAAI,CAAC;IAChB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;;;;IAIrC,SAAS,SAAS,EAAE,QAAQ,EAAE;MAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;KACjD;;IAED,IAAI,CAAC,KAAK,EAAE,EAAA,OAAO,EAAA;;IAEnB,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;MAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,WAAW,EAAE,EAAE,CAAC,EAAE;QAChE,MAAM,IAAIA,MAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;OAC3F;KACF,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;MAC9F,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;KACxF,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE;MAC5B,IAAI,OAAO,gBAAgB,KAAK,QAAQ;QACtC,EAAA,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC,EAAA;;;MAGpF,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;;MAExF,IAAI,KAAK,IAAI,IAAI;QACf,EAAA,MAAM,IAAI,KAAK,CAAC,EAAA;KACnB,MAAM;MACL,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;KAC5E;IACD,OAAO,MAAM,CAAC;GACf,CAAC;;EAEF,MAAM,CAAC,SAAS,CAAC,cAAc,GAAG,SAAS,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE;IACrG,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;;;;IAIrC,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;MAClD,EAAA,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC,EAAA;GAC3E,CAAC;;EAEF,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE;IACjF,IAAI,CAAC,QAAQ,EAAE,EAAA,OAAO,EAAA;;IAEtB,IAAI,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,IAAI,KAAK,IAAI,IAAI;MACf,EAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAA;GACzE,CAAC;;EAEF,MAAM,CAAC,SAAS,CAAC,cAAc,GAAG,SAAS,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE;IACzE,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,IAAI,KAAK,IAAI,IAAI;MACf,EAAA,OAAO,KAAK,CAAC,EAAA;GAChB,CAAC;;EAEF,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE;IACrE,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,IAAI,KAAK,IAAI,IAAI;MACf,EAAA,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAA;GACjC,CAAC;;EAEF,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,KAAK,EAAE;IACpD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;GACjB,CAAC;;EAEF,QAAQ,CAAC,IAAI,GAAG,aAAa,CAAC;EAC9B,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;EAC3B,QAAQ,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;;EAG/B,IAAI,aAAa,GAAG,IAAI,MAAM,EAAE,CAAC;;;;;EAKjC,QAAQ,CAAC,UAAU,GAAG,SAAS,UAAU,IAAI;IAC3C,OAAO,aAAa,CAAC,UAAU,EAAE,CAAC;GACnC,CAAC;;;;;;;EAOF,QAAQ,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC/C,OAAO,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;GAC5C,CAAC;;;;;;EAMF,QAAQ,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC3D,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;MAChC,MAAM,IAAI,SAAS,CAAC,kDAAkD;0BAClD,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,2BAA2B;0BACzD,wDAAwD,CAAC,CAAC;KAC/E;;IAED,OAAO,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;GACvD,CAAC;;;;EAIF,QAAQ,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;;;IAGnE,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;;IAEvD,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;MACpB,IAAI,CAAC,MAAM,CAAC,CAAC;KACd,MAAM;MACL,OAAO,MAAM,CAAC;KACf;GACF,CAAC;;;;EAIF,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC;;;EAG7B,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;EAC3B,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;EAC3B,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;;EAEzB,OAAO,QAAQ,CAAC;CACjB,CAAC,EAAE;;;ACnnBJoC,IAAMC,MAAI,GAAG,4lEA8Gb,CAAE;;AAEFD,IAAM,QAAQ,GAAG,s7BA+BjB,CAAA;;AAEA,aAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjC1C,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;EACxC,IAAI,EAAE,EAAE;IACN,EAAE,CAAC,SAAS,GAAG2C,MAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;GACvD;CACF,CAAA;;ACxJDD,IAAMC,MAAI,GAAG,uzDAyDb,CAAE;;AAEF,eAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjC3C,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,CAAA;EACzC,IAAI,EAAE,EAAE;IACNA,IAAI,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC;IAC3B,EAAE,CAAC,SAAS,GAAG2C,MAAI,CAAC;IACpB3C,IAAI,GAAG,GAAG,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,CAAA;;IAExC,IAAI,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;MAC9B,GAAG,CAAC,SAAS,GAAG,6CAA4C,GAAI,GAAG,CAAC,SAAS,CAAC;KAC/E;;IAED,GAAG,CAAC,SAAS,GAAG,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC;IACxC,IAAI,IAAI,CAAC,uBAAuB,EAAE;MAChC,GAAG,CAAC,SAAS,GAAG,+BAA6B,IAAE,IAAI,CAAC,uBAAuB,CAAA,8EAAyE,GAAI,GAAG,CAAC,SAAS,CAAC;KACvK;;IAED,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAClE,EAAE,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC,CAAC;IACxF,EAAE,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,mBAAmB,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,cAAc,GAAG,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;IACjJ,IAAI,MAAM,IAAI,WAAW,GAAG,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QAC1C,MAAM,IAAI,cAAc,GAAG,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QACvD,MAAM,IAAI,aAAa,GAAG,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;QAC9C,MAAM,IAAI,0BAA0B,CAAC;QACrC,MAAM,IAAI,YAAY,GAAG,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QACrD,MAAM,IAAI,YAAY,GAAG,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;QAC1C,MAAM,IAAI,GAAG,CAAC;IAClB,EAAE,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,WAAW,GAAG,MAAM,CAAC;GACzD;;CAEF,CAAA;;ACxFD,eAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjCA,IAAI,GAAG,GAAG,gmBAuBV,CAAE;;EAEFA,IAAI,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;EACvC,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC;EACxB,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;;EAE7CA,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;;;;;;;;EAQ/B,IAAI,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;EAC/D,QAAQ,CAAC,OAAO,CAAC,UAAC,EAAE,CAAC,CAAC,EAAE;IACtB,IAAI,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,GAAG,EAAE;MACP,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;MAC1B,IAAI,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;MAC1C,IAAI,cAAc,GAAG,EAAE,CAAC;MACxB,IAAI,CAAC,GAAG,CAAC,UAAC,GAAG,CAAC,CAAC,EAAE;QACf,IAAI,CAAC,CAAC,CAAC,EAAE,EAAA,cAAc,IAAI,UAAU,CAAC,EAAA;QACtC,cAAc,IAAI,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;OACtD,CAAC,CAAC;MACH,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;MACtD,IAAI,WAAW,GAAG,EAAE,CAAC,SAAS,CAAC;MAC/B,IAAI,WAAW,IAAI,EAAE,EAAE,EAAA,WAAW,IAAI,GAAG,CAAC,EAAA;MAC1C,EAAE,CAAC,SAAS,GAAG,sBAAoB,GAAE,CAAC,qBAAe,GAAE,cAAc,QAAG,GAAE,WAAW,qCAA+B,GAAE,WAAW,mBAAe,CAAE;KACnJ;GACF,CAAC,CAAC;;EAEHA,IAAI,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;EACjD,IAAI,KAAK,EAAE;IACTA,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACjC,SAAS,CAAC,OAAO,CAAC,UAAA,GAAG,EAAC;MACpBA,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;MACjC,EAAE,CAAC,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;MACzD,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;KACpB,CAAC,CAAA;IACF,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;GACvB;;EAED,SAAS,iBAAiB,CAAC,IAAI,CAAC;IAC9B,SAAS,WAAW,CAAC,GAAG,CAAC;MACvB,IAAI,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC;QAC3B,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACtC,OAAO,EAAE,CAAC,CAAC,CAAC;OACb,MAAM;QACL,OAAO,GAAG,CAAC;OACZ;KACF;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;GACjD;;EAED,SAAS,gBAAgB,CAAC,IAAI,CAAC;IAC7B,SAAS,WAAW,CAAC,GAAG,CAAC;MACvB,IAAI,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC;QAC3B,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,UAAA,IAAI,EAAC,SAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAA,CAAC,CAAA;QACpD,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACpB,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,EAAA;QACrD,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,EAAA;QACxE,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,YAAY,GAAG,IAAI,CAAC,EAAA;OAC9D,MAAM;QACL,OAAO,GAAG,CAAC;OACZ;KACF;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;GACzC;;EAED,SAAS,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,CAAC;IAClD,IAAI,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtCA,IAAI,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,UAAA,IAAI,EAAC;MAChC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;MACnB,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1B,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACrC,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;OACjC,MAAM;QACL,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/C,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;OACpD;MACD,IAAI,QAAQ,GAAG,EAAE,CAAC;MAClB,IAAI,MAAM,IAAI,SAAS,EAAE;QACvB,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAA,CAAC,EAAC,SAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAA,CAAC,CAAC;QAC1D,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;OACnC;MACD,OAAO,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC;sBACvB,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;sBACrB,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;KAC3C,CAAC,CAAC;IACH,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;MACpB,IAAI,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;MAC1D,GAAG,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;MACxD,OAAO,GAAG,CAAC;KACZ,MAAM;MACL,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;KACxB;GACF;;EAED,SAAS,YAAY,CAAC,GAAG,EAAE;IACzB,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAA;IAC/C,IAAI,QAAQ,IAAI,GAAG,CAAC;MAClB,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,CAAC;MACpC,KAAK,GAAG,CAAC,KAAK,IAAI,SAAS,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC;MACjD,IAAI,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;KACvC;IACD,IAAI,OAAO,IAAI,GAAG,CAAC;MACjB,IAAI,IAAI,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAA;KAC7B;IACD,IAAI,IAAI,IAAI,EAAE,EAAE,EAAA,IAAI,IAAI,IAAI,CAAA,EAAA;IAC5B,IAAI,WAAW,IAAI,GAAG,CAAC;MACrB,IAAI,IAAI,GAAG,CAAC,SAAS,CAAC;MACtB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAA,IAAI,IAAI,GAAG,CAAC,EAAA;KAC7C;IACD,OAAO,IAAI,CAAC;GACb;;EAED,SAAS,WAAW,CAAC,GAAG,CAAC;IACvB,IAAI,KAAK,IAAI,GAAG,CAAC;MACf,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;MAClB,IAAI,WAAW,GAAG,CAAC,6BAA6B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;MAC5D,IAAI,WAAW,IAAI,IAAI,CAAC;QACtB,GAAG,GAAG,uBAAsB,IAAE,WAAW,CAAC,CAAC,CAAC,CAAA,SAAK,CAAE;OACpD;;MAED,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;QAC1B,IAAI,KAAK,GAAG,KAAK,CAAC;OACnB,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE;QACnC,IAAI,KAAK,GAAG,MAAM,CAAC;OACpB;MACD,OAAO,CAAA,mBAAiB,GAAE,GAAG,SAAI,IAAE,KAAK,EAAE,MAAM,CAAA,UAAM,CAAC,CAAC;KACzD;;aAEQ;MACP,OAAO,EAAE,CAAC;KACX;GACF;EACD,SAAS,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC;IAChC,IAAI,KAAK,IAAI,GAAG,EAAE;MAChB,OAAO,CAAA,CAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAA,gCAA2B,IAAE,GAAG,CAAC,GAAG,CAAA,gDAAyC,IAAE,GAAG,CAAC,GAAG,CAAA,SAAK,CAAC,CAAC;KAC1H,MAAM;MACL,OAAO,EAAE,CAAC;KACX;GACF;;EAED,SAAS,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC;IACpC,IAAI,GAAG,CAAC;MACN,IAAI,IAAI,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,OAAO,CAAA;MACvC,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;MAClC,IAAI,IAAI,aAAa,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;MACxD,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC;QACvB,IAAI,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;OAC7C,MAAM;QACL,IAAI,IAAI,IAAI,CAAA;OACb;MACD,IAAI,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;MAC1B,IAAI,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;MACxB,OAAO,IAAI;;;;;;;;;;;;KAYZ,MAAM;MACL,OAAO,GAAG,CAAC;KACZ;GACF;;EAED,SAAS,UAAU,CAAC,GAAG,CAAC;IACtB,IAAI,GAAG,CAAC;MACN,IAAI,IAAI,GAAG,EAAE,CAAC;MACd,IAAI,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC;MACnC,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC;MACzB,IAAI,IAAI,MAAM,CAAA;;MAEd,IAAI,KAAK,GAAG,aAAa,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC;MACxD,IAAI,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;;MAErF,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;QACzD,IAAI,IAAI,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC;OAC7B,MAAM;QACL,IAAI,IAAI,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;OAChC;MACD,OAAO,IAAI,CAAC;KACb,MAAM;MACL,OAAO,GAAG,CAAC;KACZ;GACF;;;;EAID,SAAS,UAAU,CAAC,GAAG,CAAC;IACtB,IAAI,GAAG,CAAC;MACN,IAAI,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;MACtC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,UAAA,IAAI,EAAC,SAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAA,CAAC,CAAA;MACpD,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;MAChC,IAAI,GAAG,GAAG,uCAAuC,CAAA;MACjD,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;KAC1D;;GAEF;CACF,CAAA;;ACzOD,eAAe,SAAS,GAAG,EAAE,IAAI,EAAE;;EAEjC,IAAI,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;EAC3D,IAAI,SAAS,GAAG,EAAE,CAAC;EACnB,MAAM,CAAC,OAAO,CAAC,UAAC,EAAE,CAAC,CAAC,EAAE;IACpB,IAAI,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACb,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;IAClB,IAAI,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACrD,EAAE,CAAC,SAAS,GAAG,kBAAgB,GAAE,GAAG,qBAAe,GAAE,eAAe,iCAA0B,GAAE,CAAC,kBAAc,CAAE;GAClH,CAAC,CAAC;;EAEHA,IAAI,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;EAC7C,IAAI,MAAM,EAAE;IACVA,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACjC,SAAS,CAAC,OAAO,CAAC,UAAA,OAAO,EAAC;MACxBA,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;MACjC,EAAE,CAAC,SAAS,GAAG,OAAO,CAAC;MACvB,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;KACpB,CAAC,CAAA;IACF,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;GACxB;;CAEF,CAAA;;;;;;;;;AClBD,AAAC,CAAC,WAAW;;;;;;AAMb,IAAI,KAAK,GAAG;EACV,OAAO,EAAE,MAAM;EACf,IAAI,EAAE,mBAAmB;EACzB,MAAM,EAAE,IAAI;EACZ,EAAE,EAAE,2BAA2B;EAC/B,OAAO,EAAE,uCAAuC;EAChD,OAAO,EAAE,IAAI;EACb,QAAQ,EAAE,mCAAmC;EAC7C,UAAU,EAAE,oCAAoC;EAChD,IAAI,EAAE,+DAA+D;EACrE,IAAI,EAAE,8EAA8E;EACpF,GAAG,EAAE,mEAAmE;EACxE,KAAK,EAAE,IAAI;EACX,SAAS,EAAE,gEAAgE;EAC3E,IAAI,EAAE,SAAS;CAChB,CAAC;;AAEF,KAAK,CAAC,MAAM,GAAG,iBAAiB,CAAC;AACjC,KAAK,CAAC,IAAI,GAAG,4CAA4C,CAAC;AAC1D,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;GACnC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC;IACrB,CAAC;;AAEL,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;GAC7B,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC;GACtB,IAAI,EAAE,uCAAuC,CAAC;GAC9C,KAAK,EAAE,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;IACzC,CAAC;;AAEL,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC;GACzC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;IAChB,CAAC;;AAEL,KAAK,CAAC,IAAI,GAAG,QAAQ;IACjB,oDAAoD;IACpD,qDAAqD;IACrD,yDAAyD,CAAC;;AAE9D,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;GAC7B,SAAS,EAAE,iBAAiB,CAAC;GAC7B,QAAQ,EAAE,sBAAsB,CAAC;GACjC,SAAS,EAAE,mCAAmC,CAAC;GAC/C,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC;IAClB,CAAC;;AAEL,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;GACvC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;GACf,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC;GACzB,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC;GAC3B,YAAY,EAAE,KAAK,CAAC,UAAU,CAAC;GAC/B,KAAK,EAAE,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC;GACxB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;IAChB,CAAC;;;;;;AAML,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;;;;;;AAMhC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE;EAClC,MAAM,EAAE,4DAA4D;EACpE,SAAS,EAAE,GAAG;EACd,OAAO,EAAE,uCAAuC;CACjD,CAAC,CAAC;;AAEH,KAAK,CAAC,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;GAC3C,KAAK,EAAE,KAAK;MACT,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,GAAG;MACnD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC;IAChD,CAAC;;;;;;AAML,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE;EAClC,OAAO,EAAE,+DAA+D;EACxE,KAAK,EAAE,2DAA2D;CACnE,CAAC,CAAC;;;;;;AAMH,SAAS,KAAK,CAAC,OAAO,EAAE;EACtB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;EACjB,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;EACvB,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC;EAC1C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;;EAE1B,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;IACpB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;MACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;KAC3B,MAAM;MACL,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;KACxB;GACF;CACF;;;;;;AAMD,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;;;;;;AAMpB,KAAK,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,OAAO,EAAE;EACjC,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;EAC/B,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACvB,CAAC;;;;;;AAMF,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE;EAClC,GAAG,GAAG,GAAG;KACN,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC;KACzB,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;KACtB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;KACvB,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;;EAE5B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;CAC9B,CAAC;;;;;;AAMF,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE;;;EAC7C,IAAI,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;MAC/B,IAAI;MACJ,KAAK;MACL,GAAG;MACH,IAAI;MACJ,CAAC;MACD,IAAI;MACJ,KAAK;MACL,CAAC;MACD,CAAC,CAAC;;EAEN,OAAO,GAAG,EAAE;;IAEV,IAAI,GAAG,GAAGM,MAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACtC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;QACrBA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;UACf,IAAI,EAAE,OAAO;SACd,CAAC,CAAC;OACJ;KACF;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACnC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;MACpCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,CAACA,MAAI,CAAC,OAAO,CAAC,QAAQ;YACxB,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YACvB,GAAG;OACR,CAAC,CAAC;MACH,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACrC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QACZ,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE;OACnB,CAAC,CAAC;MACH,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACtC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM;QACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;OACb,CAAC,CAAC;MACH,SAAS;KACV;;;IAGD,IAAI,GAAG,KAAK,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;MAC/C,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;;MAEnC,IAAI,GAAG;QACL,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC1D,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;QACvD,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;OAC7C,CAAC;;MAEF,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;UACnC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;SACzB,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;UAC3C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;SAC1B,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;UAC1C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;SACxB,MAAM;UACL,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;SACtB;OACF;;MAED,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;OAC/C;;MAEDA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;MAEvB,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACvC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC;QAC7B,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;OACb,CAAC,CAAC;MACH,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACjC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,IAAI;OACX,CAAC,CAAC;MACH,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACzC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;;MAEnCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,kBAAkB;OACzB,CAAC,CAAC;;MAEH,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;;;;;MAKrCA,MAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;;MAE3BA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,gBAAgB;OACvB,CAAC,CAAC;;MAEH,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACnC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;;MAEdA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC;OACzB,CAAC,CAAC;;;MAGH,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAACA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;;MAEpC,IAAI,GAAG,KAAK,CAAC;MACb,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;MACf,CAAC,GAAG,CAAC,CAAC;;MAEN,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QACjB,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;;;;QAId,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QACpB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;;;;QAI9C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;UACxB,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC;UACrB,IAAI,GAAG,CAACA,MAAI,CAAC,OAAO,CAAC,QAAQ;cACzB,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,GAAG,KAAK,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;cACzD,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;SACnC;;;;QAID,IAAIA,MAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;UAC1C,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;UACrC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;YACpD,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;YACxC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;WACX;SACF;;;;;QAKD,KAAK,GAAG,IAAI,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;UACf,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC;UAC7C,IAAI,CAAC,KAAK,EAAE,EAAA,KAAK,GAAG,IAAI,CAAC,EAAA;SAC1B;;QAEDA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;UACf,IAAI,EAAE,KAAK;cACP,kBAAkB;cAClB,iBAAiB;SACtB,CAAC,CAAC;;;QAGHA,MAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;;QAE5BA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;UACf,IAAI,EAAE,eAAe;SACtB,CAAC,CAAC;OACJ;;MAEDA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,UAAU;OACjB,CAAC,CAAC;;MAEH,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACnC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAEA,MAAI,CAAC,OAAO,CAAC,QAAQ;YACvB,WAAW;YACX,MAAM;QACV,GAAG,EAAE,CAACA,MAAI,CAAC,OAAO,CAAC,SAAS;cACtB,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;QACpE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;OACb,CAAC,CAAC;MACH,SAAS;KACV;;;IAGD,IAAI,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;MACpD,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG;QACxC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QACZ,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;OACd,CAAC;MACF,SAAS;KACV;;;IAGD,IAAI,GAAG,KAAK,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;MAC7C,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;;MAEnC,IAAI,GAAG;QACL,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC1D,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;QACvD,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;OACxD,CAAC;;MAEF,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;UACnC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;SACzB,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;UAC3C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;SAC1B,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;UAC1C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;SACxB,MAAM;UACL,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;SACtB;OACF;;MAED,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;WAC1B,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;WAC/B,KAAK,CAAC,QAAQ,CAAC,CAAC;OACpB;;MAEDA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;MAEvB,SAAS;KACV;;;IAGD,IAAI,GAAG,KAAK,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;MACjD,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI;YAC3C,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACnB,GAAG,CAAC,CAAC,CAAC;OACX,CAAC,CAAC;MACH,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;;MAEnC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;OACb,CAAC,CAAC;MACH,SAAS;KACV;;IAED,IAAI,GAAG,EAAE;MACP,MAAM;QACJ,KAAK,CAAC,yBAAyB,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;KACxD;GACF;;EAED,OAAO,IAAI,CAAC,MAAM,CAAC;CACpB,CAAC;;;;;;AAMF,IAAI,MAAM,GAAG;EACX,MAAM,EAAE,6BAA6B;EACrC,QAAQ,EAAE,0BAA0B;EACpC,GAAG,EAAE,IAAI;EACT,GAAG,EAAE,wDAAwD;EAC7D,IAAI,EAAE,yBAAyB;EAC/B,OAAO,EAAE,gCAAgC;EACzC,MAAM,EAAE,kCAAkC;EAC1C,MAAM,EAAE,gDAAgD;EACxD,EAAE,EAAE,uDAAuD;EAC3D,IAAI,EAAE,kCAAkC;EACxC,EAAE,EAAE,kBAAkB;EACtB,GAAG,EAAE,IAAI;EACT,IAAI,EAAE,oCAAoC;CAC3C,CAAC;;AAEF,MAAM,CAAC,OAAO,GAAG,wCAAwC,CAAC;AAC1D,MAAM,CAAC,KAAK,GAAG,gDAAgD,CAAC;;AAEhE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;GAC/B,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC;GACzB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;IACpB,CAAC;;AAEL,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;GACrC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC;;;;;;AAML,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;;;;;;AAMlC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE;EACzC,MAAM,EAAE,gEAAgE;EACxE,EAAE,EAAE,0DAA0D;CAC/D,CAAC,CAAC;;;;;;AAMH,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE;EACpC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;EAC9C,GAAG,EAAE,sCAAsC;EAC3C,GAAG,EAAE,yBAAyB;EAC9B,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;KACvB,IAAI,EAAE,KAAK,CAAC;KACZ,GAAG,EAAE,aAAa,CAAC;MAClB;CACL,CAAC,CAAC;;;;;;AAMH,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,EAAE;EACpC,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;EACrC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;CAC9C,CAAC,CAAC;;;;;;AAMH,SAAS,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE;EACnC,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC;EAC1C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACnB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;EAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,QAAQ,CAAC;EACtD,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;;EAErC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;IACf,MAAM;MACJ,KAAK,CAAC,2CAA2C,CAAC,CAAC;GACtD;;EAED,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;IACpB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;MACvB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;KAC5B,MAAM;MACL,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;KACzB;GACF,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;IAChC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC;GAC9B;CACF;;;;;;AAMD,WAAW,CAAC,KAAK,GAAG,MAAM,CAAC;;;;;;AAM3B,WAAW,CAAC,MAAM,GAAG,SAAS,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE;EACjD,IAAI,MAAM,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;EAC7C,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;CAC3B,CAAC;;;;;;AAMF,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,GAAG,EAAE;;;EAC3C,IAAI,GAAG,GAAG,EAAE;MACR,IAAI;MACJ,IAAI;MACJ,IAAI;MACJ,GAAG,CAAC;;EAER,OAAO,GAAG,EAAE;;IAEV,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACrC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;MACd,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACvC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;QAClB,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;YAC3BA,MAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAChCA,MAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,GAAGA,MAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;OACtC,MAAM;QACL,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,GAAG,IAAI,CAAC;OACb;MACD,GAAG,IAAIA,MAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;MAC5C,SAAS;KACV;;;IAGD,IAAI,CAACA,MAAI,CAAC,MAAM,KAAK,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;MACpD,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MACtB,IAAI,GAAG,IAAI,CAAC;MACZ,GAAG,IAAIA,MAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;MAC5C,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MAClC,IAAI,CAACA,MAAI,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;QACxCA,MAAI,CAAC,MAAM,GAAG,IAAI,CAAC;OACpB,MAAM,IAAIA,MAAI,CAAC,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;QAChDA,MAAI,CAAC,MAAM,GAAG,KAAK,CAAC;OACrB;MACD,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,IAAIA,MAAI,CAAC,OAAO,CAAC,QAAQ;UACxBA,MAAI,CAAC,OAAO,CAAC,SAAS;YACpBA,MAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;UAChB,GAAG,CAAC,CAAC,CAAC,CAAA;MACV,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACnC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,GAAG,IAAI,CAAC;MACnB,GAAG,IAAIA,MAAI,CAAC,UAAU,CAAC,GAAG,EAAE;QAC1B,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QACZ,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;OACd,CAAC,CAAC;MACHA,MAAI,CAAC,MAAM,GAAG,KAAK,CAAC;MACpB,SAAS;KACV;;;IAGD,IAAI,CAAC,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;YAC/B,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;MAC1C,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;MAC/C,IAAI,GAAGA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;MACtC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QACvB,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QAChC,SAAS;OACV;MACDA,MAAI,CAAC,MAAM,GAAG,IAAI,CAAC;MACnB,GAAG,IAAIA,MAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;MAClCA,MAAI,CAAC,MAAM,GAAG,KAAK,CAAC;MACpB,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACrC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,IAAIA,MAAI,CAAC,QAAQ,CAAC,MAAM,CAACA,MAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC3D,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACjC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,IAAIA,MAAI,CAAC,QAAQ,CAAC,EAAE,CAACA,MAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MACvD,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACnC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,IAAIA,MAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;MACpD,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACjC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,IAAIA,MAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;MAC1B,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MAClC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,IAAIA,MAAI,CAAC,QAAQ,CAAC,GAAG,CAACA,MAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC9C,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACnC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,IAAIA,MAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAACA,MAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC5D,SAAS;KACV;;IAED,IAAI,GAAG,EAAE;MACP,MAAM;QACJ,KAAK,CAAC,yBAAyB,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;KACxD;GACF;;EAED,OAAO,GAAG,CAAC;CACZ,CAAC;;;;;;AAMF,WAAW,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,GAAG,EAAE,IAAI,EAAE;EACrD,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;MACxB,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;;EAEnD,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;MAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MACpD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACtD,CAAC;;;;;;AAMF,WAAW,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,IAAI,EAAE;EACjD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;EAC3C,OAAO,IAAI;;KAER,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC;;KAEzB,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC;;KAExB,OAAO,CAAC,yBAAyB,EAAE,UAAU,CAAC;;KAE9C,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;;KAEvB,OAAO,CAAC,8BAA8B,EAAE,UAAU,CAAC;;KAEnD,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;;KAEvB,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;CAChC,CAAC;;;;;;AAMF,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,IAAI,EAAE;EAC5C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;EACtC,IAAI,GAAG,GAAG,EAAE;MACR,CAAC,GAAG,IAAI,CAAC,MAAM;MACf,CAAC,GAAG,CAAC;MACL,EAAE,CAAC;;EAEP,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;IACjB,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,EAAE;MACvB,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;KAC5B;IACD,GAAG,IAAI,IAAI,GAAG,EAAE,GAAG,GAAG,CAAC;GACxB;;EAED,OAAO,GAAG,CAAC;CACZ,CAAC;;;;;;AAMF,SAAS,QAAQ,CAAC,OAAO,EAAE;EACzB,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;CAC9B;;AAED,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;EACtD,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;IAC1B,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7C,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,IAAI,EAAE;MAC/B,OAAO,GAAG,IAAI,CAAC;MACf,IAAI,GAAG,GAAG,CAAC;KACZ;GACF;;EAED,IAAI,CAAC,IAAI,EAAE;IACT,OAAO,aAAa;SACf,OAAO,GAAG,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrC,iBAAiB,CAAC;GACvB;;EAED,OAAO,oBAAoB;MACvB,IAAI,CAAC,OAAO,CAAC,UAAU;MACvB,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC;MAClB,IAAI;OACH,OAAO,GAAG,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;MACrC,mBAAmB,CAAC;CACzB,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,KAAK,EAAE;EAC9C,OAAO,gBAAgB,GAAG,KAAK,GAAG,iBAAiB,CAAC;CACrD,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE;EACvC,OAAO,IAAI,CAAC;CACb,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE;EACtD,OAAO,IAAI;MACP,KAAK;MACL,OAAO;MACP,IAAI,CAAC,OAAO,CAAC,YAAY;MACzB,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;MACzC,IAAI;MACJ,IAAI;MACJ,KAAK;MACL,KAAK;MACL,KAAK,CAAC;CACX,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,EAAE,GAAG,WAAW;EACjC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAC;CAClD,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,OAAO,EAAE;EAChD,IAAI,IAAI,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC;EACjC,OAAO,GAAG,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;CACxD,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,IAAI,EAAE;EAC3C,OAAO,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CAClC,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,IAAI,EAAE;EAC5C,OAAO,KAAK,GAAG,IAAI,GAAG,QAAQ,CAAC;CAChC,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,MAAM,EAAE,IAAI,EAAE;EAChD,OAAO,WAAW;MACd,WAAW;MACX,MAAM;MACN,YAAY;MACZ,WAAW;MACX,IAAI;MACJ,YAAY;MACZ,YAAY,CAAC;CAClB,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,OAAO,EAAE;EAC9C,OAAO,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;CACvC,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,OAAO,EAAE,KAAK,EAAE;EACtD,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;EACtC,IAAI,GAAG,GAAG,KAAK,CAAC,KAAK;MACjB,GAAG,GAAG,IAAI,GAAG,qBAAqB,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI;MACvD,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC;EACrB,OAAO,GAAG,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;CAC5C,CAAC;;;AAGF,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,IAAI,EAAE;EACzC,OAAO,UAAU,GAAG,IAAI,GAAG,WAAW,CAAC;CACxC,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,IAAI,EAAE;EACrC,OAAO,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC;CAChC,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,IAAI,EAAE;EAC3C,OAAO,QAAQ,GAAG,IAAI,GAAG,SAAS,CAAC;CACpC,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,EAAE,GAAG,WAAW;EACjC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;CAC9C,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,IAAI,EAAE;EACtC,OAAO,OAAO,GAAG,IAAI,GAAG,QAAQ,CAAC;CAClC,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;EACpD,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;IACzB,IAAI;MACF,IAAI,IAAI,GAAG,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SAC1C,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;SACtB,WAAW,EAAE,CAAC;KAClB,CAAC,OAAO,CAAC,EAAE;MACV,OAAO,EAAE,CAAC;KACX;IACD,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;MACxE,OAAO,EAAE,CAAC;KACX;GACF;EACD,IAAI,GAAG,GAAG,WAAW,GAAG,IAAI,GAAG,GAAG,CAAC;EACnC,IAAI,KAAK,EAAE;IACT,GAAG,IAAI,UAAU,GAAG,KAAK,GAAG,GAAG,CAAC;GACjC;EACD,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,MAAM,CAAC;EAC3B,OAAO,GAAG,CAAC;CACZ,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;EACrD,IAAI,GAAG,GAAG,YAAY,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,GAAG,CAAC;EACvD,IAAI,KAAK,EAAE;IACT,GAAG,IAAI,UAAU,GAAG,KAAK,GAAG,GAAG,CAAC;GACjC;EACD,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,GAAG,GAAG,CAAC;EACvC,OAAO,GAAG,CAAC;CACZ,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE;EACvC,OAAO,IAAI,CAAC;CACb,CAAC;;;;;;AAMF,SAAS,MAAM,CAAC,OAAO,EAAE;EACvB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;EACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EAClB,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC;EAC1C,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,QAAQ,CAAC;EAC9D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;EACtC,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;CACtC;;;;;;AAMD,MAAM,CAAC,KAAK,GAAG,SAAS,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE;EAC9C,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;EAC3C,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;CAC1B,CAAC;;;;;;AAMF,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,GAAG,EAAE;;;EACrC,IAAI,CAAC,MAAM,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;EACtE,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;;EAE5B,IAAI,GAAG,GAAG,EAAE,CAAC;EACb,OAAO,IAAI,CAAC,IAAI,EAAE,EAAE;IAClB,GAAG,IAAIA,MAAI,CAAC,GAAG,EAAE,CAAC;GACnB;;EAED,OAAO,GAAG,CAAC;CACZ,CAAC;;;;;;AAMF,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,WAAW;EACjC,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;CACvC,CAAC;;;;;;AAMF,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,WAAW;EACjC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;CACjD,CAAC;;;;;;AAMF,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,WAAW;;;EACtC,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;;EAE3B,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,EAAE;IAClC,IAAI,IAAI,IAAI,GAAGA,MAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC;GACjC;;EAED,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CACjC,CAAC;;;;;;AAMF,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,WAAW;;;EAChC,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI;IACrB,KAAK,OAAO,EAAE;MACZ,OAAO,EAAE,CAAC;KACX;IACD,KAAK,IAAI,EAAE;MACT,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;KAC3B;IACD,KAAK,SAAS,EAAE;MACd,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO;QAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,KAAK;QAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KACpB;IACD,KAAK,MAAM,EAAE;MACX,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI;QACvC,IAAI,CAAC,KAAK,CAAC,IAAI;QACf,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;KACvB;IACD,KAAK,OAAO,EAAE;MACZ,IAAI,MAAM,GAAG,EAAE;UACX,IAAI,GAAG,EAAE;UACT,CAAC;UACD,GAAG;UACH,IAAI;UACJ,KAAK;UACL,CAAC,CAAC;;;MAGN,IAAI,GAAG,EAAE,CAAC;MACV,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC7C,KAAK,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAEA,MAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,IAAI,IAAIA,MAAI,CAAC,QAAQ,CAAC,SAAS;UAC7BA,MAAI,CAAC,MAAM,CAAC,MAAM,CAACA,MAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;UACxC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAEA,MAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;SAC7C,CAAC;OACH;MACD,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;MAEvC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC5C,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;;QAE1B,IAAI,GAAG,EAAE,CAAC;QACV,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;UAC/B,IAAI,IAAIA,MAAI,CAAC,QAAQ,CAAC,SAAS;YAC7BA,MAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1B,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAEA,MAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;WAC9C,CAAC;SACH;;QAED,IAAI,IAAIA,MAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;OACtC;MACD,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;KAC1C;IACD,KAAK,kBAAkB,EAAE;MACvB,IAAI,IAAI,GAAG,EAAE,CAAC;;MAEd,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,gBAAgB,EAAE;QAC5C,IAAI,IAAIA,MAAI,CAAC,GAAG,EAAE,CAAC;OACpB;;MAED,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KACvC;IACD,KAAK,YAAY,EAAE;MACjB,IAAI,IAAI,GAAG,EAAE;UACT,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;;MAEjC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,UAAU,EAAE;QACtC,IAAI,IAAIA,MAAI,CAAC,GAAG,EAAE,CAAC;OACpB;;MAED,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KAC1C;IACD,KAAK,iBAAiB,EAAE;MACtB,IAAI,IAAI,GAAG,EAAE,CAAC;;MAEd,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,eAAe,EAAE;QAC3C,IAAI,IAAIA,MAAI,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM;YAC9BA,MAAI,CAAC,SAAS,EAAE;YAChBA,MAAI,CAAC,GAAG,EAAE,CAAC;OAChB;;MAED,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACrC;IACD,KAAK,kBAAkB,EAAE;MACvB,IAAI,IAAI,GAAG,EAAE,CAAC;;MAEd,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,eAAe,EAAE;QAC3C,IAAI,IAAIA,MAAI,CAAC,GAAG,EAAE,CAAC;OACpB;;MAED,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACrC;IACD,KAAK,MAAM,EAAE;MACX,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;UAChD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;UACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;MACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACjC;IACD,KAAK,WAAW,EAAE;MAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;KACrE;IACD,KAAK,MAAM,EAAE;MACX,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;KAClD;GACF;CACF,CAAC;;;;;;AAMF,SAAS,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE;EAC5B,OAAO,IAAI;KACR,OAAO,CAAC,CAAC,MAAM,GAAG,cAAc,GAAG,IAAI,EAAE,OAAO,CAAC;KACjD,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;KACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;KACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;KACvB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;CAC3B;;AAED,SAAS,QAAQ,CAAC,IAAI,EAAE;;EAEtB,OAAO,IAAI,CAAC,OAAO,CAAC,2CAA2C,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE;IAC9E,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IACpB,IAAI,CAAC,KAAK,OAAO,EAAE,EAAA,OAAO,GAAG,CAAC,EAAA;IAC9B,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;MACvB,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;UACtB,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;UACjD,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;KAC1C;IACD,OAAO,EAAE,CAAC;GACX,CAAC,CAAC;CACJ;;AAED,SAAS,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE;EAC3B,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;EACrB,GAAG,GAAG,GAAG,IAAI,EAAE,CAAC;EAChB,OAAO,SAAS,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE;IAC9B,IAAI,CAAC,IAAI,EAAE,EAAA,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,EAAA;IACzC,GAAG,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC;IACxB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IACxC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACjC,OAAO,IAAI,CAAC;GACb,CAAC;CACH;;AAED,SAAS,IAAI,GAAG,EAAE;AAClB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;;AAEjB,SAAS,KAAK,CAAC,GAAG,EAAE;;;EAClB,IAAI,CAAC,GAAG,CAAC;MACL,MAAM;MACN,GAAG,CAAC;;EAER,OAAO,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAChC,MAAM,GAAGK,WAAS,CAAC,CAAC,CAAC,CAAC;IACtB,KAAK,GAAG,IAAI,MAAM,EAAE;MAClB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;QACrD,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;OACxB;KACF;GACF;;EAED,OAAO,GAAG,CAAC;CACZ;;;;;;;AAOD,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE;EAClC,IAAI,QAAQ,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;IACzC,IAAI,CAAC,QAAQ,EAAE;MACb,QAAQ,GAAG,GAAG,CAAC;MACf,GAAG,GAAG,IAAI,CAAC;KACZ;;IAED,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;;IAE5C,IAAI,SAAS,GAAG,GAAG,CAAC,SAAS;QACzB,MAAM;QACN,OAAO;QACP,CAAC,GAAG,CAAC,CAAC;;IAEV,IAAI;MACF,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;KAC7B,CAAC,OAAO,CAAC,EAAE;MACV,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;KACpB;;IAED,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;;IAExB,IAAI,IAAI,GAAG,SAAS,GAAG,EAAE;MACvB,IAAI,GAAG,EAAE;QACP,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;QAC1B,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;OACtB;;MAED,IAAI,GAAG,CAAC;;MAER,IAAI;QACF,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;OACjC,CAAC,OAAO,CAAC,EAAE;QACV,GAAG,GAAG,CAAC,CAAC;OACT;;MAED,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;;MAE1B,OAAO,GAAG;UACN,QAAQ,CAAC,GAAG,CAAC;UACb,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KACzB,CAAC;;IAEF,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;MACtC,OAAO,IAAI,EAAE,CAAC;KACf;;IAED,OAAO,GAAG,CAAC,SAAS,CAAC;;IAErB,IAAI,CAAC,OAAO,EAAE,EAAA,OAAO,IAAI,EAAE,CAAC,EAAA;;IAE5B,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;MAC7B,CAAC,SAAS,KAAK,EAAE;QACf,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;UACzB,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,CAAC;SAC5B;QACD,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,GAAG,EAAE,IAAI,EAAE;UAC3D,IAAI,GAAG,EAAE,EAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAA;UAC1B,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE;YACvC,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,CAAC;WAC5B;UACD,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;UAClB,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;UACrB,EAAE,OAAO,IAAI,IAAI,EAAE,CAAC;SACrB,CAAC,CAAC;OACJ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;KACf;;IAED,OAAO;GACR;EACD,IAAI;IACF,IAAI,GAAG,EAAE,EAAA,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,EAAA;IAC/C,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;GAC/C,CAAC,OAAO,CAAC,EAAE;IACV,CAAC,CAAC,OAAO,IAAI,yDAAyD,CAAC;IACvE,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE;MACnC,OAAO,+BAA+B;UAClC,MAAM,CAAC,CAAC,CAAC,OAAO,GAAG,EAAE,EAAE,IAAI,CAAC;UAC5B,QAAQ,CAAC;KACd;IACD,MAAM,CAAC,CAAC;GACT;CACF;;;;;;AAMD,MAAM,CAAC,OAAO;AACd,MAAM,CAAC,UAAU,GAAG,SAAS,GAAG,EAAE;EAChC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;EAC5B,OAAO,MAAM,CAAC;CACf,CAAC;;AAEF,MAAM,CAAC,QAAQ,GAAG;EAChB,GAAG,EAAE,IAAI;EACT,MAAM,EAAE,IAAI;EACZ,MAAM,EAAE,KAAK;EACb,QAAQ,EAAE,KAAK;EACf,QAAQ,EAAE,KAAK;EACf,SAAS,EAAE,IAAI;EACf,MAAM,EAAE,IAAI;EACZ,UAAU,EAAE,KAAK;EACjB,MAAM,EAAE,KAAK;EACb,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,OAAO;EACnB,WAAW,EAAE,KAAK;EAClB,YAAY,EAAE,EAAE;EAChB,QAAQ,EAAE,IAAI,QAAQ;EACtB,KAAK,EAAE,KAAK;CACb,CAAC;;;;;;AAMF,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;;AAE7B,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;;AAE3B,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;;AAEzB,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;AACjC,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC;;AAExC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC;;AAEtB,IAAI,QAAa,KAAK,WAAW,IAAI,QAAc,KAAK,QAAQ,EAAE;EAChE,cAAc,GAAG,MAAM,CAAC;CACzB,MAAM,IAAI,OAAOiC,SAAM,KAAK,UAAU,IAAIA,SAAM,CAAC,GAAG,EAAE;EACrDA,SAAM,CAAC,WAAW,EAAE,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC;CACvC,MAAM;EACL,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;CACtB;;CAEA,EAAE,IAAI,CAAC,WAAW;EACjB,OAAO,IAAI,KAAK,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,GAAGC,cAAM,CAAC,CAAC;CAClE,EAAE,CAAC,CAAC;;;ACnwCL,MAAM,CAAC,UAAU,CAAC;EAChB,GAAG,EAAE,IAAI;EACT,WAAW,EAAE,IAAI;CAClB,CAAC,CAAC;;AAEH,eAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjC7C,IAAI,gBAAgB,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;EACzE,gBAAgB,CAAC,OAAO,CAAC,UAAA,EAAE,EAAC;IAC1BA,IAAI,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC;;IAE3B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACpCA,IAAI,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IAC9D,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;;IAEzB,EAAE,CAAC,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;GAChC,CAAC,CAAC;CACJ,CAAA;;;;;;;ACdD,IAAI,KAAK,GAAG,CAAC,OAAO,MAAM,KAAK,WAAW;GACvC,MAAM;;EAEP,CAAC,OAAO,iBAAiB,KAAK,WAAW,IAAI,IAAI,YAAY,iBAAiB;IAC5E,IAAI;IACJ,EAAE;EACJ,CAAC;;;;;;;;AAQH,IAAI,KAAK,GAAG,CAAC,UAAU;;;AAGvB,IAAI,IAAI,GAAG,0BAA0B,CAAC;AACtC,IAAI,QAAQ,GAAG,CAAC,CAAC;;AAEjB,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG;CACrB,IAAI,EAAE;EACL,MAAM,EAAE,UAAU,MAAM,EAAE;GACzB,IAAI,MAAM,YAAY,KAAK,EAAE;IAC5B,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3E,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,OAAO,EAAE;IAC3C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM;IACN,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACnF;GACD;;EAED,IAAI,EAAE,UAAU,CAAC,EAAE;GAClB,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;GACtE;;EAED,KAAK,EAAE,UAAU,GAAG,EAAE;GACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;IACjB,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1D;GACD,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC;GACnB;;;EAGD,KAAK,EAAE,UAAU,CAAC,EAAE;GACnB,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;GAE1B,QAAQ,IAAI;IACX,KAAK,QAAQ;KACZ,IAAI,KAAK,GAAG,EAAE,CAAC;;KAEf,KAAK,IAAI,GAAG,IAAI,CAAC,EAAE;MAClB,IAAI,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;OAC1B,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;OAClC;MACD;;KAED,OAAO,KAAK,CAAC;;IAEd,KAAK,OAAO;;KAEX,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAChE;;GAED,OAAO,CAAC,CAAC;GACT;EACD;;CAED,SAAS,EAAE;EACV,MAAM,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE;GAC5B,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;;GAEzC,KAAK,IAAI,GAAG,IAAI,KAAK,EAAE;IACtB,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB;;GAED,OAAO,IAAI,CAAC;GACZ;;;;;;;;;;;EAWD,YAAY,EAAE,UAAU,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;GACrD,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC;GAC3B,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;;GAE3B,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE;IAC1B,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;;IAEtB,KAAK,IAAI,QAAQ,IAAI,MAAM,EAAE;KAC5B,IAAI,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;MACpC,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;MACrC;KACD;;IAED,OAAO,OAAO,CAAC;IACf;;GAED,IAAI,GAAG,GAAG,EAAE,CAAC;;GAEb,KAAK,IAAI,KAAK,IAAI,OAAO,EAAE;;IAE1B,IAAI,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;;KAElC,IAAI,KAAK,IAAI,MAAM,EAAE;;MAEpB,KAAK,IAAI,QAAQ,IAAI,MAAM,EAAE;;OAE5B,IAAI,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;QACpC,GAAG,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjC;OACD;MACD;;KAED,GAAG,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;KAC5B;IACD;;;GAGD,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,GAAG,EAAE,KAAK,EAAE;IACjD,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,MAAM,EAAE;KAC5C,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;KAChB;IACD,CAAC,CAAC;;GAEH,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;GAC1B;;;EAGD,GAAG,EAAE,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;GACzC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;GACxB,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE;IAChB,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;KACxB,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC;;KAErC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;MACnE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;MACnC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;MAC/C;UACI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;MACvE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;MACnC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;MAC5C;KACD;IACD;GACD;EACD;CACD,OAAO,EAAE,EAAE;;CAEX,YAAY,EAAE,SAAS,KAAK,EAAE,QAAQ,EAAE;EACvC,IAAI,GAAG,GAAG;GACT,QAAQ,EAAE,QAAQ;GAClB,QAAQ,EAAE,kGAAkG;GAC5G,CAAC;;EAEF,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;;EAExC,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;;EAEvE,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG;GAChD,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,KAAK,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;GAC1D;EACD;;CAED,gBAAgB,EAAE,SAAS,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE;;EAEpD,IAAI,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;;EAExC,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;GAC9C,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;GAC3B;;EAED,IAAI,MAAM,EAAE;GACX,QAAQ,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;GACpE,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;GAChC;;;EAGD,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,YAAY,GAAG,QAAQ,CAAC;;;EAGvG,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;;EAE5B,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;GACjC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,YAAY,GAAG,QAAQ,CAAC;GACrG;;EAED,IAAI,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC;;EAE/B,IAAI,GAAG,GAAG;GACT,OAAO,EAAE,OAAO;GAChB,QAAQ,EAAE,QAAQ;GAClB,OAAO,EAAE,OAAO;GAChB,IAAI,EAAE,IAAI;GACV,CAAC;;EAEF,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;;EAExC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;GAC9B,IAAI,GAAG,CAAC,IAAI,EAAE;IACb,GAAG,CAAC,OAAO,CAAC,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC;IACnC;GACD,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;GAC7B,OAAO;GACP;;EAED,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;;EAErC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;GAC1B,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;;GAEpC,MAAM,CAAC,SAAS,GAAG,SAAS,GAAG,EAAE;IAChC,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,IAAI,CAAC;;IAE/B,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;;IAElC,GAAG,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG,CAAC,eAAe,CAAC;;IAE5C,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAC7B,CAAC;;GAEF,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;IACjC,QAAQ,EAAE,GAAG,CAAC,QAAQ;IACtB,IAAI,EAAE,GAAG,CAAC,IAAI;IACd,cAAc,EAAE,IAAI;IACpB,CAAC,CAAC,CAAC;GACJ;OACI;GACJ,GAAG,CAAC,eAAe,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;;GAEvE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;;GAElC,GAAG,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG,CAAC,eAAe,CAAC;;GAE5C,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;GAEnC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;GACpC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;GAC7B;EACD;;CAED,SAAS,EAAE,UAAU,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE;EAC7C,IAAI,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;EACvC,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;EACxD;;CAED,QAAQ,EAAE,SAAS,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE;EAC3C,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;;EAEpB,IAAI,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;;EAEpB,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;;EAExB,IAAI,IAAI,EAAE;GACT,KAAK,IAAI,KAAK,IAAI,IAAI,EAAE;IACvB,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B;;GAED,OAAO,OAAO,CAAC,IAAI,CAAC;GACpB;;EAED,SAAS,EAAE,KAAK,IAAI,KAAK,IAAI,OAAO,EAAE;GACrC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;IACrD,SAAS;IACT;;GAED,IAAI,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;GAC9B,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,OAAO,IAAI,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC;;GAEvE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;IACzC,IAAI,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC;KACxB,MAAM,GAAG,OAAO,CAAC,MAAM;KACvB,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU;KACjC,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM;KACzB,gBAAgB,GAAG,CAAC;KACpB,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;;IAEvB,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE;;KAEtC,IAAI,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;KAC5D,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,GAAG,GAAG,CAAC,CAAC;KAC9D;;IAED,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC;;;IAGrC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;;KAErE,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;;KAEpB,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;;MAEhC,MAAM,SAAS,CAAC;MAChB;;KAED,IAAI,GAAG,YAAY,KAAK,EAAE;MACzB,SAAS;MACT;;KAED,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;;KAEtB,IAAI,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;SACzB,MAAM,GAAG,CAAC,CAAC;;;KAGf,IAAI,CAAC,KAAK,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;MAC/C,OAAO,CAAC,SAAS,GAAG,GAAG,CAAC;MACxB,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;MAC3B,IAAI,CAAC,KAAK,EAAE;OACX,MAAM;OACN;;MAED,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,IAAI,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;UACvD,EAAE,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM;UAClC,CAAC,GAAG,CAAC;UACL,CAAC,GAAG,GAAG,CAAC;;MAEZ,KAAK,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE;OACrD,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;;OAEtB,IAAI,IAAI,IAAI,CAAC,EAAE;QACd,EAAE,CAAC,CAAC;QACJ,GAAG,GAAG,CAAC,CAAC;QACR;OACD;;;;;;MAMD,IAAI,MAAM,CAAC,CAAC,CAAC,YAAY,KAAK,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE;OACvD,SAAS;OACT;;;MAGD,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;MACf,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;MACzB,KAAK,CAAC,KAAK,IAAI,GAAG,CAAC;MACnB;;KAED,IAAI,CAAC,KAAK,EAAE;MACX,SAAS;MACT;;KAED,GAAG,UAAU,EAAE;MACd,gBAAgB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;MACnC;;KAED,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,GAAG,gBAAgB;SACrC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;SACxC,EAAE,GAAG,IAAI,GAAG,KAAK,CAAC,MAAM;SACxB,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;SAC3B,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;;KAE1B,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;;KAEvB,IAAI,MAAM,EAAE;MACX,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;MAClB;;KAED,IAAI,OAAO,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;;KAEhG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;KAEnB,IAAI,KAAK,EAAE;MACV,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;MACjB;;KAED,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;KAC3C;IACD;GACD;;EAED,OAAO,MAAM,CAAC;EACd;;CAED,KAAK,EAAE;EACN,GAAG,EAAE,EAAE;;EAEP,GAAG,EAAE,UAAU,IAAI,EAAE,QAAQ,EAAE;GAC9B,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;;GAExB,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;;GAEhC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;GAC3B;;EAED,GAAG,EAAE,UAAU,IAAI,EAAE,GAAG,EAAE;GACzB,IAAI,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;;GAElC,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;IACpC,OAAO;IACP;;GAED,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG;IACnD,QAAQ,CAAC,GAAG,CAAC,CAAC;IACd;GACD;EACD;CACD,CAAC;;AAEF,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,SAAS,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE;CACxE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;CACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;CACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;;CAEnB,IAAI,CAAC,MAAM,GAAG,CAAC,UAAU,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;CAC1C,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;CACvB,CAAC;;AAEF,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE;CAC/C,IAAI,OAAO,CAAC,IAAI,QAAQ,EAAE;EACzB,OAAO,CAAC,CAAC;EACT;;CAED,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE;EAC/B,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,OAAO,EAAE;GAC9B,OAAO,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;GAC7C,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;EACZ;;CAED,IAAI,GAAG,GAAG;EACT,IAAI,EAAE,CAAC,CAAC,IAAI;EACZ,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC;EACrD,GAAG,EAAE,MAAM;EACX,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC;EAC1B,UAAU,EAAE,EAAE;EACd,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,MAAM;EACd,CAAC;;CAEF,IAAI,GAAG,CAAC,IAAI,IAAI,SAAS,EAAE;EAC1B,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC;EACtC;;CAED,IAAI,CAAC,CAAC,KAAK,EAAE;EACZ,IAAI,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,OAAO,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;EACrE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;EACjD;;CAED,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;;CAEzB,IAAI,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE;EAC/D,OAAO,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,GAAG,CAAC;EAChF,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;CAEb,OAAO,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,UAAU,GAAG,GAAG,GAAG,UAAU,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;;CAElJ,CAAC;;AAEF,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;CACpB,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;;EAE5B,OAAO,KAAK,CAAC,KAAK,CAAC;EACnB;;CAED,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,GAAG,EAAE;EAC/C,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;MAC9B,IAAI,GAAG,OAAO,CAAC,QAAQ;MACvB,IAAI,GAAG,OAAO,CAAC,IAAI;MACnB,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;;EAE5C,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;EAC9D,IAAI,cAAc,EAAE;GACnB,KAAK,CAAC,KAAK,EAAE,CAAC;GACd;EACD,EAAE,KAAK,CAAC,CAAC;;CAEV,OAAO,KAAK,CAAC,KAAK,CAAC;CACnB;;;AAGD,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;;AAEpG,IAAI,MAAM,EAAE;CACX,CAAC,CAAC,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC;;CAExB,IAAI,QAAQ,CAAC,gBAAgB,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE;EACrE,GAAG,QAAQ,CAAC,UAAU,KAAK,SAAS,EAAE;GACrC,IAAI,MAAM,CAAC,qBAAqB,EAAE;IACjC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IAC7C,MAAM;IACN,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IACtC;GACD;OACI;GACJ,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC;GAC9D;EACD;CACD;;AAED,OAAO,KAAK,CAAC,KAAK,CAAC;;CAElB,GAAG,CAAC;;AAEL,IAAI,QAAa,KAAK,WAAW,IAAI,MAAM,CAAC,OAAO,EAAE;CACpD,cAAc,GAAG,KAAK,CAAC;CACvB;;;AAGD,IAAI,OAAO6C,cAAM,KAAK,WAAW,EAAE;CAClCA,cAAM,CAAC,KAAK,GAAG,KAAK,CAAC;CACrB;;;;;;;AAOD,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG;CACxB,SAAS,EAAE,iBAAiB;CAC5B,QAAQ,EAAE,gBAAgB;CAC1B,SAAS,EAAE,qBAAqB;CAChC,OAAO,EAAE,yBAAyB;CAClC,KAAK,EAAE;EACN,OAAO,EAAE,uGAAuG;EAChH,MAAM,EAAE;GACP,KAAK,EAAE;IACN,OAAO,EAAE,iBAAiB;IAC1B,MAAM,EAAE;KACP,aAAa,EAAE,OAAO;KACtB,WAAW,EAAE,cAAc;KAC3B;IACD;GACD,YAAY,EAAE;IACb,OAAO,EAAE,iCAAiC;IAC1C,MAAM,EAAE;KACP,aAAa,EAAE,QAAQ;KACvB;IACD;GACD,aAAa,EAAE,MAAM;GACrB,WAAW,EAAE;IACZ,OAAO,EAAE,WAAW;IACpB,MAAM,EAAE;KACP,WAAW,EAAE,cAAc;KAC3B;IACD;;GAED;EACD;CACD,QAAQ,EAAE,mBAAmB;CAC7B,CAAC;;;AAGF,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,EAAE;;CAErC,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;EAC1B,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;EAC5D;CACD,CAAC,CAAC;;AAEH,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;AAC7C,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;AAC9C,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;AAChD,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;;;;;;;AAO7C,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG;CACrB,SAAS,EAAE,kBAAkB;CAC7B,QAAQ,EAAE;EACT,OAAO,EAAE,2BAA2B;EACpC,MAAM,EAAE;GACP,MAAM,EAAE,SAAS;;GAEjB;EACD;CACD,KAAK,EAAE,8DAA8D;CACrE,UAAU,EAAE,8BAA8B;CAC1C,QAAQ,EAAE;EACT,OAAO,EAAE,6CAA6C;EACtD,MAAM,EAAE,IAAI;EACZ;CACD,UAAU,EAAE,wBAAwB;CACpC,WAAW,EAAE,iBAAiB;CAC9B,UAAU,EAAE,mBAAmB;CAC/B,aAAa,EAAE,UAAU;CACzB,CAAC;;AAEF,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;;AAElF,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE;CAC3B,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,EAAE;EAC7C,OAAO,EAAE;GACR,OAAO,EAAE,yCAAyC;GAClD,UAAU,EAAE,IAAI;GAChB,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG;GAC3B,KAAK,EAAE,cAAc;GACrB;EACD,CAAC,CAAC;;CAEH,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE;EACpD,YAAY,EAAE;GACb,OAAO,EAAE,sBAAsB;GAC/B,MAAM,EAAE;IACP,WAAW,EAAE;KACZ,OAAO,EAAE,YAAY;KACrB,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM;KACzC;IACD,aAAa,EAAE,uBAAuB;IACtC,YAAY,EAAE;KACb,OAAO,EAAE,KAAK;KACd,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG;KAC3B;IACD;GACD,KAAK,EAAE,cAAc;GACrB;EACD,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;CAC/B;;;;;;AAMD,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG;CACvB,SAAS,EAAE;EACV;GACC,OAAO,EAAE,2BAA2B;GACpC,UAAU,EAAE,IAAI;GAChB;EACD;GACC,OAAO,EAAE,kBAAkB;GAC3B,UAAU,EAAE,IAAI;GAChB;EACD;CACD,QAAQ,EAAE;EACT,OAAO,EAAE,8CAA8C;EACvD,MAAM,EAAE,IAAI;EACZ;CACD,YAAY,EAAE;EACb,OAAO,EAAE,sGAAsG;EAC/G,UAAU,EAAE,IAAI;EAChB,MAAM,EAAE;GACP,WAAW,EAAE,SAAS;GACtB;EACD;CACD,SAAS,EAAE,0GAA0G;CACrH,SAAS,EAAE,kBAAkB;CAC7B,UAAU,EAAE,mBAAmB;CAC/B,QAAQ,EAAE,+CAA+C;CACzD,UAAU,EAAE,yDAAyD;CACrE,aAAa,EAAE,eAAe;CAC9B,CAAC;;;;;;;AAOF,KAAK,CAAC,SAAS,CAAC,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE;CAC5D,SAAS,EAAE,2TAA2T;CACtU,QAAQ,EAAE,8EAA8E;;CAExF,UAAU,EAAE,uDAAuD;CACnE,UAAU,EAAE,kEAAkE;CAC9E,CAAC,CAAC;;AAEH,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,SAAS,EAAE;CACrD,OAAO,EAAE;EACR,OAAO,EAAE,8EAA8E;EACvF,UAAU,EAAE,IAAI;EAChB,MAAM,EAAE,IAAI;EACZ;CACD,CAAC,CAAC;;AAEH,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,QAAQ,EAAE;CACpD,iBAAiB,EAAE;EAClB,OAAO,EAAE,uBAAuB;EAChC,MAAM,EAAE,IAAI;EACZ,MAAM,EAAE;GACP,eAAe,EAAE;IAChB,OAAO,EAAE,aAAa;IACtB,MAAM,EAAE;KACP,2BAA2B,EAAE;MAC5B,OAAO,EAAE,WAAW;MACpB,KAAK,EAAE,aAAa;MACpB;KACD,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,UAAU;KAChC;IACD;GACD,QAAQ,EAAE,SAAS;GACnB;EACD;CACD,CAAC,CAAC;;AAEH,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE;CAC3B,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,EAAE;EAC7C,QAAQ,EAAE;GACT,OAAO,EAAE,2CAA2C;GACpD,UAAU,EAAE,IAAI;GAChB,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,UAAU;GAClC,KAAK,EAAE,qBAAqB;GAC5B;EACD,CAAC,CAAC;CACH;;AAED,KAAK,CAAC,SAAS,CAAC,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC;;;;;;AAMhD,CAAC,YAAY;CACZ,IAAI,OAAO,IAAI,KAAK,WAAW,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;EAC5F,OAAO;EACP;;CAED,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,WAAW;;EAErC,IAAI,UAAU,GAAG;GAChB,IAAI,EAAE,YAAY;GAClB,IAAI,EAAE,QAAQ;GACd,IAAI,EAAE,MAAM;GACZ,KAAK,EAAE,YAAY;GACnB,MAAM,EAAE,YAAY;GACpB,IAAI,EAAE,MAAM;GACZ,KAAK,EAAE,OAAO;GACd,GAAG,EAAE,GAAG;GACR,KAAK,EAAE,OAAO;GACd,CAAC;;EAEF,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE;GAC3B,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,GAAG,EAAE;IAC7F,IAAI,GAAG,GAAG,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;;IAEvC,IAAI,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC;IAC3B,IAAI,IAAI,GAAG,gCAAgC,CAAC;IAC5C,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;KAC9C,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;KAC3B;;IAED,IAAI,MAAM,EAAE;KACX,QAAQ,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KACpD;;IAED,IAAI,CAAC,QAAQ,EAAE;KACd,IAAI,SAAS,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KACrD,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;KAC9C;;IAED,IAAI,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC1C,IAAI,CAAC,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;;IAExC,GAAG,CAAC,WAAW,GAAG,EAAE,CAAC;;IAErB,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;;IAE9B,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;;IAEtB,IAAI,GAAG,GAAG,IAAI,cAAc,EAAE,CAAC;;IAE/B,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;;IAE3B,GAAG,CAAC,kBAAkB,GAAG,YAAY;KACpC,IAAI,GAAG,CAAC,UAAU,IAAI,CAAC,EAAE;;MAExB,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,YAAY,EAAE;OACzC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,YAAY,CAAC;;OAEpC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;OAC7B;WACI,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE;OAC3B,IAAI,CAAC,WAAW,GAAG,UAAU,GAAG,GAAG,CAAC,MAAM,GAAG,wBAAwB,GAAG,GAAG,CAAC,UAAU,CAAC;OACvF;WACI;OACJ,IAAI,CAAC,WAAW,GAAG,0CAA0C,CAAC;OAC9D;MACD;KACD,CAAC;;IAEF,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC,CAAC;GACH;;EAED,CAAC;;CAEF,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;;CAExE,GAAG,CAAC;;;ACxxBL,aAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjC7C,IAAI,YAAY,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;EAClE,YAAY,CAAC,OAAO,CAAC,UAAA,EAAE,EAAC;IACtBA,IAAI,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC;IAC7B,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC;IAClBA,IAAI,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IAC3CA,IAAI,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE;;MAEnC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;MACpCA,IAAI,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;MAChC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;MAC9D,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;MACzBA,IAAI,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;MACjC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;MACjB,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;KACnB,MAAM;MACL,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;KACnB;IACDA,IAAI,WAAW,GAAG,OAAO,CAAC;IAC1B,IAAI8C,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;MAC7B,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,QAAQ,CAAC,CAAC;MAChD,WAAW,GAAGA,KAAK,CAAC,SAAS,CAAC,OAAO,EAAEA,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;KACnE;IACD,CAAC,CAAC,SAAS,GAAG,WAAW,CAAC;GAC3B,CAAC,CAAC;CACJ,CAAA;;AC5BD,cAAe,SAAS,GAAG,EAAE,IAAI,EAAE;;EAEjC,IAAI,SAAS,GAAG,GAAG,CAAC,gBAAgB;IAClC,GAAG,CAAC,IAAI;IACR,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS;GACrC,CAAC;EACF,OAAO,SAAS,CAAC,QAAQ,EAAE,EAAE;IAC3B,IAAI,CAAC,GAAG,SAAS,CAAC,WAAW;QACzB,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC;IACvB,IAAI,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE;MACzB,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;MACpB,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;MACzB,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC;KACpB;GACF;CACF,CAAA;;AAED,SAAS,UAAU,CAAC,IAAI,EAAE;EACxB,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;EAChC,IAAI,MAAM,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;EAC1L,OAAO,MAAM;SACN,MAAM,CAAC,QAAQ,KAAK,QAAQ;SAC5B,MAAM,CAAC,QAAQ,KAAK,OAAO;SAC3B,MAAM,CAAC,QAAQ,KAAK,MAAM;SAC1B,MAAM,CAAC,QAAQ,KAAK,KAAK;SACzB,MAAM,CAAC,QAAQ,KAAK,MAAM;SAC1B,MAAM,CAAC,QAAQ,KAAK,WAAW;SAC/B,MAAM,CAAC,QAAQ,KAAK,WAAW;SAC/B,MAAM,CAAC,QAAQ,KAAK,SAAS;SAC7B,MAAM,CAAC,QAAQ,KAAK,SAAS;SAC7B,MAAM,CAAC,QAAQ,KAAK,iBAAiB;SACrC,MAAM,CAAC,QAAQ,KAAK,WAAW;SAC/B,MAAM,CAAC,QAAQ,KAAK,CAAC;SACrB,CAAC,MAAM,CAAC;CAChB;;;;;;;;;;;;;AAaD,SAAS,WAAW,CAAC,IAAI,CAAC;;;EAGxB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;EACrC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;;;EAGtD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;;;EAGnC,IAAI,IAAI,GAAG,QAAQ,CAAC;EACpB,IAAI,sBAAsB,GAAG,WAAW,CAAC;EACzC,IAAI,oBAAoB,GAAG,mBAAmB,CAAC;;EAE/C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC;EACzD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC;;EAEvD,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,MAAM,CAAC,IAAI,EAAE;;EAEpB,IAAI,GAAG,IAAI;KACR,OAAO,CAAC,4BAA4B,EAAE,YAAY,CAAC;KACnD,OAAO,CAAC,2CAA2C,EAAE,YAAY,CAAC;KAClE,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC;KAChC,OAAO,CAAC,cAAc,EAAE,YAAY,CAAC;KACrC,OAAO,CAAC,mBAAmB,EAAE,YAAY,CAAC;KAC1C,OAAO,CAAC,oCAAoC,EAAE,YAAY,CAAC;KAC3D,OAAO,CAAC,gEAAgE,EAAE,YAAY,CAAC;KACvF,OAAO,CAAC,+FAA+F,EAAE,UAAU,CAAC;KACpH,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC;KACzB,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC;KAC5B,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;;;EAG3B,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;EACjC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;EACjC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;EACjC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;;EAEjC,OAAO,IAAI,CAAC;CACb,AAED,AAMC,AAAC;;;;AC/FF,eAAe,SAAS,GAAG,EAAE;EAC3B9C,IAAI,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;EACpC,CAAC,CAAC,WAAW,GAAG+C,MAAI,CAAC;EACrB,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;CAC1C,CAAA;;ACND;;AAEA,uBAAe,SAAS,IAAI,EAAE;;;EAG5B,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC;;EAE9B,IAAI,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;EACpD,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC;MAClG,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;MACrC,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,eAAe,CAAC;;EAElG,IAAI,QAAQ;IACV,CAAC,SAAS,GAAG;;MAEX,EAAE,KAAK,EAAE;QACP,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE,sCAAsC;QAC7C,WAAW,EAAE,2CAA2C;QACxD,oBAAoB,EAAE,wFAAwF;OAC/G,CAAC;;MAEF,EAAE,IAAI,EAAE;QACN,CAAC,YAAY,EAAE,QAAQ,CAAC;QACxB,CAAC,SAAS,EAAE,eAAe,CAAC;QAC5B,CAAC,SAAS,EAAE;UACV,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;UAC5C,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAC7C,CAAC;QACF,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EACzC,CAAC;;MAEF,CAAC,IAAI,EAAE;QACL,CAAC,OAAO,EAAE;;UAER,CAAC,gBAAgB,EAAE;YACjB,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YAC3D,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YAC1F,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YACzB,CAAC,QAAQ,EAAE;cACT,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;cACvB,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAC7B,CAAC,EACH,CAAC;;UAEF,CAAC,aAAa,EAAE;YACd,CAAC,gBAAgB,EAAE;cACjB,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;cAC1B,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,EAC3B,CAAC;YACF,CAAC,cAAc,EAAE;cACf,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EACtB,CAAC;YACF,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EACpB,CAAC;;UAEF,CAAC,eAAe,EAAE;YAChB,CAAC,MAAM,EAAE;cACP,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EACpB,CAAC;YACF,EAAE,YAAY;cACZ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,MAAM,EAAE,GAAG,EAAE,SAAG;gBAChC,CAAC,WAAW,EAAE;kBACZ,EAAE,KAAK,EAAE;oBACP,gBAAgB,EAAE,QAAQ;oBAC1B,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,OAAO,GAAG,YAAY;mBAC7C,CAAC;kBACF,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC;kBAC9B,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC;kBAC1B,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC;;iBAElC,CAAC;eACH,GAAA,CAAC;aACH;YACD,CAAC,gBAAgB,EAAE;gBACf,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;gBAC1B,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACrB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;aAC7B,CAAC;YACF,EAAE,cAAc,EAAE;cAChB,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC;aACxB,CAAC;YACF,CAAC,QAAQ,EAAE;cACT,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;;cAEf,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,EACrB,CAAC;YACF,CAAC,aAAa;cACZ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAA,GAAG,EAAC,SACnB,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAA,CAAC;aAC/C;;WAEF,CAAC,EAEH,CAAC,EACH,CAAC,EACH,CAAC,CAAC;;EAEL,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC;CACtB,CAAA;;AAED,SAAS,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC;EAC7B,IAAI,GAAG,IAAI,SAAS,EAAE,EAAA,OAAO,EAAE,CAAC,EAAA;EAChC,IAAI,IAAI,GAAG,EAAE,CAAC;EACd,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;EAC/B,IAAI,OAAO,IAAI,GAAG;IAChB,EAAA,IAAI,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAA;EACxC,IAAI,QAAQ,IAAI,GAAG;IACjB,EAAA,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAA;EACzE,IAAI,SAAS,IAAI,GAAG;IAClB,EAAA,IAAI,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAA;EAC1C,IAAI,WAAW,IAAI,GAAG;IACpB,EAAA,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAA;EAC3C,IAAI,QAAQ,IAAI,GAAG;IACjB,EAAA,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAA;EAClC,IAAI,OAAO,IAAI,GAAG;IAChB,EAAA,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAA;EAChC,IAAI,KAAK,IAAI,GAAG;IACd,EAAA,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAA;EAC5B,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;CACxB;;AAED,SAAS,GAAG,CAAC,GAAG,EAAE;;EAEhB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,EAAA,OAAO,GAAG,CAAC,EAAA;EACxC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,EAAA,OAAO,EAAE,CAAC,GAAG,CAAC,EAAA;EAC3C/C,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC5B,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,EAAA,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,EAAA;EACvEA,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;EACnB,IAAI,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;EAC7B,IAAI,IAAI,GAAG,EAAE,CAAC;EACd,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9B,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,KAAK,IAAI,CAAC,KAAK,YAAY,EAAE;MAC3B,IAAI,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;MAC1B,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MACnC,IAAI,OAAO,IAAI,QAAQ,EAAE;QACvB,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;OACrB,MAAM;;QAEL,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;OACnB;KACF;GACF,MAAM;IACL,OAAO,GAAG,YAAY,CAAC;GACxB;EACD,IAAI,OAAO,IAAI,SAAS,CAAC;IACvB,OAAO,GAAG,WAAW,CAAA;GACtB;;EAEDA,IAAI,WAAW,GAAG,EAAE,CAAC;EACrB,KAAK,IAAI,CAAC,IAAI,IAAI,EAAE;IAClB,WAAW,IAAI,GAAE,GAAE,CAAC,QAAI,IAAE,IAAI,CAAC,CAAC,CAAC,CAAA,OAAG,CAAA;GACrC;;;EAGD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACzB,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,UAAA,CAAC,EAAC,SAAG,IAAI,GAAG,CAAC,GAAA,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC/C,IAAI,MAAM,GAAG,GAAE,GAAE,IAAI,GAAG,WAAW,QAAI,GAAE,OAAO,SAAK,GAAE,IAAI,MAAE,CAAE;GAChE,MAAM;IACL,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;IACvB,IAAI,MAAM,GAAG,GAAE,GAAE,IAAI,GAAG,WAAW,MAAE,GAAE,OAAO,OAAG,GAAE,IAAI,MAAE,CAAE;GAC5D;EACD,OAAO,MAAM,CAAC;CACf;;;;ACpKD0C,IAAMC,MAAI,GAAG,8tCAoET,GAAE,IAAI,iLASV,CAAA;;AAEA,aAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjC3C,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;EACxC,GAAG,EAAE,EAAE;IACL,EAAE,CAAC,SAAS,GAAG2C,MAAI,CAAC;GACrB,MAAM;IACL3C,IAAI,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAC5C,MAAM,CAAC,SAAS,GAAG2C,MAAI,CAAC;IACxB3C,IAAI,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;GACtC;CACF,CAAA;;ACzFDA,IAAI2C,MAAI,GAAG,2pBAiCP,GAAE,IAAI,2FAIV,CAAE;;AAEF,aAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjC3C,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;EACxC,GAAG,EAAE,EAAE;IACL,EAAE,CAAC,SAAS,GAAG2C,MAAI,CAAC;GACrB,MAAM;IACL3C,IAAI,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAC5C,MAAM,CAAC,SAAS,GAAG2C,MAAI,CAAC;IACxB3C,IAAI,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;GACvB;CACF,CAAA;;AChCD,SAAS,iBAAiB,CAAC,GAAG,EAAE;EAC9B,IAAI,CAAC,GAAG,CAAC,CAAC;EACV,MAAM,CAAC,GAAG,CAAC,CAAC;CACb;;AAED,SAAS,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE;EAC/B,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACvB,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACxB,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACtB,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EAChB,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EAClB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACpB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACpB+C,MAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EAChB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACpB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACpB,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACnB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;CACrB;;;AAGD,GAAG,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE;EAC5B/C,IAAI,IAAI,GAAG,EAAE,CAAC;EACd,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;EACnC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,UAAC,KAAK,EAAE;IAC3D,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;;IAEpC,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE;MACpF,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;KAC/B;IACD,gBAAgB,CAAC,IAAI,CAAC,CAAC;GACxB,CAAC,CAAC;CACJ;;;AAGD,SAASgD,QAAM,CAAC,GAAG,EAAE,IAAI,EAAE;EACzB,iBAAiB,CAAC,GAAG,CAAC,CAAC;EACvB,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;;EAExBhD,IAAI,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,qCAAqC,CAAC,CAAC;EACjE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,AAAC;CAC5C;;;AAGD,SAAS,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE;EAC7B,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EAClB,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;CACnB,AAED,AACA,AACA,AAA8C;;;;;;;;"} \ No newline at end of file From f2cbc9ead4424fc9e72f117a346e952700aaef3b Mon Sep 17 00:00:00 2001 From: Shan Carter Date: Mon, 20 Mar 2017 17:01:41 -0700 Subject: [PATCH 10/42] Adding links to footer --- components/footer.js | 21 +++++++++++++++++++-- dist/template.js | 2 +- dist/template.js.map | 2 +- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/components/footer.js b/components/footer.js index 4950db7..8697c5e 100644 --- a/components/footer.js +++ b/components/footer.js @@ -29,13 +29,30 @@ dt-footer .logo { text-decoration: none; margin-right: 6px; } +dt-footer .nav { + margin-top: 12px; +} +dt-footer .nav a { + color: rgba(255, 255, 255, 0.8); + margin-right: 6px; +} -
    +
    +
    is dedicated to clear explanations of machine learning + + is dedicated to clear explanations of machine learning +
    +
    `; diff --git a/dist/template.js b/dist/template.js index 85176e4..b7e3830 100644 --- a/dist/template.js +++ b/dist/template.js @@ -8670,7 +8670,7 @@ var header = function(dom, data) { } }; -var html$5 = "\n\n\n
    \n \n " + logo + "\n Distill\n is dedicated to clear explanations of machine learning\n
    \n"; +var html$5 = "\n\n\n
    \n
    \n \n " + logo + "\n Distill\n \n is dedicated to clear explanations of machine learning\n
    \n
    \n About\n Submit\n Prize\n RSS\n Twitter\n
    \n
    \n"; var footer = function(dom, data) { var el = dom.querySelector("dt-footer"); diff --git a/dist/template.js.map b/dist/template.js.map index fd3bc67..9467022 100644 --- a/dist/template.js.map +++ b/dist/template.js.map @@ -1 +1 @@ -{"version":3,"file":null,"sources":["../components/html.js","../components/styles.js","../node_modules/js-yaml/lib/js-yaml/common.js","../node_modules/js-yaml/lib/js-yaml/exception.js","../node_modules/js-yaml/lib/js-yaml/mark.js","../node_modules/js-yaml/lib/js-yaml/type.js","../node_modules/js-yaml/lib/js-yaml/schema.js","../node_modules/js-yaml/lib/js-yaml/type/str.js","../node_modules/js-yaml/lib/js-yaml/type/seq.js","../node_modules/js-yaml/lib/js-yaml/type/map.js","../node_modules/js-yaml/lib/js-yaml/schema/failsafe.js","../node_modules/js-yaml/lib/js-yaml/type/null.js","../node_modules/js-yaml/lib/js-yaml/type/bool.js","../node_modules/js-yaml/lib/js-yaml/type/int.js","../node_modules/js-yaml/lib/js-yaml/type/float.js","../node_modules/js-yaml/lib/js-yaml/schema/json.js","../node_modules/js-yaml/lib/js-yaml/schema/core.js","../node_modules/js-yaml/lib/js-yaml/type/timestamp.js","../node_modules/js-yaml/lib/js-yaml/type/merge.js","../node_modules/js-yaml/lib/js-yaml/type/binary.js","../node_modules/js-yaml/lib/js-yaml/type/omap.js","../node_modules/js-yaml/lib/js-yaml/type/pairs.js","../node_modules/js-yaml/lib/js-yaml/type/set.js","../node_modules/js-yaml/lib/js-yaml/schema/default_safe.js","../node_modules/js-yaml/lib/js-yaml/type/js/undefined.js","../node_modules/js-yaml/lib/js-yaml/type/js/regexp.js","../node_modules/js-yaml/lib/js-yaml/type/js/function.js","../node_modules/js-yaml/lib/js-yaml/schema/default_full.js","../node_modules/js-yaml/lib/js-yaml/loader.js","../node_modules/js-yaml/lib/js-yaml/dumper.js","../node_modules/js-yaml/lib/js-yaml.js","../node_modules/js-yaml/index.js","../components/front-matter.js","../node_modules/bibtex-parse-js/bibtexParse.js","../components/bibliography.js","../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/utcMinute.js","../node_modules/d3-time/src/utcHour.js","../node_modules/d3-time/src/utcDay.js","../node_modules/d3-time/src/utcWeek.js","../node_modules/d3-time/src/utcMonth.js","../node_modules/d3-time/src/utcYear.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-time-format/src/isoFormat.js","../node_modules/d3-time-format/src/isoParse.js","../components/expand-data.js","../../node_modules/escape-html/index.js","../components/meta.js","../components/banner.js","../node_modules/mustache/mustache.js","../components/byline.js","../components/appendix.js","../components/citation.js","../components/footnote.js","../node_modules/marked/lib/marked.js","../components/markdown.js","../node_modules/prismjs/prism.js","../components/code.js","../components/typeset.js","../components/hover-box-include.js","../components/generate-crossref.js","../components/header.js","../components/footer.js","../index.js"],"sourcesContent":["export default function(dom) {\n if (!dom.querySelector(\"html\").getAttribute(\"lang\")) {\n dom.querySelector(\"html\").setAttribute(\"lang\", \"en\")\n }\n\n let head = dom.querySelector(\"head\");\n\n if (!dom.querySelector(\"meta[charset]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"charset\", \"utf-8\");\n head.appendChild(meta);\n }\n if (!dom.querySelector(\"meta[name=viewport]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"name\", \"viewport\");\n meta.setAttribute(\"content\", \"width=device-width, initial-scale=1\");\n head.appendChild(meta);\n }\n}\n","import base from './styles-base.css';\nimport layout from './styles-layout.css';\nimport article from './styles-article.css';\nimport code from './styles-code.css';\nimport print from './styles-print.css';\n\nexport default function(dom) {\n let s = dom.createElement(\"style\");\n s.textContent = base + layout + article + code + print;\n dom.querySelector(\"head\").appendChild(s);\n}\n","'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n var result = this.name + ': ';\n\n result += this.reason || '(unknown reason)';\n\n if (!compact && this.mark) {\n result += ' ' + this.mark.toString();\n }\n\n return result;\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n\nvar common = require('./common');\n\n\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\n\n\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head, start, tail, end, snippet;\n\n if (!this.buffer) return null;\n\n indent = indent || 4;\n maxLength = maxLength || 75;\n\n head = '';\n start = this.position;\n\n while (start > 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n\n tail = '';\n end = this.position;\n\n while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n\n snippet = this.buffer.slice(start, end);\n\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' +\n common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\n\nMark.prototype.toString = function toString(compact) {\n var snippet, where = '';\n\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n if (!compact) {\n snippet = this.getSnippet();\n\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n\n return where;\n};\n\n\nmodule.exports = Mark;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name, result) {\n var exclude = [];\n\n schema.include.forEach(function (includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n\n schema[name].forEach(function (currentType) {\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n exclude.push(previousIndex);\n }\n });\n\n result.push(currentType);\n });\n\n return result.filter(function (type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {}\n }, index, length;\n\n function collectType(type) {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n\n this.implicit.forEach(function (type) {\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n });\n\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\n\nSchema.DEFAULT = null;\n\n\nSchema.create = function createSchema() {\n var schemas, types;\n\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n\n if (!schemas.every(function (schema) { return schema instanceof Schema; })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n\n if (!types.every(function (type) { return type instanceof Type; })) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n return new Schema({\n include: schemas,\n explicit: types\n });\n};\n\n\nmodule.exports = Schema;\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 8\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 10 (except 0) or base 60\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch === ':') break;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n if (!hasDigits) return false;\n\n // if !base60 - done;\n if (ch !== ':') return true;\n\n // base60 almost not used, no needs to optimize\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch, base, digits = [];\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value, 16);\n return sign * parseInt(value, 8);\n }\n\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseInt(v, 10));\n });\n\n value = 0;\n base = 1;\n\n digits.forEach(function (d) {\n value += (d * base);\n base *= 60;\n });\n\n return sign * value;\n\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (object) { return '0b' + object.toString(2); },\n octal: function (object) { return '0' + object.toString(8); },\n decimal: function (object) { return object.toString(10); },\n hexadecimal: function (object) { return '0x' + object.toString(16).toUpperCase(); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n '^(?:[-+]?(?:[0-9][0-9_]*)\\\\.[0-9_]*(?:[eE][-+][0-9]+)?' +\n '|\\\\.[0-9_]+(?:[eE][-+][0-9]+)?' +\n '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' +\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data)) return false;\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign, base, digits;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n\n } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n\n value = 0.0;\n base = 1;\n\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n\n return sign * value;\n\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./failsafe')\n ],\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./json')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\nvar NodeBuffer;\n\ntry {\n // A trick for browserified version, to not include `Buffer` shim\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n // Wrap into Buffer for NodeJS and leave Array for browser\n if (NodeBuffer) return new NodeBuffer(result);\n\n return result;\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./core')\n ],\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n return true;\n}\n\nfunction constructJavascriptUndefined() {\n /*eslint-disable no-undefined*/\n return undefined;\n}\n\nfunction representJavascriptUndefined() {\n return '';\n}\n\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n if (data === null) return false;\n if (data.length === 0) return false;\n\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // if regexp starts with '/' it can have modifiers and must be properly closed\n // `/foo/gim` - modifiers tail can be maximum 3 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n\n if (modifiers.length > 3) return false;\n // if expression starts with /, is should be properly terminated\n if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n }\n\n return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // `/foo/gim` - tail can be maximum 4 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n\n return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object /*, style*/) {\n var result = '/' + object.source + '/';\n\n if (object.global) result += 'g';\n if (object.multiline) result += 'm';\n if (object.ignoreCase) result += 'i';\n\n return result;\n}\n\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n","'use strict';\n\nvar esprima;\n\n// Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n// If not found - try to fallback to window.esprima. If not\n// found too - then fail to parse.\n//\ntry {\n // workaround to exclude package from browserify list.\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n /*global window */\n if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n if (data === null) return false;\n\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true });\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction constructJavascriptFunction(data) {\n /*jslint evil:true*/\n\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true }),\n params = [],\n body;\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n throw new Error('Failed to resolve function');\n }\n\n ast.body[0].expression.params.forEach(function (param) {\n params.push(param.name);\n });\n\n body = ast.body[0].expression.body.range;\n\n // Esprima's ranges include the first '{' and the last '}' characters on\n // function expressions. So cut them out.\n /*eslint-disable no-new-func*/\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n}\n\nfunction representJavascriptFunction(object /*, style*/) {\n return object.toString();\n}\n\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n","// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [\n require('./default_safe')\n ],\n explicit: [\n require('../type/js/undefined'),\n require('../type/js/regexp'),\n require('../type/js/function')\n ]\n});\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00);\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n return new YAMLException(\n message,\n new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length;\n _position < _length;\n _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode) {\n var index, quantity;\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n throwError(state, 'duplicated mapping key');\n }\n _result[keyNode] = valueNode;\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else {\n break; // Reading is done. Go to the epilogue.\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if (state.lineIndent > nodeIndent && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!state.anchorMap.hasOwnProperty(alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag !== null && state.tag !== '!') {\n if (state.tag === '?') {\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length;\n typeIndex < typeQuantity;\n typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only assigned to plain scalars. So, it isn't\n // needed to check for 'kind' conformity.\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = {};\n state.anchorMap = {};\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n var documents = loadDocuments(input, options), index, length;\n\n for (index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nfunction safeLoadAll(input, output, options) {\n loadAll(input, output, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nfunction safeLoad(input, options) {\n return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// Simplified test for values allowed after the first character in plain style.\nfunction isPlainSafe(c) {\n // Uses a subset of nb-char - c-flow-indicator - \":\" - \"#\"\n // where nb-char ::= c-printable - b-char - c-byte-order-mark.\n return isPrintable(c) && c !== 0xFEFF\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // - \":\" - \"#\"\n && c !== CHAR_COLON\n && c !== CHAR_SHARP;\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n return isPrintable(c) && c !== 0xFEFF\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {\n var i;\n var char;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(string.charCodeAt(0))\n && !isWhitespace(string.charCodeAt(string.length - 1));\n\n if (singleLineOnly) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n return plain && !testAmbiguousType(string)\n ? STYLE_PLAIN : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (string[0] === ' ' && indentPerLevel > 9) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey) {\n state.dump = (function () {\n if (string.length === 0) {\n return \"''\";\n }\n if (!state.noCompatMode &&\n DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n return \"'\" + string + \"'\";\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = (string[0] === ' ') ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char;\n var escapeSeq;\n\n for (var i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n result += !escapeSeq && isPrintable(char)\n ? string[i]\n : escapeSeq || encodeHex(char);\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level, object[index], false, false)) {\n if (index !== 0) _result += ', ';\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || index !== 0) {\n _result += generateNextLine(state, level);\n }\n _result += '- ' + state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (index !== 0) pairBuffer += ', ';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + ': ';\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || index !== 0) {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n state.tag = explicit ? type.tag : '?';\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n writeBlockSequence(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey);\n }\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n state.dump = '!<' + state.tag + '> ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n if (writeNode(state, 0, input, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nfunction safeDump(input, options) {\n return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n","'use strict';\n\n\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\n\n\nfunction deprecated(name) {\n return function () {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\n\n\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\n\n// Deprecated schema names from JS-YAML 2.0.x\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\n\n// Deprecated functions from JS-YAML 1.x.x\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","'use strict';\n\n\nvar yaml = require('./lib/js-yaml.js');\n\n\nmodule.exports = yaml;\n","import ymlParse from \"js-yaml\";\n\nexport default function(dom, data) {\n let localData = {};\n let el = dom.querySelector('script[type=\"text/front-matter\"]');\n if (el) {\n let text = el.textContent;\n localData = ymlParse.safeLoad(text);\n }\n\n data.title = localData.title ? localData.title : \"Untitled\";\n data.description = localData.description ? localData.description : \"No description.\";\n\n data.authors = localData.authors ? localData.authors : [];\n\n data.authors = data.authors.map((author, i) =>{\n let a = {};\n let name = Object.keys(author)[0];\n if ((typeof author) === \"string\") {\n name = author;\n } else {\n a.personalURL = author[name];\n }\n let names = name.split(\" \");\n a.name = name;\n a.firstName = names.slice(0, names.length - 1).join(\" \");\n a.lastName = names[names.length -1];\n if(localData.affiliations[i]) {\n let affiliation = Object.keys(localData.affiliations[i])[0];\n if ((typeof localData.affiliations[i]) === \"string\") {\n affiliation = localData.affiliations[i]\n } else {\n a.affiliationURL = localData.affiliations[i][affiliation];\n }\n a.affiliation = affiliation;\n }\n return a;\n });\n \n\n}\n","/* start bibtexParse 0.0.22 */\n\n//Original work by Henrik Muehe (c) 2010\n//\n//CommonJS port by Mikola Lysenko 2013\n//\n//Port to Browser lib by ORCID / RCPETERS\n//\n//Issues:\n//no comment handling within strings\n//no string concatenation\n//no variable values yet\n//Grammar implemented here:\n//bibtex -> (string | preamble | comment | entry)*;\n//string -> '@STRING' '{' key_equals_value '}';\n//preamble -> '@PREAMBLE' '{' value '}';\n//comment -> '@COMMENT' '{' value '}';\n//entry -> '@' key '{' key ',' key_value_list '}';\n//key_value_list -> key_equals_value (',' key_equals_value)*;\n//key_equals_value -> key '=' value;\n//value -> value_quotes | value_braces | key;\n//value_quotes -> '\"' .*? '\"'; // not quite\n//value_braces -> '{' .*? '\"'; // not quite\n(function(exports) {\n\n function BibtexParser() {\n \n this.months = [\"jan\", \"feb\", \"mar\", \"apr\", \"may\", \"jun\", \"jul\", \"aug\", \"sep\", \"oct\", \"nov\", \"dec\"];\n this.notKey = [',','{','}',' ','='];\n this.pos = 0;\n this.input = \"\";\n this.entries = new Array();\n\n this.currentEntry = \"\";\n\n this.setInput = function(t) {\n this.input = t;\n };\n\n this.getEntries = function() {\n return this.entries;\n };\n\n this.isWhitespace = function(s) {\n return (s == ' ' || s == '\\r' || s == '\\t' || s == '\\n');\n };\n\n this.match = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n this.pos += s.length;\n } else {\n throw \"Token mismatch, expected \" + s + \", found \"\n + this.input.substring(this.pos);\n };\n this.skipWhitespace(canCommentOut);\n };\n\n this.tryMatch = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n return true;\n } else {\n return false;\n };\n this.skipWhitespace(canCommentOut);\n };\n\n /* when search for a match all text can be ignored, not just white space */\n this.matchAt = function() {\n while (this.input.length > this.pos && this.input[this.pos] != '@') {\n this.pos++;\n };\n\n if (this.input[this.pos] == '@') {\n return true;\n };\n return false;\n };\n\n this.skipWhitespace = function(canCommentOut) {\n while (this.isWhitespace(this.input[this.pos])) {\n this.pos++;\n };\n if (this.input[this.pos] == \"%\" && canCommentOut == true) {\n while (this.input[this.pos] != \"\\n\") {\n this.pos++;\n };\n this.skipWhitespace(canCommentOut);\n };\n };\n\n this.value_braces = function() {\n var bracecount = 0;\n this.match(\"{\", false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '}') {\n if (bracecount > 0) {\n bracecount--;\n } else {\n var end = this.pos;\n this.match(\"}\", false);\n return this.input.substring(start, end);\n };\n } else if (this.input[this.pos] == '{') {\n bracecount++;\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value\";\n };\n };\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.value_comment = function() {\n var str = '';\n var brcktCnt = 0;\n while (!(this.tryMatch(\"}\", false) && brcktCnt == 0)) {\n str = str + this.input[this.pos];\n if (this.input[this.pos] == '{')\n brcktCnt++;\n if (this.input[this.pos] == '}')\n brcktCnt--;\n if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n this.pos++;\n };\n return str;\n };\n\n this.value_quotes = function() {\n this.match('\"', false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '\"') {\n var end = this.pos;\n this.match('\"', false);\n return this.input.substring(start, end);\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n }\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.single_value = function() {\n var start = this.pos;\n if (this.tryMatch(\"{\")) {\n return this.value_braces();\n } else if (this.tryMatch('\"')) {\n return this.value_quotes();\n } else {\n var k = this.key();\n if (k.match(\"^[0-9]+$\"))\n return k;\n else if (this.months.indexOf(k.toLowerCase()) >= 0)\n return k.toLowerCase();\n else\n throw \"Value expected:\" + this.input.substring(start) + ' for key: ' + k;\n \n };\n };\n\n this.value = function() {\n var values = [];\n values.push(this.single_value());\n while (this.tryMatch(\"#\")) {\n this.match(\"#\");\n values.push(this.single_value());\n };\n return values.join(\"\");\n };\n\n this.key = function() {\n var start = this.pos;\n while (true) {\n if (this.pos >= this.input.length) {\n throw \"Runaway key\";\n };\n // а-яА-Я is Cyrillic\n //console.log(this.input[this.pos]);\n if (this.notKey.indexOf(this.input[this.pos]) >= 0) {\n return this.input.substring(start, this.pos);\n } else {\n this.pos++;\n \n };\n };\n };\n\n this.key_equals_value = function() {\n var key = this.key();\n if (this.tryMatch(\"=\")) {\n this.match(\"=\");\n var val = this.value();\n return [ key, val ];\n } else {\n throw \"... = value expected, equals sign missing:\"\n + this.input.substring(this.pos);\n };\n };\n\n this.key_value_list = function() {\n var kv = this.key_equals_value();\n this.currentEntry['entryTags'] = {};\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n while (this.tryMatch(\",\")) {\n this.match(\",\");\n // fixes problems with commas at the end of a list\n if (this.tryMatch(\"}\")) {\n break;\n }\n ;\n kv = this.key_equals_value();\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n };\n };\n\n this.entry_body = function(d) {\n this.currentEntry = {};\n this.currentEntry['citationKey'] = this.key();\n this.currentEntry['entryType'] = d.substring(1);\n this.match(\",\");\n this.key_value_list();\n this.entries.push(this.currentEntry);\n };\n\n this.directive = function() {\n this.match(\"@\");\n return \"@\" + this.key();\n };\n\n this.preamble = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'PREAMBLE';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.comment = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'COMMENT';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.entry = function(d) {\n this.entry_body(d);\n };\n\n this.bibtex = function() {\n while (this.matchAt()) {\n var d = this.directive();\n this.match(\"{\");\n if (d == \"@STRING\") {\n this.string();\n } else if (d == \"@PREAMBLE\") {\n this.preamble();\n } else if (d == \"@COMMENT\") {\n this.comment();\n } else {\n this.entry(d);\n }\n this.match(\"}\");\n };\n };\n };\n \n exports.toJSON = function(bibtex) {\n var b = new BibtexParser();\n b.setInput(bibtex);\n b.bibtex();\n return b.entries;\n };\n\n /* added during hackathon don't hate on me */\n exports.toBibtex = function(json) {\n var out = '';\n for ( var i in json) {\n out += \"@\" + json[i].entryType;\n out += '{';\n if (json[i].citationKey)\n out += json[i].citationKey + ', ';\n if (json[i].entry)\n out += json[i].entry ;\n if (json[i].entryTags) {\n var tags = '';\n for (var jdx in json[i].entryTags) {\n if (tags.length != 0)\n tags += ', ';\n tags += jdx + '= {' + json[i].entryTags[jdx] + '}';\n }\n out += tags;\n }\n out += '}\\n\\n';\n }\n return out;\n \n };\n\n})(typeof exports === 'undefined' ? this['bibtexParse'] = {} : exports);\n\n/* end bibtexParse */\n","import bibtexParse from \"bibtex-parse-js\";\n\nexport default function(dom, data) {\n let el = dom.querySelector('script[type=\"text/bibliography\"]');\n let citations = [];\n let bibliography = {};\n //TODO If we don't have a local element, make a request for the document.\n if (el) {\n let rawBib = el.textContent;\n let parsed = bibtexParse.toJSON(rawBib);\n if(parsed) {\n parsed.forEach(e => {\n for (var k in e.entryTags){\n var val = e.entryTags[k];\n val = val.replace(/[\\t\\n ]+/g, \" \");\n val = val.replace(/{\\\\[\"^`\\.'acu~Hvs]( )?([a-zA-Z])}/g,\n (full, x, char) => char);\n val = val.replace(/{\\\\([a-zA-Z])}/g,\n (full, char) => char);\n e.entryTags[k] = val;\n }\n bibliography[e.citationKey] = e.entryTags;\n bibliography[e.citationKey].type = e.entryType;\n });\n }\n\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach(el => {\n let key = el.getAttribute(\"key\");\n if (key) {\n let citationKeys = key.split(\",\");\n citationKeys.forEach(key => {\n if (citations.indexOf(key) == -1){\n citations.push(key);\n if (!(key in bibliography)){\n console.warn(\"No bibliography entry found for: \" + key);\n }\n }\n });\n }\n });\n }\n data.bibliography = bibliography;\n data.citations = citations;\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(new Date(+start)); while (offseti(start, step), floori(start), start < stop)\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) while (--step >= 0) while (offseti(date, 1), !test(date)) {} // eslint-disable-line no-empty\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(Math.floor(date / durationSecond) * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(Math.floor(date / durationMinute) * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute} from \"./duration\";\n\nvar hour = interval(function(date) {\n var offset = date.getTimezoneOffset() * durationMinute % durationHour;\n if (offset < 0) offset += durationHour;\n date.setTime(Math.floor((+date - offset) / durationHour) * durationHour + offset);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval\";\nimport {durationWeek} from \"./duration\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {timeDay, timeSunday, timeMonday, timeYear, utcDay, utcSunday, utcMonday, utcYear} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"S\": formatSeconds,\n \"U\": formatWeekNumberSunday,\n \"w\": formatWeekdayNumber,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"S\": formatUTCSeconds,\n \"U\": formatUTCWeekNumberSunday,\n \"w\": formatUTCWeekdayNumber,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"S\": parseSeconds,\n \"U\": parseWeekNumberSunday,\n \"w\": parseWeekdayNumber,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0);\n if (i != string.length) return null;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n var day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?:\\:?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekdayNumber(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekdayNumber(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {timeFormat} from \"d3-time-format\";\n\nexport default function(dom, data) {\n\n data.authors = data.authors || [];\n\n // paths\n data.url = data.url ? data.url : \"http://distill.pub/\" + data.distillPath;\n data.githubUrl = \"https://github.com/\" + data.githubPath;\n\n data.previewURL = data.previewURL ? data.previewURL : data.url + \"/thumbnail.jpg\"\n\n // Homepage\n //data.homepage = !post.noHomepage;\n data.journal = data.journal || {};\n\n // Dates\n if (data.publishedDate){//} && data.journal) {\n data.volume = data.publishedDate.getFullYear() - 2015;\n data.issue = data.publishedDate.getMonth() + 1;\n }\n\n data.publishedDate = data.publishedDate ? data.publishedDate : new Date(\"Invalid\");\n data.updatedDate = data.updatedDate ? data.updatedDate : new Date(\"Invalid\");\n\n data.publishedDateRFC\n let RFC = timeFormat(\"%a, %d %b %Y %H:%M:%S %Z\");\n let months = [\"Jan\", \"Feb\", \"March\", \"April\", \"May\", \"June\", \"July\", \"Aug\", \"Sept\", \"Oct\", \"Nov\", \"Dec\"];\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n data.publishedDateRFC = RFC(data.publishedDate);\n data.publishedYear = data.publishedDate.getFullYear();\n data.publishedMonth = months[data.publishedDate.getMonth()];\n data.publishedDay = data.publishedDate.getDate();\n data.publishedMonthPadded = zeroPad(data.publishedDate.getMonth() + 1);\n data.publishedDayPadded = zeroPad(data.publishedDate.getDate());\n data.updatedDateRFC = RFC(data.updatedDate);\n\n if (data.authors.length > 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \", et al.\";\n } else if (data.authors.length === 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \" & \" + data.authors[1].lastName;\n } else if (data.authors.length === 1) {\n data.concatenatedAuthors = data.authors[0].lastName\n }\n\n data.bibtexAuthors = data.authors.map(function(author){\n return author.lastName + \", \" + author.firstName;\n }).join(\" and \");\n\n data.slug = data.authors.length ? data.authors[0].lastName.toLowerCase() + data.publishedYear + data.title.split(\" \")[0].toLowerCase() : \"Untitled\";\n\n}\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","import favicon from './distill-favicon.base64';\nimport escape from 'escape-html';\n\nexport default function(dom, data) {\n let head = dom.querySelector(\"head\");\n let appendHead = html => appendHtml(head, html);\n\n function meta(name, content, force) {\n if (content || force)\n appendHead(` \\n`);\n }\n\n appendHead(`\n \n \n \n \n ${data.title}\n `);\n\n appendHead(`\n \n \n \n `);\n data.authors.forEach((a) => {\n appendHtml(head, `\n `)\n });\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n // if this is a proprer article, generate Google Scholar meta data\n if (data.doiSuffix){\n appendHead(`\n \\n`);\n\n meta(\"citation_title\", data.title);\n //meta(\"citation_fulltext_html_url\", data.url);\n meta(\"citation_volume\", data.volume);\n meta(\"citation_issue\", data.issue);\n meta(\"citation_firstpage\", data.doiSuffix? `e${data.doiSuffix}` : undefined);\n meta(\"citation_doi\", data.doi);\n\n let journal = data.journal || {};\n meta(\"citation_journal_title\", journal.full_title || journal.title);\n meta(\"citation_journal_abbrev\", journal.abbrev_title);\n meta(\"citation_issn\", journal.issn);\n meta(\"citation_publisher\", journal.publisher);\n meta(\"citation_fulltext_world_readable\", \"\", true);\n\n if (data.publishedDate){\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n meta(\"citation_online_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n // Should we do something different here?\n meta(\"citation_publication_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n }\n\n (data.authors || []).forEach((a) => {\n meta(\"citation_author\", `${a.lastName}, ${a.firstName}`);\n meta(\"citation_author_institution\", a.affiliation);\n });\n\n if (data.citations) {\n data.citations.forEach(key => {\n let d = data.bibliography[key];\n if(!d) {\n console.warn(\"No bibliography data fround for \" + key)\n } else {\n meta(\"citation_reference\", citation_meta_content(data.bibliography[key]) )\n };\n });\n }\n }\n}\n\nfunction appendHtml(el, html) {\n el.innerHTML += html;\n}\n\nfunction citation_meta_content(ref){\n // Special test for arxiv\n var content = `citation_title=${ref.title};`;\n\n let name_strings = ref.author.split(\" and \").forEach(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1].trim();\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n content += `citation_author=${firsts} ${last};`;\n });\n\n if (\"year\" in ref) {\n content += `citation_publication_date=${ref.year};`;\n }\n\n var arxiv_id_search = /https?:\\/\\/arxiv\\.org\\/pdf\\/([0-9]*\\.[0-9]*)\\.pdf/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /https?:\\/\\/arxiv\\.org\\/abs\\/([0-9]*\\.[0-9]*)/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /arXiv preprint arXiv:([0-9]*\\.[0-9]*)/.exec(ref.journal);\n if (arxiv_id_search && arxiv_id_search[1]){\n content += `citation_arxiv_id=${arxiv_id_search[1]};`;\n return content;\n }\n if (\"journal\" in ref){\n content += `citation_journal_title=${ref.journal};`;\n }\n if (\"volume\" in ref) {\n content += `citation_volume=${ref.volume};`;\n }\n if (\"issue\" in ref || \"number\" in ref){\n content += `citation_number=${ref.issue || ref.number};`;\n }\n /*content += `citation_first_page=${};`;\n content += `citation_publication_date=${};`;*/\n return content;\n}\n","const html = `\n\n
    This article is a draft, awaiting review for publication in Distill
    \n`;\n\nexport default function(dom, data) {\n let banner = dom.createElement(\"dt-banner\");\n banner.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(banner, b.firstChild);\n banner.addEventListener(\"click\", function() {\n banner.style.display = \"none\";\n });\n}\n","/*!\n * mustache.js - Logic-less {{mustache}} templates with JavaScript\n * http://github.com/janl/mustache.js\n */\n\n/*global define: false Mustache: true*/\n\n(function defineMustache (global, factory) {\n if (typeof exports === 'object' && exports && typeof exports.nodeName !== 'string') {\n factory(exports); // CommonJS\n } else if (typeof define === 'function' && define.amd) {\n define(['exports'], factory); // AMD\n } else {\n global.Mustache = {};\n factory(global.Mustache); // script, wsh, asp\n }\n}(this, function mustacheFactory (mustache) {\n\n var objectToString = Object.prototype.toString;\n var isArray = Array.isArray || function isArrayPolyfill (object) {\n return objectToString.call(object) === '[object Array]';\n };\n\n function isFunction (object) {\n return typeof object === 'function';\n }\n\n /**\n * More correct typeof string handling array\n * which normally returns typeof 'object'\n */\n function typeStr (obj) {\n return isArray(obj) ? 'array' : typeof obj;\n }\n\n function escapeRegExp (string) {\n return string.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n }\n\n /**\n * Null safe way of checking whether or not an object,\n * including its prototype, has a given property\n */\n function hasProperty (obj, propName) {\n return obj != null && typeof obj === 'object' && (propName in obj);\n }\n\n // Workaround for https://issues.apache.org/jira/browse/COUCHDB-577\n // See https://github.com/janl/mustache.js/issues/189\n var regExpTest = RegExp.prototype.test;\n function testRegExp (re, string) {\n return regExpTest.call(re, string);\n }\n\n var nonSpaceRe = /\\S/;\n function isWhitespace (string) {\n return !testRegExp(nonSpaceRe, string);\n }\n\n var entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n function escapeHtml (string) {\n return String(string).replace(/[&<>\"'`=\\/]/g, function fromEntityMap (s) {\n return entityMap[s];\n });\n }\n\n var whiteRe = /\\s*/;\n var spaceRe = /\\s+/;\n var equalsRe = /\\s*=/;\n var curlyRe = /\\s*\\}/;\n var tagRe = /#|\\^|\\/|>|\\{|&|=|!/;\n\n /**\n * Breaks up the given `template` string into a tree of tokens. If the `tags`\n * argument is given here it must be an array with two string values: the\n * opening and closing tags used in the template (e.g. [ \"<%\", \"%>\" ]). Of\n * course, the default is to use mustaches (i.e. mustache.tags).\n *\n * A token is an array with at least 4 elements. The first element is the\n * mustache symbol that was used inside the tag, e.g. \"#\" or \"&\". If the tag\n * did not contain a symbol (i.e. {{myValue}}) this element is \"name\". For\n * all text that appears outside a symbol this element is \"text\".\n *\n * The second element of a token is its \"value\". For mustache tags this is\n * whatever else was inside the tag besides the opening symbol. For text tokens\n * this is the text itself.\n *\n * The third and fourth elements of the token are the start and end indices,\n * respectively, of the token in the original template.\n *\n * Tokens that are the root node of a subtree contain two more elements: 1) an\n * array of tokens in the subtree and 2) the index in the original template at\n * which the closing tag for that section begins.\n */\n function parseTemplate (template, tags) {\n if (!template)\n return [];\n\n var sections = []; // Stack to hold section tokens\n var tokens = []; // Buffer to hold the tokens\n var spaces = []; // Indices of whitespace tokens on the current line\n var hasTag = false; // Is there a {{tag}} on the current line?\n var nonSpace = false; // Is there a non-space char on the current line?\n\n // Strips all whitespace tokens array for the current line\n // if there was a {{#tag}} on it and otherwise only space.\n function stripSpace () {\n if (hasTag && !nonSpace) {\n while (spaces.length)\n delete tokens[spaces.pop()];\n } else {\n spaces = [];\n }\n\n hasTag = false;\n nonSpace = false;\n }\n\n var openingTagRe, closingTagRe, closingCurlyRe;\n function compileTags (tagsToCompile) {\n if (typeof tagsToCompile === 'string')\n tagsToCompile = tagsToCompile.split(spaceRe, 2);\n\n if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)\n throw new Error('Invalid tags: ' + tagsToCompile);\n\n openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\\\s*');\n closingTagRe = new RegExp('\\\\s*' + escapeRegExp(tagsToCompile[1]));\n closingCurlyRe = new RegExp('\\\\s*' + escapeRegExp('}' + tagsToCompile[1]));\n }\n\n compileTags(tags || mustache.tags);\n\n var scanner = new Scanner(template);\n\n var start, type, value, chr, token, openSection;\n while (!scanner.eos()) {\n start = scanner.pos;\n\n // Match any text between tags.\n value = scanner.scanUntil(openingTagRe);\n\n if (value) {\n for (var i = 0, valueLength = value.length; i < valueLength; ++i) {\n chr = value.charAt(i);\n\n if (isWhitespace(chr)) {\n spaces.push(tokens.length);\n } else {\n nonSpace = true;\n }\n\n tokens.push([ 'text', chr, start, start + 1 ]);\n start += 1;\n\n // Check for whitespace on the current line.\n if (chr === '\\n')\n stripSpace();\n }\n }\n\n // Match the opening tag.\n if (!scanner.scan(openingTagRe))\n break;\n\n hasTag = true;\n\n // Get the tag type.\n type = scanner.scan(tagRe) || 'name';\n scanner.scan(whiteRe);\n\n // Get the tag value.\n if (type === '=') {\n value = scanner.scanUntil(equalsRe);\n scanner.scan(equalsRe);\n scanner.scanUntil(closingTagRe);\n } else if (type === '{') {\n value = scanner.scanUntil(closingCurlyRe);\n scanner.scan(curlyRe);\n scanner.scanUntil(closingTagRe);\n type = '&';\n } else {\n value = scanner.scanUntil(closingTagRe);\n }\n\n // Match the closing tag.\n if (!scanner.scan(closingTagRe))\n throw new Error('Unclosed tag at ' + scanner.pos);\n\n token = [ type, value, start, scanner.pos ];\n tokens.push(token);\n\n if (type === '#' || type === '^') {\n sections.push(token);\n } else if (type === '/') {\n // Check section nesting.\n openSection = sections.pop();\n\n if (!openSection)\n throw new Error('Unopened section \"' + value + '\" at ' + start);\n\n if (openSection[1] !== value)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + start);\n } else if (type === 'name' || type === '{' || type === '&') {\n nonSpace = true;\n } else if (type === '=') {\n // Set the tags for the next time around.\n compileTags(value);\n }\n }\n\n // Make sure there are no open sections when we're done.\n openSection = sections.pop();\n\n if (openSection)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + scanner.pos);\n\n return nestTokens(squashTokens(tokens));\n }\n\n /**\n * Combines the values of consecutive text tokens in the given `tokens` array\n * to a single token.\n */\n function squashTokens (tokens) {\n var squashedTokens = [];\n\n var token, lastToken;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n if (token) {\n if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {\n lastToken[1] += token[1];\n lastToken[3] = token[3];\n } else {\n squashedTokens.push(token);\n lastToken = token;\n }\n }\n }\n\n return squashedTokens;\n }\n\n /**\n * Forms the given array of `tokens` into a nested tree structure where\n * tokens that represent a section have two additional items: 1) an array of\n * all tokens that appear in that section and 2) the index in the original\n * template that represents the end of that section.\n */\n function nestTokens (tokens) {\n var nestedTokens = [];\n var collector = nestedTokens;\n var sections = [];\n\n var token, section;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n switch (token[0]) {\n case '#':\n case '^':\n collector.push(token);\n sections.push(token);\n collector = token[4] = [];\n break;\n case '/':\n section = sections.pop();\n section[5] = token[2];\n collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;\n break;\n default:\n collector.push(token);\n }\n }\n\n return nestedTokens;\n }\n\n /**\n * A simple string scanner that is used by the template parser to find\n * tokens in template strings.\n */\n function Scanner (string) {\n this.string = string;\n this.tail = string;\n this.pos = 0;\n }\n\n /**\n * Returns `true` if the tail is empty (end of string).\n */\n Scanner.prototype.eos = function eos () {\n return this.tail === '';\n };\n\n /**\n * Tries to match the given regular expression at the current position.\n * Returns the matched text if it can match, the empty string otherwise.\n */\n Scanner.prototype.scan = function scan (re) {\n var match = this.tail.match(re);\n\n if (!match || match.index !== 0)\n return '';\n\n var string = match[0];\n\n this.tail = this.tail.substring(string.length);\n this.pos += string.length;\n\n return string;\n };\n\n /**\n * Skips all text until the given regular expression can be matched. Returns\n * the skipped string, which is the entire tail if no match can be made.\n */\n Scanner.prototype.scanUntil = function scanUntil (re) {\n var index = this.tail.search(re), match;\n\n switch (index) {\n case -1:\n match = this.tail;\n this.tail = '';\n break;\n case 0:\n match = '';\n break;\n default:\n match = this.tail.substring(0, index);\n this.tail = this.tail.substring(index);\n }\n\n this.pos += match.length;\n\n return match;\n };\n\n /**\n * Represents a rendering context by wrapping a view object and\n * maintaining a reference to the parent context.\n */\n function Context (view, parentContext) {\n this.view = view;\n this.cache = { '.': this.view };\n this.parent = parentContext;\n }\n\n /**\n * Creates a new context using the given view with this context\n * as the parent.\n */\n Context.prototype.push = function push (view) {\n return new Context(view, this);\n };\n\n /**\n * Returns the value of the given name in this context, traversing\n * up the context hierarchy if the value is absent in this context's view.\n */\n Context.prototype.lookup = function lookup (name) {\n var cache = this.cache;\n\n var value;\n if (cache.hasOwnProperty(name)) {\n value = cache[name];\n } else {\n var context = this, names, index, lookupHit = false;\n\n while (context) {\n if (name.indexOf('.') > 0) {\n value = context.view;\n names = name.split('.');\n index = 0;\n\n /**\n * Using the dot notion path in `name`, we descend through the\n * nested objects.\n *\n * To be certain that the lookup has been successful, we have to\n * check if the last object in the path actually has the property\n * we are looking for. We store the result in `lookupHit`.\n *\n * This is specially necessary for when the value has been set to\n * `undefined` and we want to avoid looking up parent contexts.\n **/\n while (value != null && index < names.length) {\n if (index === names.length - 1)\n lookupHit = hasProperty(value, names[index]);\n\n value = value[names[index++]];\n }\n } else {\n value = context.view[name];\n lookupHit = hasProperty(context.view, name);\n }\n\n if (lookupHit)\n break;\n\n context = context.parent;\n }\n\n cache[name] = value;\n }\n\n if (isFunction(value))\n value = value.call(this.view);\n\n return value;\n };\n\n /**\n * A Writer knows how to take a stream of tokens and render them to a\n * string, given a context. It also maintains a cache of templates to\n * avoid the need to parse the same template twice.\n */\n function Writer () {\n this.cache = {};\n }\n\n /**\n * Clears all cached templates in this writer.\n */\n Writer.prototype.clearCache = function clearCache () {\n this.cache = {};\n };\n\n /**\n * Parses and caches the given `template` and returns the array of tokens\n * that is generated from the parse.\n */\n Writer.prototype.parse = function parse (template, tags) {\n var cache = this.cache;\n var tokens = cache[template];\n\n if (tokens == null)\n tokens = cache[template] = parseTemplate(template, tags);\n\n return tokens;\n };\n\n /**\n * High-level method that is used to render the given `template` with\n * the given `view`.\n *\n * The optional `partials` argument may be an object that contains the\n * names and templates of partials that are used in the template. It may\n * also be a function that is used to load partial templates on the fly\n * that takes a single argument: the name of the partial.\n */\n Writer.prototype.render = function render (template, view, partials) {\n var tokens = this.parse(template);\n var context = (view instanceof Context) ? view : new Context(view);\n return this.renderTokens(tokens, context, partials, template);\n };\n\n /**\n * Low-level method that renders the given array of `tokens` using\n * the given `context` and `partials`.\n *\n * Note: The `originalTemplate` is only ever used to extract the portion\n * of the original template that was contained in a higher-order section.\n * If the template doesn't use higher-order sections, this argument may\n * be omitted.\n */\n Writer.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate) {\n var buffer = '';\n\n var token, symbol, value;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n value = undefined;\n token = tokens[i];\n symbol = token[0];\n\n if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate);\n else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate);\n else if (symbol === '>') value = this.renderPartial(token, context, partials, originalTemplate);\n else if (symbol === '&') value = this.unescapedValue(token, context);\n else if (symbol === 'name') value = this.escapedValue(token, context);\n else if (symbol === 'text') value = this.rawValue(token);\n\n if (value !== undefined)\n buffer += value;\n }\n\n return buffer;\n };\n\n Writer.prototype.renderSection = function renderSection (token, context, partials, originalTemplate) {\n var self = this;\n var buffer = '';\n var value = context.lookup(token[1]);\n\n // This function is used to render an arbitrary template\n // in the current context by higher-order sections.\n function subRender (template) {\n return self.render(template, context, partials);\n }\n\n if (!value) return;\n\n if (isArray(value)) {\n for (var j = 0, valueLength = value.length; j < valueLength; ++j) {\n buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate);\n }\n } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {\n buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate);\n } else if (isFunction(value)) {\n if (typeof originalTemplate !== 'string')\n throw new Error('Cannot use higher-order sections without the original template');\n\n // Extract the portion of the original template that the section contains.\n value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);\n\n if (value != null)\n buffer += value;\n } else {\n buffer += this.renderTokens(token[4], context, partials, originalTemplate);\n }\n return buffer;\n };\n\n Writer.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate) {\n var value = context.lookup(token[1]);\n\n // Use JavaScript's definition of falsy. Include empty arrays.\n // See https://github.com/janl/mustache.js/issues/186\n if (!value || (isArray(value) && value.length === 0))\n return this.renderTokens(token[4], context, partials, originalTemplate);\n };\n\n Writer.prototype.renderPartial = function renderPartial (token, context, partials) {\n if (!partials) return;\n\n var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\n if (value != null)\n return this.renderTokens(this.parse(value), context, partials, value);\n };\n\n Writer.prototype.unescapedValue = function unescapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return value;\n };\n\n Writer.prototype.escapedValue = function escapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return mustache.escape(value);\n };\n\n Writer.prototype.rawValue = function rawValue (token) {\n return token[1];\n };\n\n mustache.name = 'mustache.js';\n mustache.version = '2.3.0';\n mustache.tags = [ '{{', '}}' ];\n\n // All high-level mustache.* functions use this writer.\n var defaultWriter = new Writer();\n\n /**\n * Clears all cached templates in the default writer.\n */\n mustache.clearCache = function clearCache () {\n return defaultWriter.clearCache();\n };\n\n /**\n * Parses and caches the given template in the default writer and returns the\n * array of tokens it contains. Doing this ahead of time avoids the need to\n * parse templates on the fly as they are rendered.\n */\n mustache.parse = function parse (template, tags) {\n return defaultWriter.parse(template, tags);\n };\n\n /**\n * Renders the `template` with the given `view` and `partials` using the\n * default writer.\n */\n mustache.render = function render (template, view, partials) {\n if (typeof template !== 'string') {\n throw new TypeError('Invalid template! Template should be a \"string\" ' +\n 'but \"' + typeStr(template) + '\" was given as the first ' +\n 'argument for mustache#render(template, view, partials)');\n }\n\n return defaultWriter.render(template, view, partials);\n };\n\n // This is here for backwards compatibility with 0.4.x.,\n /*eslint-disable */ // eslint wants camel cased function name\n mustache.to_html = function to_html (template, view, partials, send) {\n /*eslint-enable*/\n\n var result = mustache.render(template, view, partials);\n\n if (isFunction(send)) {\n send(result);\n } else {\n return result;\n }\n };\n\n // Export the escaping function so that the user may override it.\n // See https://github.com/janl/mustache.js/issues/244\n mustache.escape = escapeHtml;\n\n // Export these mainly for testing, but also for advanced usage.\n mustache.Scanner = Scanner;\n mustache.Context = Context;\n mustache.Writer = Writer;\n\n return mustache;\n}));\n","import mustache from \"mustache\";\n\nconst html = `\n\n\n`;\n\nconst template = `\n
    \n
    \n {{#authors}}\n
    \n {{#personalURL}}\n {{name}}\n {{/personalURL}}\n {{^personalURL}}\n
    {{name}}
    \n {{/personalURL}}\n {{#affiliation}}\n {{#affiliationURL}}\n {{affiliation}}\n {{/affiliationURL}}\n {{^affiliationURL}}\n
    {{affiliation}}
    \n {{/affiliationURL}}\n {{/affiliation}}\n
    \n {{/authors}}\n
    \n
    \n
    {{publishedMonth}}. {{publishedDay}}
    \n
    {{publishedYear}}
    \n
    \n \n
    Citation:
    \n
    {{concatenatedAuthors}}, {{publishedYear}}
    \n
    \n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-byline');\n if (el) {\n el.innerHTML = html + mustache.render(template, data);\n }\n}\n","const html = `\n\n\n
    \n

    References

    \n \n

    Errors, Reuse, and Citation

    \n

    If you see mistakes or want to suggest changes, please create an issue on GitHub.

    \n

    Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on GitHub. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: “Figure from …”.

    \n

    For attribution in academic contexts, please cite this work as

    \n
    \n  

    BibTeX citation

    \n
    \n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-appendix')\n if (el) {\n let oldHtml = el.innerHTML;\n el.innerHTML = html;\n let div = el.querySelector(\"div.l-body\")\n\n if (dom.querySelector(\"dt-fn\")) {\n div.innerHTML = `

    Footnotes

    ` + div.innerHTML;\n }\n\n div.innerHTML = oldHtml + div.innerHTML;\n if (data.githubCompareUpdatesUrl) {\n div.innerHTML = `

    Updates

    View all changes to this article since it was first published.

    ` + div.innerHTML;\n }\n\n el.querySelector(\"a.github\").setAttribute(\"href\", data.githubUrl);\n el.querySelector(\"a.github-issue\").setAttribute(\"href\", data.githubUrl + \"/issues/new\");\n el.querySelector(\".citation.short\").textContent = data.concatenatedAuthors + \", \" + '\"' + data.title + '\", Distill, ' + data.publishedYear + \".\";\n var bibtex = \"@article{\" + data.slug + \",\\n\";\n bibtex += \" author = {\" + data.bibtexAuthors + \"},\\n\";\n bibtex += \" title = {\" + data.title + \"},\\n\";\n bibtex += \" journal = {Distill},\\n\";\n bibtex += \" year = {\" + data.publishedYear + \"},\\n\";\n bibtex += \" note = {\" + data.url + \"}\\n\";\n bibtex += \"}\";\n el.querySelector(\".citation.long\").textContent = bibtex;\n }\n\n}\n","export default function(dom, data) {\n let css = `\n dt-cite {\n color: hsla(206, 90%, 20%, 0.7);\n }\n dt-cite .citation-number {\n cursor: default;\n white-space: nowrap;\n font-family: -apple-system, BlinkMacSystemFont, \"Roboto\", Helvetica, sans-serif;\n font-size: 75%;\n color: hsla(206, 90%, 20%, 0.7);\n display: inline-block;\n line-height: 1.1em;\n text-align: center;\n position: relative;\n top: -2px;\n margin: 0 2px;\n }\n figcaption dt-cite .citation-number {\n font-size: 11px;\n font-weight: normal;\n top: -2px;\n line-height: 1em;\n }\n `;\n\n let style = dom.createElement(\"style\");\n style.textContent = css;\n dom.querySelector(\"body\").appendChild(style);\n\n let citations = data.citations;\n /*if (data.citations) {\n citations = Object.keys(data.citations).map(c => data.citations[c]);\n citations.sort((a, b) => {\n return a.author.localeCompare(b.author);\n });\n }*/\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach((el,n) => {\n var key = el.getAttribute(\"key\");\n if (key) {\n var keys = key.split(\",\");\n var cite_string = inline_cite_short(keys);\n var cite_hover_str = \"\";\n keys.map((key,n) => {\n if (n>0) cite_hover_str += \"

    \";\n cite_hover_str += hover_cite(data.bibliography[key]);\n });\n cite_hover_str = cite_hover_str.replace(/\"/g, \"'\")\n var orig_string = el.innerHTML;\n if (orig_string != \"\") orig_string += \" \";\n el.innerHTML = `${orig_string}${cite_string}`;\n }\n });\n\n let bibEl = dom.querySelector(\"dt-bibliography\");\n if (bibEl) {\n let ol = dom.createElement(\"ol\");\n citations.forEach(key => {\n let el = dom.createElement(\"li\");\n el.innerHTML = bibliography_cite(data.bibliography[key]);\n ol.appendChild(el);\n })\n bibEl.appendChild(ol);\n }\n\n function inline_cite_short(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var n = data.citations.indexOf(key)+1;\n return \"\"+n;\n } else {\n return \"?\";\n }\n }\n return \"[\"+keys.map(cite_string).join(\", \")+\"]\";\n }\n\n function inline_cite_long(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var ent = data.bibliography[key];\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var year = ent.year;\n if (names.length == 1) return names[0] + \", \" + year;\n if (names.length == 2) return names[0] + \" & \" + names[1] + \", \" + year;\n if (names.length > 2) return names[0] + \", et al., \" + year;\n } else {\n return \"?\";\n }\n }\n return keys.map(cite_string).join(\", \");\n }\n\n function author_string(ent, template, sep, finalSep){\n var names = ent.author.split(\" and \");\n let name_strings = names.map(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1];\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n var initials = \"\";\n if (firsts != undefined) {\n initials = firsts.trim().split(\" \").map(s => s.trim()[0]);\n initials = initials.join(\".\")+\".\";\n }\n return template.replace(\"${F}\", firsts)\n .replace(\"${L}\", last)\n .replace(\"${I}\", initials);\n });\n if (names.length > 1) {\n var str = name_strings.slice(0, names.length-1).join(sep);\n str += (finalSep || sep) + name_strings[names.length-1];\n return str;\n } else {\n return name_strings[0];\n }\n }\n\n function venue_string(ent) {\n var cite = (ent.journal || ent.booktitle || \"\")\n if (\"volume\" in ent){\n var issue = ent.issue || ent.number;\n issue = (issue != undefined)? \"(\"+issue+\")\" : \"\";\n cite += \", Vol \" + ent.volume + issue;\n }\n if (\"pages\" in ent){\n cite += \", pp. \" + ent.pages\n }\n if (cite != \"\") cite += \". \"\n if (\"publisher\" in ent){\n cite += ent.publisher;\n if (cite[cite.length-1] != \".\") cite += \".\";\n }\n return cite;\n }\n\n function link_string(ent){\n if (\"url\" in ent){\n var url = ent.url;\n var arxiv_match = (/arxiv\\.org\\/abs\\/([0-9\\.]*)/).exec(url);\n if (arxiv_match != null){\n url = `http://arxiv.org/pdf/${arxiv_match[1]}.pdf`;\n }\n\n if (url.slice(-4) == \".pdf\"){\n var label = \"PDF\";\n } else if (url.slice(-5) == \".html\") {\n var label = \"HTML\";\n }\n return `  [${label||\"link\"}]`;\n }/* else if (\"doi\" in ent){\n return `  [DOI]`;\n }*/ else {\n return \"\";\n }\n }\n function doi_string(ent, new_line){\n if (\"doi\" in ent) {\n return `${new_line?\"
    \":\"\"} DOI: ${ent.doi}`;\n } else {\n return \"\";\n }\n }\n\n function bibliography_cite(ent, fancy){\n if (ent){\n var cite = \"\" + ent.title + \" \"\n cite += link_string(ent) + \"
    \";\n cite += author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += venue_string(ent);\n cite += doi_string(ent);\n return cite\n /*var cite = author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += \"\" + ent.title + \". \";\n cite += venue_string(ent);\n cite += doi_string(ent);\n cite += link_string(ent);\n return cite*/\n } else {\n return \"?\";\n }\n }\n\n function hover_cite(ent){\n if (ent){\n var cite = \"\";\n cite += \"\" + ent.title + \"\";\n cite += link_string(ent);\n cite += \"
    \"\n\n var a_str = author_string(ent, \"${I} ${L}\", \", \") + \".\";\n var v_str = venue_string(ent).trim() + \" \" + ent.year + \". \" + doi_string(ent, true);\n\n if ((a_str+v_str).length < Math.min(40, ent.title.length)) {\n cite += a_str + \" \" + v_str;\n } else {\n cite += a_str + \"
    \" + v_str;\n }\n return cite;\n } else {\n return \"?\";\n }\n }\n\n\n //https://scholar.google.com/scholar?q=allintitle%3ADocument+author%3Aolah\n function get_GS_URL(ent){\n if (ent){\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var title = ent.title.split(\" \")//.replace(/[,:]/, \"\")\n var url = \"http://search.labs.crossref.org/dois?\"//\"\"https://scholar.google.com/scholar?\"\n url += uris({q: names.join(\" \") + \" \" + title.join(\" \")})\n }\n\n }\n}\n","export default function(dom, data) {\n\n var fnTags = [].slice.apply(dom.querySelectorAll(\"dt-fn\"));\n var fnContent = [];\n fnTags.forEach((el,n) => {\n var content = el.innerHTML;\n fnContent.push(content);\n n = (n+1)+\"\";\n var key = \"fn-\"+n;\n var escaped_content = content.replace(/\"/g, \"'\");\n el.innerHTML = `${n}`;\n });\n\n let fnList = dom.querySelector(\"dt-fn-list\");\n if (fnList) {\n let ol = dom.createElement(\"ol\");\n fnContent.forEach(content => {\n let el = dom.createElement(\"li\");\n el.innerHTML = content;\n ol.appendChild(el);\n })\n fnList.appendChild(ol);\n }\n\n}\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n */\n\n;(function() {\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^( *[-*_]){3,} *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,\n nptable: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n blockquote: /^( *>[^\\n]+(\\n(?!def)[^\\n]+)*\\n*)+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n table: noop,\n paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,\n text: /^[^\\n]+/\n};\n\nblock.bullet = /(?:[*+-]|\\d+\\.)/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = replace(block.item, 'gm')\n (/bull/g, block.bullet)\n ();\n\nblock.list = replace(block.list)\n (/bull/g, block.bullet)\n ('hr', '\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))')\n ('def', '\\\\n+(?=' + block.def.source + ')')\n ();\n\nblock.blockquote = replace(block.blockquote)\n ('def', block.def)\n ();\n\nblock._tag = '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'\n + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'\n + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|[^\\\\w\\\\s@]*@)\\\\b';\n\nblock.html = replace(block.html)\n ('comment', //)\n ('closed', /<(tag)[\\s\\S]+?<\\/\\1>/)\n ('closing', /])*?>/)\n (/tag/g, block._tag)\n ();\n\nblock.paragraph = replace(block.paragraph)\n ('hr', block.hr)\n ('heading', block.heading)\n ('lheading', block.lheading)\n ('blockquote', block.blockquote)\n ('tag', '<' + block._tag)\n ('def', block.def)\n ();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]*?)\\s*\\1 *(?:\\n+|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = replace(block.paragraph)\n ('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n ();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top, bq) {\n var src = src.replace(/^ +$/gm, '')\n , next\n , loose\n , cap\n , bull\n , b\n , item\n , space\n , i\n , l;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic\n ? cap.replace(/\\n+$/, '')\n : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top, true);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n\n this.tokens.push({\n type: 'list_start',\n ordered: bull.length > 1\n });\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n this.tokens.push({\n type: loose\n ? 'loose_item_start'\n : 'list_item_start'\n });\n\n // Recurse.\n this.token(item, false, bq);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if ((!bq && top) && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.links[cap[1].toLowerCase()] = {\n href: cap[2],\n title: cap[3]\n };\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i]\n .replace(/^ *\\| *| *\\| *$/g, '')\n .split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n autolink: /^<([^ >]+(@|:\\/)[^ >]+)>/,\n url: noop,\n tag: /^|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^\\b_((?:[^_]|__)+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n code: /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n text: /^[\\s\\S]+?(?=[\\\\?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\ninline.link = replace(inline.link)\n ('inside', inline._inside)\n ('href', inline._href)\n ();\n\ninline.reflink = replace(inline.reflink)\n ('inside', inline._inside)\n ();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: replace(inline.escape)('])', '~|])')(),\n url: /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n text: replace(inline.text)\n (']|', '~]|')\n ('|', '|https?://|')\n ()\n});\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: replace(inline.br)('{2,}', '*')(),\n text: replace(inline.gfm.text)('{2,}', '*')()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer;\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new\n Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n var out = ''\n , link\n , text\n , href\n , cap;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += cap[1];\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = cap[1].charAt(6) === ':'\n ? this.mangle(cap[1].substring(7))\n : this.mangle(cap[1]);\n href = this.mangle('mailto:') + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n src = src.substring(cap[0].length);\n text = escape(cap[1]);\n href = text;\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^/i.test(cap[0])) {\n this.inLink = false;\n }\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0]\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out += this.outputLink(cap, {\n href: cap[2],\n title: cap[3]\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2], true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = escape(link.href)\n , title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = ''\n , l = text.length\n , i = 0\n , ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || {};\n}\n\nRenderer.prototype.code = function(code, lang, escaped) {\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '\\n
    ';\n }\n\n return '
    '\n    + (escaped ? code : escape(code, true))\n    + '\\n
    \\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '
    \\n' + quote + '
    \\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw) {\n return ''\n + text\n + '\\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n};\n\nRenderer.prototype.list = function(body, ordered) {\n var type = ordered ? 'ol' : 'ul';\n return '<' + type + '>\\n' + body + '\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '
  • ' + text + '
  • \\n';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '

    ' + text + '

    \\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + '\\n'\n + body\n + '\\n'\n + '
    \\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '\\n' + content + '\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' style=\"text-align:' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.em = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? '
    ' : '
    ';\n};\n\nRenderer.prototype.del = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n if (this.options.sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return '';\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0) {\n return '';\n }\n }\n var out = '
    ';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n var out = '\"'' : '>';\n return out;\n};\n\nRenderer.prototype.text = function(text) {\n return text;\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer;\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options, renderer) {\n var parser = new Parser(options, renderer);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options, this.renderer);\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n this.token.text);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = ''\n , body = ''\n , i\n , row\n , cell\n , flags\n , j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n flags = { header: true, align: this.token.align[i] };\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n var body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n var body = ''\n , ordered = this.token.ordered;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered);\n }\n case 'list_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'loose_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'html': {\n var html = !this.token.pre && !this.options.pedantic\n ? this.inline.output(this.token.text)\n : this.token.text;\n return this.renderer.html(html);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n }\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n return html\n .replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\nfunction unescape(html) {\n\t// explicitly match decimal, hex, and named HTML entities \n return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/g, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction replace(regex, opt) {\n regex = regex.source;\n opt = opt || '';\n return function self(name, val) {\n if (!name) return new RegExp(regex, opt);\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return self;\n };\n}\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1\n , target\n , key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n\n var highlight = opt.highlight\n , tokens\n , pending\n , i = 0;\n\n try {\n tokens = Lexer.lex(src, opt)\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/chjj/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occured:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n sanitizer: null,\n mangle: true,\n smartLists: false,\n silent: false,\n highlight: null,\n langPrefix: 'lang-',\n smartypants: false,\n headerPrefix: '',\n renderer: new Renderer,\n xhtml: false\n};\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.parse = marked;\n\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n this.marked = marked;\n}\n\n}).call(function() {\n return this || (typeof window !== 'undefined' ? window : global);\n}());\n","import marked from 'marked';\n\nmarked.setOptions({\n gfm: true,\n smartypants: true\n});\n\nexport default function(dom, data) {\n let markdownElements = [].slice.call(dom.querySelectorAll('[markdown]'));\n markdownElements.forEach(el => {\n let content = el.innerHTML;\n // Set default indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n\n el.innerHTML = marked(content);\n });\n}\n","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = _self.Prism = {\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/ text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\tbreak tokenloop;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t delNum = 1;\n\n\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t to = match.index + match[0].length,\n\t\t\t\t\t\t k = i,\n\t\t\t\t\t\t p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && p < to; ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t match = match[0].slice(lookbehindLength),\n\t\t\t\t\t to = from + match.length,\n\t\t\t\t\t before = str.slice(0, from),\n\t\t\t\t\t after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (env.type == 'comment') {\n\t\tenv.attributes['spellcheck'] = 'true';\n\t}\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n \t// In worker\n\t_self.addEventListener('message', function(evt) {\n\t\tvar message = JSON.parse(evt.data),\n\t\t lang = message.language,\n\t\t code = message.code,\n\t\t immediateClose = message.immediateClose;\n\n\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\tif (immediateClose) {\n\t\t\t_self.close();\n\t\t}\n\t}, false);\n\n\treturn _self.Prism;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (document.addEventListener && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': //,\n\t'prolog': /<\\?[\\w\\W]+?\\?>/,\n\t'doctype': //i,\n\t'cdata': //i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\w\\W])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:('|\")[\\w\\W]*?(\\1)|[^\\s>]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /[=>\"']/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\w\\W]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^\\{\\}\\s][^\\{\\};]*?(?=\\s*\\{)/,\n\t'string': {\n\t\tpattern: /(\"|')(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'property': /(\\b|\\B)[\\w-]+(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|').*?\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\w\\W]*?\\*\\//,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[a-z0-9_\\.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /(\\.|\\\\)/\n\t\t}\n\t},\n\t'keyword': /\\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(0x[\\dA-Fa-f]+|0b[01]+|0o[0-7]+|\\d*\\.?\\d+([Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*(?=\\()/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*\\*?|\\/|~|\\^|%|\\.{3}/\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[.+?]|\\\\.|[^/\\\\\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\\\\\|\\\\?[^\\\\])*?`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript'\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tif(Array.prototype.forEach) { // Check to prevent error in IE8\n\t\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\t\tvar language, parent = pre;\n\t\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\t\tparent = parent.parentNode;\n\t\t\t\t}\n\n\t\t\t\tif (parent) {\n\t\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t\t}\n\n\t\t\t\tif (!language) {\n\t\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t\t}\n\n\t\t\t\tvar code = document.createElement('code');\n\t\t\t\tcode.className = 'language-' + language;\n\n\t\t\t\tpre.textContent = '';\n\n\t\t\t\tcode.textContent = 'Loading…';\n\n\t\t\t\tpre.appendChild(code);\n\n\t\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\t\txhr.open('GET', src, true);\n\n\t\t\t\txhr.onreadystatechange = function () {\n\t\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\txhr.send(null);\n\t\t\t});\n\t\t}\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\n})();\n","import Prism from \"prismjs\";\n\nexport default function(dom, data) {\n let codeElements = [].slice.call(dom.querySelectorAll(\"dt-code\"));\n codeElements.forEach(el => {\n let content = el.textContent;\n el.innerHTML = \"\";\n let language = el.getAttribute(\"language\");\n let c = dom.createElement(\"code\");\n if (el.getAttribute(\"block\") === \"\") {\n // Let's normalize the tab indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n let p = dom.createElement(\"pre\");\n p.appendChild(c);\n el.appendChild(p);\n } else {\n el.appendChild(c);\n }\n let highlighted = content;\n if (Prism.languages[language]) {\n c.setAttribute(\"class\", \"language-\" + language);\n highlighted = Prism.highlight(content, Prism.languages[language]);\n }\n c.innerHTML = highlighted;\n });\n}\n","export default function(dom, data) {\n\n var textNodes = dom.createTreeWalker(\n dom.body,\n dom.defaultView.NodeFilter.SHOW_TEXT\n );\n while (textNodes.nextNode()) {\n var n = textNodes.currentNode,\n text = n.nodeValue;\n if (text && acceptNode(n)) {\n text = quotes(text);\n text = punctuation(text);\n n.nodeValue = text;\n }\n }\n}\n\nfunction acceptNode(node) {\n var parent = node.parentElement;\n var isMath = (parent && parent.getAttribute && parent.getAttribute(\"class\")) ? parent.getAttribute(\"class\").includes(\"katex\") || parent.getAttribute(\"class\").includes(\"MathJax\") : false;\n return parent &&\n parent.nodeName !== \"SCRIPT\" &&\n parent.nodeName !== \"STYLE\" &&\n parent.nodeName !== \"CODE\" &&\n parent.nodeName !== \"PRE\" &&\n parent.nodeName !== \"SPAN\" &&\n parent.nodeName !== \"DT-HEADER\" &&\n parent.nodeName !== \"DT-BYLINE\" &&\n parent.nodeName !== \"DT-MATH\" &&\n parent.nodeName !== \"DT-CODE\" &&\n parent.nodeName !== \"DT-BIBLIOGRAPHY\" &&\n parent.nodeName !== \"DT-FOOTER\" &&\n parent.nodeType !== 8 && //comment nodes\n !isMath;\n}\n\n\n/*!\n * typeset - Typesetting for the web\n * @version v0.1.6\n * @link https://github.com/davidmerfield/Typeset.js\n * @author David Merfield\n */\n // which has a CC0 license\n // http://creativecommons.org/publicdomain/zero/1.0/\n\n\nfunction punctuation(text){\n\n // Dashes\n text = text.replace(/--/g, '\\u2014');\n text = text.replace(/ \\u2014 /g,\"\\u2009\\u2014\\u2009\"); //this has thin spaces\n\n // Elipses\n text = text.replace(/\\.\\.\\./g,'…');\n\n // Nbsp for punc with spaces\n var NBSP = \"\\u00a0\";\n var NBSP_PUNCTUATION_START = /([«¿¡]) /g;\n var NBSP_PUNCTUATION_END = / ([\\!\\?:;\\.,‽»])/g;\n\n text = text.replace(NBSP_PUNCTUATION_START, '$1' + NBSP);\n text = text.replace(NBSP_PUNCTUATION_END, NBSP + '$1');\n\n return text;\n}\n\nfunction quotes(text) {\n\n text = text\n .replace(/(\\W|^)\"([^\\s\\!\\?:;\\.,‽»])/g, '$1\\u201c$2') // beginning \"\n .replace(/(\\u201c[^\"]*)\"([^\"]*$|[^\\u201c\"]*\\u201c)/g, '$1\\u201d$2') // ending \"\n .replace(/([^0-9])\"/g,'$1\\u201d') // remaining \" at end of word\n .replace(/(\\W|^)'(\\S)/g, '$1\\u2018$2') // beginning '\n .replace(/([a-z])'([a-z])/ig, '$1\\u2019$2') // conjunction's possession\n .replace(/((\\u2018[^']*)|[a-z])'([^0-9]|$)/ig, '$1\\u2019$3') // ending '\n .replace(/(\\u2018)([0-9]{2}[^\\u2019]*)(\\u2018([^0-9]|$)|$|\\u2019[a-z])/ig, '\\u2019$2$3') // abbrev. years like '93\n .replace(/(\\B|^)\\u2018(?=([^\\u2019]*\\u2019\\b)*([^\\u2019\\u2018]*\\W[\\u2019\\u2018]\\b|[^\\u2019\\u2018]*$))/ig, '$1\\u2019') // backwards apostrophe\n .replace(/'''/g, '\\u2034') // triple prime\n .replace(/(\"|'')/g, '\\u2033') // double prime\n .replace(/'/g, '\\u2032');\n\n // Allow escaped quotes\n text = text.replace(/\\\\“/, '\\\"');\n text = text.replace(/\\\\”/, '\\\"');\n text = text.replace(/\\\\’/, '\\'');\n text = text.replace(/\\\\‘/, '\\'');\n\n return text;\n}\n\nfunction ligatures(text){\n\n text = text.replace(/fi/g, 'fi');\n text = text.replace(/fl/g, 'fl');\n\n return text;\n};\n","import code from './hover-box.txt';\n\nexport default function(dom) {\n let s = dom.createElement(\"script\");\n s.textContent = code;\n dom.querySelector(\"body\").appendChild(s);\n}\n","//import xml from \"xml\";\n\nexport default function(data) {\n\n\n var date = data.publishedDate;\n\n var batch_timestamp = Math.floor(Date.now() / 1000);\n var batch_id = data.authors.length ? data.authors[0].lastName.toLowerCase().slice(0,20) : \"Anonymous\";\n batch_id += \"_\" + date.getFullYear();\n batch_id += \"_\" + data.title.split(\" \")[0].toLowerCase().slice(0,20) + \"_\" + batch_timestamp;\n // generate XML\n var crf_data =\n {doi_batch : [\n\n { _attr: {\n version: \"4.3.7\",\n xmlns: \"http://www.crossref.org/schema/4.3.7\",\n \"xmlns:xsi\": \"http://www.w3.org/2001/XMLSchema-instance\",\n \"xsi:schemaLocation\": \"http://www.crossref.org/schema/4.3.7 http://www.crossref.org/schemas/crossref4.3.7.xsd\",\n }},\n\n { head: [\n {doi_batch_id: batch_id},\n {timestamp: batch_timestamp},\n {depositor: [\n {depositor_name: data.journal.publisherName},\n {email_address: data.journal.publisherEmail},\n ]},\n {registrant: data.journal.publisherName},\n ]},\n\n {body: [\n {journal: [\n\n {journal_metadata: [\n {full_title: data.journal.full_title || data.journal.title},\n {abbrev_title: data.journal.abbrev_title || data.journal.title || data.journal.full_title},\n {issn: data.journal.issn},\n {doi_data: [\n {doi: data.journal.doi},\n {resource: data.journal.url},\n ]},\n ]},\n\n {journal_issue: [\n {publication_date: [\n {month: date.getMonth()+1},\n {year: date.getFullYear()},\n ]},\n {journal_volume: [\n {volume: data.volume},\n ]},\n {issue: data.issue},\n ]},\n\n {journal_article: [\n {titles: [\n {title: data.title},\n ]},\n { contributors:\n data.authors.map((author, ind) => (\n {person_name: [\n { _attr: {\n contributor_role: \"author\",\n sequence: (ind == 0)? \"first\" : \"additional\"\n }},\n {given_name: author.firstName},\n {surname: author.lastName},\n {affiliation: author.affiliation}\n // TODO: ORCID?\n ]}\n ))\n },\n {publication_date: [\n {month: date.getMonth()+1},\n {day: date.getDate()},\n {year: date.getFullYear()}\n ]},\n { publisher_item: [\n {item_number: data.doi}\n ]},\n {doi_data: [\n {doi: data.doi},\n //{timestamp: \"\"},\n {resource: data.url},\n ]},\n {citation_list:\n data.citations.map(key =>\n citation_xml(key, data.bibliography[key]))\n }\n\n ]},\n\n ]},\n ]},\n ]};\n\n return xml(crf_data);\n}\n\nfunction citation_xml(key, ent){\n if (ent == undefined) return {};\n var info = [];\n info.push({_attr: {key: key}});\n if (\"title\" in ent)\n info.push({article_title: ent.title});\n if (\"author\" in ent)\n info.push({author: ent.author.split(\" and \")[0].split(\",\")[0].trim()});\n if (\"journal\" in ent)\n info.push({journal_title: ent.journal});\n if (\"booktitle\" in ent)\n info.push({volume_title: ent.booktitle});\n if (\"volume\" in ent)\n info.push({volume: ent.volume});\n if (\"issue\" in ent)\n info.push({issue: ent.issue});\n if (\"doi\" in ent)\n info.push({doi: ent.doi});\n return {citation: info}\n}\n\nfunction xml(obj) {\n //console.log(typeof(obj), obj)\n if (typeof obj === 'string') return obj;\n if (typeof obj === 'number') return \"\"+obj;\n let keys = Object.keys(obj);\n if (keys.length != 1) console.error(\"can't interpret \", obj, \"as xml\");\n let name = keys[0];\n var full_content = obj[name];\n var attr = {};\n if (Array.isArray(full_content)){\n var content = [];\n for (var i in full_content) {\n var obj = full_content[i];\n var obj_name = Object.keys(obj)[0];\n if (\"_attr\" == obj_name) {\n attr = obj[\"_attr\"];\n } else {\n //console.log(Object.keys(obj)[0])\n content.push(obj);\n }\n }\n } else {\n content = full_content;\n }\n if (content == undefined){\n content = \"undefined\"\n }\n\n let attr_string = \"\";\n for (var k in attr) {\n attr_string += ` ${k}=\\\"${attr[k]}\\\"`\n }\n\n //console.log(typeof content, Array.isArray(content), content instanceof String, content)\n if (Array.isArray(content)){\n content = content.map(xml);\n content = content.join(\"\\n\").split(\"\\n\");\n content = content.map(s => \" \" + s).join(\"\\n\")\n var result = `<${name}${attr_string}>\\n${content}\\n`;\n } else {\n content = xml(content);\n var result = `<${name}${attr_string}>${content}`;\n }\n return result;\n}\n","import logo from \"./distill-logo.svg\";\n\nconst html = `\n\n\n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-header\");\n if(el) {\n el.innerHTML = html;\n } else {\n let header = dom.createElement(\"dt-header\");\n header.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(header, b.firstChild);\n }\n}\n","import logo from \"./distill-logo.svg\";\n\nlet html = `\n\n\n
    \n \n ${logo}\n Distill\n is dedicated to clear explanations of machine learning\n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-footer\");\n if(el) {\n el.innerHTML = html;\n } else {\n let footer = dom.createElement(\"dt-footer\");\n footer.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.appendChild(footer);\n }\n}\n","import html from \"./components/html\";\nimport styles from \"./components/styles\";\nimport frontMatter from \"./components/front-matter\";\nimport bibliography from \"./components/bibliography\";\nimport expandData from \"./components/expand-data\";\nimport meta from \"./components/meta\";\nimport banner from \"./components/banner\";\nimport byline from \"./components/byline\";\nimport appendix from \"./components/appendix\";\nimport citation from \"./components/citation\";\nimport footnote from \"./components/footnote\";\nimport markdown from \"./components/markdown\";\nimport code from \"./components/code\";\nimport typeset from \"./components/typeset\";\nimport hoverBox from \"./components/hover-box-include\";\nimport generateCrossref from \"./components/generate-crossref\";\nimport header from \"./components/header\";\nimport footer from \"./components/footer\";\n\nfunction renderImmediately(dom) {\n html(dom);\n styles(dom);\n}\n\nfunction renderOnLoad(dom, data) {\n frontMatter(dom, data);\n bibliography(dom, data);\n expandData(dom, data);\n meta(dom, data);\n byline(dom, data);\n appendix(dom, data);\n markdown(dom, data);\n code(dom, data);\n citation(dom, data);\n footnote(dom, data);\n typeset(dom, data);\n hoverBox(dom, data);\n}\n\n// If we are in a browser, render automatically...\nif(window && window.document) {\n let data = {};\n renderImmediately(window.document);\n window.document.addEventListener(\"DOMContentLoaded\", (event) => {\n renderOnLoad(window.document, data);\n // Add a banner if we're not on localhost.\n if (window.location.hostname !== \"localhost\" && window.location.origin !== \"file://\") {\n banner(window.document, data);\n }\n generateCrossref(data);\n });\n}\n\n// If we are in node...\nfunction render(dom, data) {\n renderImmediately(dom);\n renderOnLoad(dom, data);\n // Remove script tag so it doesn't run again in the client\n let s = dom.querySelector('script[src*=\"distill.pub/template\"]');\n if (s) { s.parentElement.removeChild(s); };\n}\n\n// Distill specific rendering\nfunction distillify(dom, data) {\n header(dom, data);\n footer(dom, data);\n}\n\nexport {render as render};\nexport {distillify as distillify};\nexport {generateCrossref as generateCrossref};\n"],"names":["let","meta","YAMLException","common","require$$0","Mark","this","Type","require$$1","require$$2","type","arguments","Schema","require$$3","require$$4","require$$5","require","_hasOwnProperty","_toString","require$$6","require$$7","_require","DEFAULT_SAFE_SCHEMA","DEFAULT_FULL_SCHEMA","loadAll","load","safeLoadAll","safeLoad","State","dump","safeDump","require$$8","require$$9","ymlParse","interval","day","timeDay","timeYear","timeSunday","timeMonday","locale","escape","const","html","define","global","Prism","code","render"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":null,"sources":["../components/html.js","../components/styles.js","../node_modules/js-yaml/lib/js-yaml/common.js","../node_modules/js-yaml/lib/js-yaml/exception.js","../node_modules/js-yaml/lib/js-yaml/mark.js","../node_modules/js-yaml/lib/js-yaml/type.js","../node_modules/js-yaml/lib/js-yaml/schema.js","../node_modules/js-yaml/lib/js-yaml/type/str.js","../node_modules/js-yaml/lib/js-yaml/type/seq.js","../node_modules/js-yaml/lib/js-yaml/type/map.js","../node_modules/js-yaml/lib/js-yaml/schema/failsafe.js","../node_modules/js-yaml/lib/js-yaml/type/null.js","../node_modules/js-yaml/lib/js-yaml/type/bool.js","../node_modules/js-yaml/lib/js-yaml/type/int.js","../node_modules/js-yaml/lib/js-yaml/type/float.js","../node_modules/js-yaml/lib/js-yaml/schema/json.js","../node_modules/js-yaml/lib/js-yaml/schema/core.js","../node_modules/js-yaml/lib/js-yaml/type/timestamp.js","../node_modules/js-yaml/lib/js-yaml/type/merge.js","../node_modules/js-yaml/lib/js-yaml/type/binary.js","../node_modules/js-yaml/lib/js-yaml/type/omap.js","../node_modules/js-yaml/lib/js-yaml/type/pairs.js","../node_modules/js-yaml/lib/js-yaml/type/set.js","../node_modules/js-yaml/lib/js-yaml/schema/default_safe.js","../node_modules/js-yaml/lib/js-yaml/type/js/undefined.js","../node_modules/js-yaml/lib/js-yaml/type/js/regexp.js","../node_modules/js-yaml/lib/js-yaml/type/js/function.js","../node_modules/js-yaml/lib/js-yaml/schema/default_full.js","../node_modules/js-yaml/lib/js-yaml/loader.js","../node_modules/js-yaml/lib/js-yaml/dumper.js","../node_modules/js-yaml/lib/js-yaml.js","../node_modules/js-yaml/index.js","../components/front-matter.js","../node_modules/bibtex-parse-js/bibtexParse.js","../components/bibliography.js","../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/utcMinute.js","../node_modules/d3-time/src/utcHour.js","../node_modules/d3-time/src/utcDay.js","../node_modules/d3-time/src/utcWeek.js","../node_modules/d3-time/src/utcMonth.js","../node_modules/d3-time/src/utcYear.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-time-format/src/isoFormat.js","../node_modules/d3-time-format/src/isoParse.js","../components/expand-data.js","../../node_modules/escape-html/index.js","../components/meta.js","../components/banner.js","../node_modules/mustache/mustache.js","../components/byline.js","../components/appendix.js","../components/citation.js","../components/footnote.js","../node_modules/marked/lib/marked.js","../components/markdown.js","../node_modules/prismjs/prism.js","../components/code.js","../components/typeset.js","../components/hover-box-include.js","../components/generate-crossref.js","../components/header.js","../components/footer.js","../index.js"],"sourcesContent":["export default function(dom) {\n if (!dom.querySelector(\"html\").getAttribute(\"lang\")) {\n dom.querySelector(\"html\").setAttribute(\"lang\", \"en\")\n }\n\n let head = dom.querySelector(\"head\");\n\n if (!dom.querySelector(\"meta[charset]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"charset\", \"utf-8\");\n head.appendChild(meta);\n }\n if (!dom.querySelector(\"meta[name=viewport]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"name\", \"viewport\");\n meta.setAttribute(\"content\", \"width=device-width, initial-scale=1\");\n head.appendChild(meta);\n }\n}\n","import base from './styles-base.css';\nimport layout from './styles-layout.css';\nimport article from './styles-article.css';\nimport code from './styles-code.css';\nimport print from './styles-print.css';\n\nexport default function(dom) {\n let s = dom.createElement(\"style\");\n s.textContent = base + layout + article + code + print;\n dom.querySelector(\"head\").appendChild(s);\n}\n","'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n var result = this.name + ': ';\n\n result += this.reason || '(unknown reason)';\n\n if (!compact && this.mark) {\n result += ' ' + this.mark.toString();\n }\n\n return result;\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n\nvar common = require('./common');\n\n\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\n\n\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head, start, tail, end, snippet;\n\n if (!this.buffer) return null;\n\n indent = indent || 4;\n maxLength = maxLength || 75;\n\n head = '';\n start = this.position;\n\n while (start > 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n\n tail = '';\n end = this.position;\n\n while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n\n snippet = this.buffer.slice(start, end);\n\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' +\n common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\n\nMark.prototype.toString = function toString(compact) {\n var snippet, where = '';\n\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n if (!compact) {\n snippet = this.getSnippet();\n\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n\n return where;\n};\n\n\nmodule.exports = Mark;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name, result) {\n var exclude = [];\n\n schema.include.forEach(function (includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n\n schema[name].forEach(function (currentType) {\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n exclude.push(previousIndex);\n }\n });\n\n result.push(currentType);\n });\n\n return result.filter(function (type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {}\n }, index, length;\n\n function collectType(type) {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n\n this.implicit.forEach(function (type) {\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n });\n\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\n\nSchema.DEFAULT = null;\n\n\nSchema.create = function createSchema() {\n var schemas, types;\n\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n\n if (!schemas.every(function (schema) { return schema instanceof Schema; })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n\n if (!types.every(function (type) { return type instanceof Type; })) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n return new Schema({\n include: schemas,\n explicit: types\n });\n};\n\n\nmodule.exports = Schema;\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 8\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 10 (except 0) or base 60\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch === ':') break;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n if (!hasDigits) return false;\n\n // if !base60 - done;\n if (ch !== ':') return true;\n\n // base60 almost not used, no needs to optimize\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch, base, digits = [];\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value, 16);\n return sign * parseInt(value, 8);\n }\n\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseInt(v, 10));\n });\n\n value = 0;\n base = 1;\n\n digits.forEach(function (d) {\n value += (d * base);\n base *= 60;\n });\n\n return sign * value;\n\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (object) { return '0b' + object.toString(2); },\n octal: function (object) { return '0' + object.toString(8); },\n decimal: function (object) { return object.toString(10); },\n hexadecimal: function (object) { return '0x' + object.toString(16).toUpperCase(); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n '^(?:[-+]?(?:[0-9][0-9_]*)\\\\.[0-9_]*(?:[eE][-+][0-9]+)?' +\n '|\\\\.[0-9_]+(?:[eE][-+][0-9]+)?' +\n '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' +\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data)) return false;\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign, base, digits;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n\n } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n\n value = 0.0;\n base = 1;\n\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n\n return sign * value;\n\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./failsafe')\n ],\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./json')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\nvar NodeBuffer;\n\ntry {\n // A trick for browserified version, to not include `Buffer` shim\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n // Wrap into Buffer for NodeJS and leave Array for browser\n if (NodeBuffer) return new NodeBuffer(result);\n\n return result;\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./core')\n ],\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n return true;\n}\n\nfunction constructJavascriptUndefined() {\n /*eslint-disable no-undefined*/\n return undefined;\n}\n\nfunction representJavascriptUndefined() {\n return '';\n}\n\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n if (data === null) return false;\n if (data.length === 0) return false;\n\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // if regexp starts with '/' it can have modifiers and must be properly closed\n // `/foo/gim` - modifiers tail can be maximum 3 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n\n if (modifiers.length > 3) return false;\n // if expression starts with /, is should be properly terminated\n if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n }\n\n return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // `/foo/gim` - tail can be maximum 4 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n\n return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object /*, style*/) {\n var result = '/' + object.source + '/';\n\n if (object.global) result += 'g';\n if (object.multiline) result += 'm';\n if (object.ignoreCase) result += 'i';\n\n return result;\n}\n\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n","'use strict';\n\nvar esprima;\n\n// Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n// If not found - try to fallback to window.esprima. If not\n// found too - then fail to parse.\n//\ntry {\n // workaround to exclude package from browserify list.\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n /*global window */\n if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n if (data === null) return false;\n\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true });\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction constructJavascriptFunction(data) {\n /*jslint evil:true*/\n\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true }),\n params = [],\n body;\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n throw new Error('Failed to resolve function');\n }\n\n ast.body[0].expression.params.forEach(function (param) {\n params.push(param.name);\n });\n\n body = ast.body[0].expression.body.range;\n\n // Esprima's ranges include the first '{' and the last '}' characters on\n // function expressions. So cut them out.\n /*eslint-disable no-new-func*/\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n}\n\nfunction representJavascriptFunction(object /*, style*/) {\n return object.toString();\n}\n\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n","// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [\n require('./default_safe')\n ],\n explicit: [\n require('../type/js/undefined'),\n require('../type/js/regexp'),\n require('../type/js/function')\n ]\n});\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00);\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n return new YAMLException(\n message,\n new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length;\n _position < _length;\n _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode) {\n var index, quantity;\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n throwError(state, 'duplicated mapping key');\n }\n _result[keyNode] = valueNode;\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else {\n break; // Reading is done. Go to the epilogue.\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if (state.lineIndent > nodeIndent && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!state.anchorMap.hasOwnProperty(alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag !== null && state.tag !== '!') {\n if (state.tag === '?') {\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length;\n typeIndex < typeQuantity;\n typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only assigned to plain scalars. So, it isn't\n // needed to check for 'kind' conformity.\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = {};\n state.anchorMap = {};\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n var documents = loadDocuments(input, options), index, length;\n\n for (index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nfunction safeLoadAll(input, output, options) {\n loadAll(input, output, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nfunction safeLoad(input, options) {\n return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// Simplified test for values allowed after the first character in plain style.\nfunction isPlainSafe(c) {\n // Uses a subset of nb-char - c-flow-indicator - \":\" - \"#\"\n // where nb-char ::= c-printable - b-char - c-byte-order-mark.\n return isPrintable(c) && c !== 0xFEFF\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // - \":\" - \"#\"\n && c !== CHAR_COLON\n && c !== CHAR_SHARP;\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n return isPrintable(c) && c !== 0xFEFF\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {\n var i;\n var char;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(string.charCodeAt(0))\n && !isWhitespace(string.charCodeAt(string.length - 1));\n\n if (singleLineOnly) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n return plain && !testAmbiguousType(string)\n ? STYLE_PLAIN : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (string[0] === ' ' && indentPerLevel > 9) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey) {\n state.dump = (function () {\n if (string.length === 0) {\n return \"''\";\n }\n if (!state.noCompatMode &&\n DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n return \"'\" + string + \"'\";\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = (string[0] === ' ') ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char;\n var escapeSeq;\n\n for (var i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n result += !escapeSeq && isPrintable(char)\n ? string[i]\n : escapeSeq || encodeHex(char);\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level, object[index], false, false)) {\n if (index !== 0) _result += ', ';\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || index !== 0) {\n _result += generateNextLine(state, level);\n }\n _result += '- ' + state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (index !== 0) pairBuffer += ', ';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + ': ';\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || index !== 0) {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n state.tag = explicit ? type.tag : '?';\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n writeBlockSequence(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey);\n }\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n state.dump = '!<' + state.tag + '> ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n if (writeNode(state, 0, input, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nfunction safeDump(input, options) {\n return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n","'use strict';\n\n\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\n\n\nfunction deprecated(name) {\n return function () {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\n\n\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\n\n// Deprecated schema names from JS-YAML 2.0.x\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\n\n// Deprecated functions from JS-YAML 1.x.x\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","'use strict';\n\n\nvar yaml = require('./lib/js-yaml.js');\n\n\nmodule.exports = yaml;\n","import ymlParse from \"js-yaml\";\n\nexport default function(dom, data) {\n let localData = {};\n let el = dom.querySelector('script[type=\"text/front-matter\"]');\n if (el) {\n let text = el.textContent;\n localData = ymlParse.safeLoad(text);\n }\n\n data.title = localData.title ? localData.title : \"Untitled\";\n data.description = localData.description ? localData.description : \"No description.\";\n\n data.authors = localData.authors ? localData.authors : [];\n\n data.authors = data.authors.map((author, i) =>{\n let a = {};\n let name = Object.keys(author)[0];\n if ((typeof author) === \"string\") {\n name = author;\n } else {\n a.personalURL = author[name];\n }\n let names = name.split(\" \");\n a.name = name;\n a.firstName = names.slice(0, names.length - 1).join(\" \");\n a.lastName = names[names.length -1];\n if(localData.affiliations[i]) {\n let affiliation = Object.keys(localData.affiliations[i])[0];\n if ((typeof localData.affiliations[i]) === \"string\") {\n affiliation = localData.affiliations[i]\n } else {\n a.affiliationURL = localData.affiliations[i][affiliation];\n }\n a.affiliation = affiliation;\n }\n return a;\n });\n \n\n}\n","/* start bibtexParse 0.0.22 */\n\n//Original work by Henrik Muehe (c) 2010\n//\n//CommonJS port by Mikola Lysenko 2013\n//\n//Port to Browser lib by ORCID / RCPETERS\n//\n//Issues:\n//no comment handling within strings\n//no string concatenation\n//no variable values yet\n//Grammar implemented here:\n//bibtex -> (string | preamble | comment | entry)*;\n//string -> '@STRING' '{' key_equals_value '}';\n//preamble -> '@PREAMBLE' '{' value '}';\n//comment -> '@COMMENT' '{' value '}';\n//entry -> '@' key '{' key ',' key_value_list '}';\n//key_value_list -> key_equals_value (',' key_equals_value)*;\n//key_equals_value -> key '=' value;\n//value -> value_quotes | value_braces | key;\n//value_quotes -> '\"' .*? '\"'; // not quite\n//value_braces -> '{' .*? '\"'; // not quite\n(function(exports) {\n\n function BibtexParser() {\n \n this.months = [\"jan\", \"feb\", \"mar\", \"apr\", \"may\", \"jun\", \"jul\", \"aug\", \"sep\", \"oct\", \"nov\", \"dec\"];\n this.notKey = [',','{','}',' ','='];\n this.pos = 0;\n this.input = \"\";\n this.entries = new Array();\n\n this.currentEntry = \"\";\n\n this.setInput = function(t) {\n this.input = t;\n };\n\n this.getEntries = function() {\n return this.entries;\n };\n\n this.isWhitespace = function(s) {\n return (s == ' ' || s == '\\r' || s == '\\t' || s == '\\n');\n };\n\n this.match = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n this.pos += s.length;\n } else {\n throw \"Token mismatch, expected \" + s + \", found \"\n + this.input.substring(this.pos);\n };\n this.skipWhitespace(canCommentOut);\n };\n\n this.tryMatch = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n return true;\n } else {\n return false;\n };\n this.skipWhitespace(canCommentOut);\n };\n\n /* when search for a match all text can be ignored, not just white space */\n this.matchAt = function() {\n while (this.input.length > this.pos && this.input[this.pos] != '@') {\n this.pos++;\n };\n\n if (this.input[this.pos] == '@') {\n return true;\n };\n return false;\n };\n\n this.skipWhitespace = function(canCommentOut) {\n while (this.isWhitespace(this.input[this.pos])) {\n this.pos++;\n };\n if (this.input[this.pos] == \"%\" && canCommentOut == true) {\n while (this.input[this.pos] != \"\\n\") {\n this.pos++;\n };\n this.skipWhitespace(canCommentOut);\n };\n };\n\n this.value_braces = function() {\n var bracecount = 0;\n this.match(\"{\", false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '}') {\n if (bracecount > 0) {\n bracecount--;\n } else {\n var end = this.pos;\n this.match(\"}\", false);\n return this.input.substring(start, end);\n };\n } else if (this.input[this.pos] == '{') {\n bracecount++;\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value\";\n };\n };\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.value_comment = function() {\n var str = '';\n var brcktCnt = 0;\n while (!(this.tryMatch(\"}\", false) && brcktCnt == 0)) {\n str = str + this.input[this.pos];\n if (this.input[this.pos] == '{')\n brcktCnt++;\n if (this.input[this.pos] == '}')\n brcktCnt--;\n if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n this.pos++;\n };\n return str;\n };\n\n this.value_quotes = function() {\n this.match('\"', false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '\"') {\n var end = this.pos;\n this.match('\"', false);\n return this.input.substring(start, end);\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n }\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.single_value = function() {\n var start = this.pos;\n if (this.tryMatch(\"{\")) {\n return this.value_braces();\n } else if (this.tryMatch('\"')) {\n return this.value_quotes();\n } else {\n var k = this.key();\n if (k.match(\"^[0-9]+$\"))\n return k;\n else if (this.months.indexOf(k.toLowerCase()) >= 0)\n return k.toLowerCase();\n else\n throw \"Value expected:\" + this.input.substring(start) + ' for key: ' + k;\n \n };\n };\n\n this.value = function() {\n var values = [];\n values.push(this.single_value());\n while (this.tryMatch(\"#\")) {\n this.match(\"#\");\n values.push(this.single_value());\n };\n return values.join(\"\");\n };\n\n this.key = function() {\n var start = this.pos;\n while (true) {\n if (this.pos >= this.input.length) {\n throw \"Runaway key\";\n };\n // а-яА-Я is Cyrillic\n //console.log(this.input[this.pos]);\n if (this.notKey.indexOf(this.input[this.pos]) >= 0) {\n return this.input.substring(start, this.pos);\n } else {\n this.pos++;\n \n };\n };\n };\n\n this.key_equals_value = function() {\n var key = this.key();\n if (this.tryMatch(\"=\")) {\n this.match(\"=\");\n var val = this.value();\n return [ key, val ];\n } else {\n throw \"... = value expected, equals sign missing:\"\n + this.input.substring(this.pos);\n };\n };\n\n this.key_value_list = function() {\n var kv = this.key_equals_value();\n this.currentEntry['entryTags'] = {};\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n while (this.tryMatch(\",\")) {\n this.match(\",\");\n // fixes problems with commas at the end of a list\n if (this.tryMatch(\"}\")) {\n break;\n }\n ;\n kv = this.key_equals_value();\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n };\n };\n\n this.entry_body = function(d) {\n this.currentEntry = {};\n this.currentEntry['citationKey'] = this.key();\n this.currentEntry['entryType'] = d.substring(1);\n this.match(\",\");\n this.key_value_list();\n this.entries.push(this.currentEntry);\n };\n\n this.directive = function() {\n this.match(\"@\");\n return \"@\" + this.key();\n };\n\n this.preamble = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'PREAMBLE';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.comment = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'COMMENT';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.entry = function(d) {\n this.entry_body(d);\n };\n\n this.bibtex = function() {\n while (this.matchAt()) {\n var d = this.directive();\n this.match(\"{\");\n if (d == \"@STRING\") {\n this.string();\n } else if (d == \"@PREAMBLE\") {\n this.preamble();\n } else if (d == \"@COMMENT\") {\n this.comment();\n } else {\n this.entry(d);\n }\n this.match(\"}\");\n };\n };\n };\n \n exports.toJSON = function(bibtex) {\n var b = new BibtexParser();\n b.setInput(bibtex);\n b.bibtex();\n return b.entries;\n };\n\n /* added during hackathon don't hate on me */\n exports.toBibtex = function(json) {\n var out = '';\n for ( var i in json) {\n out += \"@\" + json[i].entryType;\n out += '{';\n if (json[i].citationKey)\n out += json[i].citationKey + ', ';\n if (json[i].entry)\n out += json[i].entry ;\n if (json[i].entryTags) {\n var tags = '';\n for (var jdx in json[i].entryTags) {\n if (tags.length != 0)\n tags += ', ';\n tags += jdx + '= {' + json[i].entryTags[jdx] + '}';\n }\n out += tags;\n }\n out += '}\\n\\n';\n }\n return out;\n \n };\n\n})(typeof exports === 'undefined' ? this['bibtexParse'] = {} : exports);\n\n/* end bibtexParse */\n","import bibtexParse from \"bibtex-parse-js\";\n\nexport default function(dom, data) {\n let el = dom.querySelector('script[type=\"text/bibliography\"]');\n let citations = [];\n let bibliography = {};\n //TODO If we don't have a local element, make a request for the document.\n if (el) {\n let rawBib = el.textContent;\n let parsed = bibtexParse.toJSON(rawBib);\n if(parsed) {\n parsed.forEach(e => {\n for (var k in e.entryTags){\n var val = e.entryTags[k];\n val = val.replace(/[\\t\\n ]+/g, \" \");\n val = val.replace(/{\\\\[\"^`\\.'acu~Hvs]( )?([a-zA-Z])}/g,\n (full, x, char) => char);\n val = val.replace(/{\\\\([a-zA-Z])}/g,\n (full, char) => char);\n e.entryTags[k] = val;\n }\n bibliography[e.citationKey] = e.entryTags;\n bibliography[e.citationKey].type = e.entryType;\n });\n }\n\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach(el => {\n let key = el.getAttribute(\"key\");\n if (key) {\n let citationKeys = key.split(\",\");\n citationKeys.forEach(key => {\n if (citations.indexOf(key) == -1){\n citations.push(key);\n if (!(key in bibliography)){\n console.warn(\"No bibliography entry found for: \" + key);\n }\n }\n });\n }\n });\n }\n data.bibliography = bibliography;\n data.citations = citations;\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(new Date(+start)); while (offseti(start, step), floori(start), start < stop)\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) while (--step >= 0) while (offseti(date, 1), !test(date)) {} // eslint-disable-line no-empty\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(Math.floor(date / durationSecond) * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(Math.floor(date / durationMinute) * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute} from \"./duration\";\n\nvar hour = interval(function(date) {\n var offset = date.getTimezoneOffset() * durationMinute % durationHour;\n if (offset < 0) offset += durationHour;\n date.setTime(Math.floor((+date - offset) / durationHour) * durationHour + offset);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval\";\nimport {durationWeek} from \"./duration\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {timeDay, timeSunday, timeMonday, timeYear, utcDay, utcSunday, utcMonday, utcYear} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"S\": formatSeconds,\n \"U\": formatWeekNumberSunday,\n \"w\": formatWeekdayNumber,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"S\": formatUTCSeconds,\n \"U\": formatUTCWeekNumberSunday,\n \"w\": formatUTCWeekdayNumber,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"S\": parseSeconds,\n \"U\": parseWeekNumberSunday,\n \"w\": parseWeekdayNumber,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0);\n if (i != string.length) return null;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n var day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?:\\:?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekdayNumber(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekdayNumber(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {timeFormat} from \"d3-time-format\";\n\nexport default function(dom, data) {\n\n data.authors = data.authors || [];\n\n // paths\n data.url = data.url ? data.url : \"http://distill.pub/\" + data.distillPath;\n data.githubUrl = \"https://github.com/\" + data.githubPath;\n\n data.previewURL = data.previewURL ? data.previewURL : data.url + \"/thumbnail.jpg\"\n\n // Homepage\n //data.homepage = !post.noHomepage;\n data.journal = data.journal || {};\n\n // Dates\n if (data.publishedDate){//} && data.journal) {\n data.volume = data.publishedDate.getFullYear() - 2015;\n data.issue = data.publishedDate.getMonth() + 1;\n }\n\n data.publishedDate = data.publishedDate ? data.publishedDate : new Date(\"Invalid\");\n data.updatedDate = data.updatedDate ? data.updatedDate : new Date(\"Invalid\");\n\n data.publishedDateRFC\n let RFC = timeFormat(\"%a, %d %b %Y %H:%M:%S %Z\");\n let months = [\"Jan\", \"Feb\", \"March\", \"April\", \"May\", \"June\", \"July\", \"Aug\", \"Sept\", \"Oct\", \"Nov\", \"Dec\"];\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n data.publishedDateRFC = RFC(data.publishedDate);\n data.publishedYear = data.publishedDate.getFullYear();\n data.publishedMonth = months[data.publishedDate.getMonth()];\n data.publishedDay = data.publishedDate.getDate();\n data.publishedMonthPadded = zeroPad(data.publishedDate.getMonth() + 1);\n data.publishedDayPadded = zeroPad(data.publishedDate.getDate());\n data.updatedDateRFC = RFC(data.updatedDate);\n\n if (data.authors.length > 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \", et al.\";\n } else if (data.authors.length === 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \" & \" + data.authors[1].lastName;\n } else if (data.authors.length === 1) {\n data.concatenatedAuthors = data.authors[0].lastName\n }\n\n data.bibtexAuthors = data.authors.map(function(author){\n return author.lastName + \", \" + author.firstName;\n }).join(\" and \");\n\n data.slug = data.authors.length ? data.authors[0].lastName.toLowerCase() + data.publishedYear + data.title.split(\" \")[0].toLowerCase() : \"Untitled\";\n\n}\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","import favicon from './distill-favicon.base64';\nimport escape from 'escape-html';\n\nexport default function(dom, data) {\n let head = dom.querySelector(\"head\");\n let appendHead = html => appendHtml(head, html);\n\n function meta(name, content, force) {\n if (content || force)\n appendHead(` \\n`);\n }\n\n appendHead(`\n \n \n \n \n ${data.title}\n `);\n\n appendHead(`\n \n \n \n `);\n data.authors.forEach((a) => {\n appendHtml(head, `\n `)\n });\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n // if this is a proprer article, generate Google Scholar meta data\n if (data.doiSuffix){\n appendHead(`\n \\n`);\n\n meta(\"citation_title\", data.title);\n //meta(\"citation_fulltext_html_url\", data.url);\n meta(\"citation_volume\", data.volume);\n meta(\"citation_issue\", data.issue);\n meta(\"citation_firstpage\", data.doiSuffix? `e${data.doiSuffix}` : undefined);\n meta(\"citation_doi\", data.doi);\n\n let journal = data.journal || {};\n meta(\"citation_journal_title\", journal.full_title || journal.title);\n meta(\"citation_journal_abbrev\", journal.abbrev_title);\n meta(\"citation_issn\", journal.issn);\n meta(\"citation_publisher\", journal.publisher);\n meta(\"citation_fulltext_world_readable\", \"\", true);\n\n if (data.publishedDate){\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n meta(\"citation_online_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n // Should we do something different here?\n meta(\"citation_publication_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n }\n\n (data.authors || []).forEach((a) => {\n meta(\"citation_author\", `${a.lastName}, ${a.firstName}`);\n meta(\"citation_author_institution\", a.affiliation);\n });\n\n if (data.citations) {\n data.citations.forEach(key => {\n let d = data.bibliography[key];\n if(!d) {\n console.warn(\"No bibliography data fround for \" + key)\n } else {\n meta(\"citation_reference\", citation_meta_content(data.bibliography[key]) )\n };\n });\n }\n }\n}\n\nfunction appendHtml(el, html) {\n el.innerHTML += html;\n}\n\nfunction citation_meta_content(ref){\n // Special test for arxiv\n var content = `citation_title=${ref.title};`;\n\n let name_strings = ref.author.split(\" and \").forEach(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1].trim();\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n content += `citation_author=${firsts} ${last};`;\n });\n\n if (\"year\" in ref) {\n content += `citation_publication_date=${ref.year};`;\n }\n\n var arxiv_id_search = /https?:\\/\\/arxiv\\.org\\/pdf\\/([0-9]*\\.[0-9]*)\\.pdf/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /https?:\\/\\/arxiv\\.org\\/abs\\/([0-9]*\\.[0-9]*)/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /arXiv preprint arXiv:([0-9]*\\.[0-9]*)/.exec(ref.journal);\n if (arxiv_id_search && arxiv_id_search[1]){\n content += `citation_arxiv_id=${arxiv_id_search[1]};`;\n return content;\n }\n if (\"journal\" in ref){\n content += `citation_journal_title=${ref.journal};`;\n }\n if (\"volume\" in ref) {\n content += `citation_volume=${ref.volume};`;\n }\n if (\"issue\" in ref || \"number\" in ref){\n content += `citation_number=${ref.issue || ref.number};`;\n }\n /*content += `citation_first_page=${};`;\n content += `citation_publication_date=${};`;*/\n return content;\n}\n","const html = `\n\n
    This article is a draft, awaiting review for publication in Distill
    \n`;\n\nexport default function(dom, data) {\n let banner = dom.createElement(\"dt-banner\");\n banner.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(banner, b.firstChild);\n banner.addEventListener(\"click\", function() {\n banner.style.display = \"none\";\n });\n}\n","/*!\n * mustache.js - Logic-less {{mustache}} templates with JavaScript\n * http://github.com/janl/mustache.js\n */\n\n/*global define: false Mustache: true*/\n\n(function defineMustache (global, factory) {\n if (typeof exports === 'object' && exports && typeof exports.nodeName !== 'string') {\n factory(exports); // CommonJS\n } else if (typeof define === 'function' && define.amd) {\n define(['exports'], factory); // AMD\n } else {\n global.Mustache = {};\n factory(global.Mustache); // script, wsh, asp\n }\n}(this, function mustacheFactory (mustache) {\n\n var objectToString = Object.prototype.toString;\n var isArray = Array.isArray || function isArrayPolyfill (object) {\n return objectToString.call(object) === '[object Array]';\n };\n\n function isFunction (object) {\n return typeof object === 'function';\n }\n\n /**\n * More correct typeof string handling array\n * which normally returns typeof 'object'\n */\n function typeStr (obj) {\n return isArray(obj) ? 'array' : typeof obj;\n }\n\n function escapeRegExp (string) {\n return string.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n }\n\n /**\n * Null safe way of checking whether or not an object,\n * including its prototype, has a given property\n */\n function hasProperty (obj, propName) {\n return obj != null && typeof obj === 'object' && (propName in obj);\n }\n\n // Workaround for https://issues.apache.org/jira/browse/COUCHDB-577\n // See https://github.com/janl/mustache.js/issues/189\n var regExpTest = RegExp.prototype.test;\n function testRegExp (re, string) {\n return regExpTest.call(re, string);\n }\n\n var nonSpaceRe = /\\S/;\n function isWhitespace (string) {\n return !testRegExp(nonSpaceRe, string);\n }\n\n var entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n function escapeHtml (string) {\n return String(string).replace(/[&<>\"'`=\\/]/g, function fromEntityMap (s) {\n return entityMap[s];\n });\n }\n\n var whiteRe = /\\s*/;\n var spaceRe = /\\s+/;\n var equalsRe = /\\s*=/;\n var curlyRe = /\\s*\\}/;\n var tagRe = /#|\\^|\\/|>|\\{|&|=|!/;\n\n /**\n * Breaks up the given `template` string into a tree of tokens. If the `tags`\n * argument is given here it must be an array with two string values: the\n * opening and closing tags used in the template (e.g. [ \"<%\", \"%>\" ]). Of\n * course, the default is to use mustaches (i.e. mustache.tags).\n *\n * A token is an array with at least 4 elements. The first element is the\n * mustache symbol that was used inside the tag, e.g. \"#\" or \"&\". If the tag\n * did not contain a symbol (i.e. {{myValue}}) this element is \"name\". For\n * all text that appears outside a symbol this element is \"text\".\n *\n * The second element of a token is its \"value\". For mustache tags this is\n * whatever else was inside the tag besides the opening symbol. For text tokens\n * this is the text itself.\n *\n * The third and fourth elements of the token are the start and end indices,\n * respectively, of the token in the original template.\n *\n * Tokens that are the root node of a subtree contain two more elements: 1) an\n * array of tokens in the subtree and 2) the index in the original template at\n * which the closing tag for that section begins.\n */\n function parseTemplate (template, tags) {\n if (!template)\n return [];\n\n var sections = []; // Stack to hold section tokens\n var tokens = []; // Buffer to hold the tokens\n var spaces = []; // Indices of whitespace tokens on the current line\n var hasTag = false; // Is there a {{tag}} on the current line?\n var nonSpace = false; // Is there a non-space char on the current line?\n\n // Strips all whitespace tokens array for the current line\n // if there was a {{#tag}} on it and otherwise only space.\n function stripSpace () {\n if (hasTag && !nonSpace) {\n while (spaces.length)\n delete tokens[spaces.pop()];\n } else {\n spaces = [];\n }\n\n hasTag = false;\n nonSpace = false;\n }\n\n var openingTagRe, closingTagRe, closingCurlyRe;\n function compileTags (tagsToCompile) {\n if (typeof tagsToCompile === 'string')\n tagsToCompile = tagsToCompile.split(spaceRe, 2);\n\n if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)\n throw new Error('Invalid tags: ' + tagsToCompile);\n\n openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\\\s*');\n closingTagRe = new RegExp('\\\\s*' + escapeRegExp(tagsToCompile[1]));\n closingCurlyRe = new RegExp('\\\\s*' + escapeRegExp('}' + tagsToCompile[1]));\n }\n\n compileTags(tags || mustache.tags);\n\n var scanner = new Scanner(template);\n\n var start, type, value, chr, token, openSection;\n while (!scanner.eos()) {\n start = scanner.pos;\n\n // Match any text between tags.\n value = scanner.scanUntil(openingTagRe);\n\n if (value) {\n for (var i = 0, valueLength = value.length; i < valueLength; ++i) {\n chr = value.charAt(i);\n\n if (isWhitespace(chr)) {\n spaces.push(tokens.length);\n } else {\n nonSpace = true;\n }\n\n tokens.push([ 'text', chr, start, start + 1 ]);\n start += 1;\n\n // Check for whitespace on the current line.\n if (chr === '\\n')\n stripSpace();\n }\n }\n\n // Match the opening tag.\n if (!scanner.scan(openingTagRe))\n break;\n\n hasTag = true;\n\n // Get the tag type.\n type = scanner.scan(tagRe) || 'name';\n scanner.scan(whiteRe);\n\n // Get the tag value.\n if (type === '=') {\n value = scanner.scanUntil(equalsRe);\n scanner.scan(equalsRe);\n scanner.scanUntil(closingTagRe);\n } else if (type === '{') {\n value = scanner.scanUntil(closingCurlyRe);\n scanner.scan(curlyRe);\n scanner.scanUntil(closingTagRe);\n type = '&';\n } else {\n value = scanner.scanUntil(closingTagRe);\n }\n\n // Match the closing tag.\n if (!scanner.scan(closingTagRe))\n throw new Error('Unclosed tag at ' + scanner.pos);\n\n token = [ type, value, start, scanner.pos ];\n tokens.push(token);\n\n if (type === '#' || type === '^') {\n sections.push(token);\n } else if (type === '/') {\n // Check section nesting.\n openSection = sections.pop();\n\n if (!openSection)\n throw new Error('Unopened section \"' + value + '\" at ' + start);\n\n if (openSection[1] !== value)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + start);\n } else if (type === 'name' || type === '{' || type === '&') {\n nonSpace = true;\n } else if (type === '=') {\n // Set the tags for the next time around.\n compileTags(value);\n }\n }\n\n // Make sure there are no open sections when we're done.\n openSection = sections.pop();\n\n if (openSection)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + scanner.pos);\n\n return nestTokens(squashTokens(tokens));\n }\n\n /**\n * Combines the values of consecutive text tokens in the given `tokens` array\n * to a single token.\n */\n function squashTokens (tokens) {\n var squashedTokens = [];\n\n var token, lastToken;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n if (token) {\n if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {\n lastToken[1] += token[1];\n lastToken[3] = token[3];\n } else {\n squashedTokens.push(token);\n lastToken = token;\n }\n }\n }\n\n return squashedTokens;\n }\n\n /**\n * Forms the given array of `tokens` into a nested tree structure where\n * tokens that represent a section have two additional items: 1) an array of\n * all tokens that appear in that section and 2) the index in the original\n * template that represents the end of that section.\n */\n function nestTokens (tokens) {\n var nestedTokens = [];\n var collector = nestedTokens;\n var sections = [];\n\n var token, section;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n switch (token[0]) {\n case '#':\n case '^':\n collector.push(token);\n sections.push(token);\n collector = token[4] = [];\n break;\n case '/':\n section = sections.pop();\n section[5] = token[2];\n collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;\n break;\n default:\n collector.push(token);\n }\n }\n\n return nestedTokens;\n }\n\n /**\n * A simple string scanner that is used by the template parser to find\n * tokens in template strings.\n */\n function Scanner (string) {\n this.string = string;\n this.tail = string;\n this.pos = 0;\n }\n\n /**\n * Returns `true` if the tail is empty (end of string).\n */\n Scanner.prototype.eos = function eos () {\n return this.tail === '';\n };\n\n /**\n * Tries to match the given regular expression at the current position.\n * Returns the matched text if it can match, the empty string otherwise.\n */\n Scanner.prototype.scan = function scan (re) {\n var match = this.tail.match(re);\n\n if (!match || match.index !== 0)\n return '';\n\n var string = match[0];\n\n this.tail = this.tail.substring(string.length);\n this.pos += string.length;\n\n return string;\n };\n\n /**\n * Skips all text until the given regular expression can be matched. Returns\n * the skipped string, which is the entire tail if no match can be made.\n */\n Scanner.prototype.scanUntil = function scanUntil (re) {\n var index = this.tail.search(re), match;\n\n switch (index) {\n case -1:\n match = this.tail;\n this.tail = '';\n break;\n case 0:\n match = '';\n break;\n default:\n match = this.tail.substring(0, index);\n this.tail = this.tail.substring(index);\n }\n\n this.pos += match.length;\n\n return match;\n };\n\n /**\n * Represents a rendering context by wrapping a view object and\n * maintaining a reference to the parent context.\n */\n function Context (view, parentContext) {\n this.view = view;\n this.cache = { '.': this.view };\n this.parent = parentContext;\n }\n\n /**\n * Creates a new context using the given view with this context\n * as the parent.\n */\n Context.prototype.push = function push (view) {\n return new Context(view, this);\n };\n\n /**\n * Returns the value of the given name in this context, traversing\n * up the context hierarchy if the value is absent in this context's view.\n */\n Context.prototype.lookup = function lookup (name) {\n var cache = this.cache;\n\n var value;\n if (cache.hasOwnProperty(name)) {\n value = cache[name];\n } else {\n var context = this, names, index, lookupHit = false;\n\n while (context) {\n if (name.indexOf('.') > 0) {\n value = context.view;\n names = name.split('.');\n index = 0;\n\n /**\n * Using the dot notion path in `name`, we descend through the\n * nested objects.\n *\n * To be certain that the lookup has been successful, we have to\n * check if the last object in the path actually has the property\n * we are looking for. We store the result in `lookupHit`.\n *\n * This is specially necessary for when the value has been set to\n * `undefined` and we want to avoid looking up parent contexts.\n **/\n while (value != null && index < names.length) {\n if (index === names.length - 1)\n lookupHit = hasProperty(value, names[index]);\n\n value = value[names[index++]];\n }\n } else {\n value = context.view[name];\n lookupHit = hasProperty(context.view, name);\n }\n\n if (lookupHit)\n break;\n\n context = context.parent;\n }\n\n cache[name] = value;\n }\n\n if (isFunction(value))\n value = value.call(this.view);\n\n return value;\n };\n\n /**\n * A Writer knows how to take a stream of tokens and render them to a\n * string, given a context. It also maintains a cache of templates to\n * avoid the need to parse the same template twice.\n */\n function Writer () {\n this.cache = {};\n }\n\n /**\n * Clears all cached templates in this writer.\n */\n Writer.prototype.clearCache = function clearCache () {\n this.cache = {};\n };\n\n /**\n * Parses and caches the given `template` and returns the array of tokens\n * that is generated from the parse.\n */\n Writer.prototype.parse = function parse (template, tags) {\n var cache = this.cache;\n var tokens = cache[template];\n\n if (tokens == null)\n tokens = cache[template] = parseTemplate(template, tags);\n\n return tokens;\n };\n\n /**\n * High-level method that is used to render the given `template` with\n * the given `view`.\n *\n * The optional `partials` argument may be an object that contains the\n * names and templates of partials that are used in the template. It may\n * also be a function that is used to load partial templates on the fly\n * that takes a single argument: the name of the partial.\n */\n Writer.prototype.render = function render (template, view, partials) {\n var tokens = this.parse(template);\n var context = (view instanceof Context) ? view : new Context(view);\n return this.renderTokens(tokens, context, partials, template);\n };\n\n /**\n * Low-level method that renders the given array of `tokens` using\n * the given `context` and `partials`.\n *\n * Note: The `originalTemplate` is only ever used to extract the portion\n * of the original template that was contained in a higher-order section.\n * If the template doesn't use higher-order sections, this argument may\n * be omitted.\n */\n Writer.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate) {\n var buffer = '';\n\n var token, symbol, value;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n value = undefined;\n token = tokens[i];\n symbol = token[0];\n\n if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate);\n else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate);\n else if (symbol === '>') value = this.renderPartial(token, context, partials, originalTemplate);\n else if (symbol === '&') value = this.unescapedValue(token, context);\n else if (symbol === 'name') value = this.escapedValue(token, context);\n else if (symbol === 'text') value = this.rawValue(token);\n\n if (value !== undefined)\n buffer += value;\n }\n\n return buffer;\n };\n\n Writer.prototype.renderSection = function renderSection (token, context, partials, originalTemplate) {\n var self = this;\n var buffer = '';\n var value = context.lookup(token[1]);\n\n // This function is used to render an arbitrary template\n // in the current context by higher-order sections.\n function subRender (template) {\n return self.render(template, context, partials);\n }\n\n if (!value) return;\n\n if (isArray(value)) {\n for (var j = 0, valueLength = value.length; j < valueLength; ++j) {\n buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate);\n }\n } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {\n buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate);\n } else if (isFunction(value)) {\n if (typeof originalTemplate !== 'string')\n throw new Error('Cannot use higher-order sections without the original template');\n\n // Extract the portion of the original template that the section contains.\n value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);\n\n if (value != null)\n buffer += value;\n } else {\n buffer += this.renderTokens(token[4], context, partials, originalTemplate);\n }\n return buffer;\n };\n\n Writer.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate) {\n var value = context.lookup(token[1]);\n\n // Use JavaScript's definition of falsy. Include empty arrays.\n // See https://github.com/janl/mustache.js/issues/186\n if (!value || (isArray(value) && value.length === 0))\n return this.renderTokens(token[4], context, partials, originalTemplate);\n };\n\n Writer.prototype.renderPartial = function renderPartial (token, context, partials) {\n if (!partials) return;\n\n var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\n if (value != null)\n return this.renderTokens(this.parse(value), context, partials, value);\n };\n\n Writer.prototype.unescapedValue = function unescapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return value;\n };\n\n Writer.prototype.escapedValue = function escapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return mustache.escape(value);\n };\n\n Writer.prototype.rawValue = function rawValue (token) {\n return token[1];\n };\n\n mustache.name = 'mustache.js';\n mustache.version = '2.3.0';\n mustache.tags = [ '{{', '}}' ];\n\n // All high-level mustache.* functions use this writer.\n var defaultWriter = new Writer();\n\n /**\n * Clears all cached templates in the default writer.\n */\n mustache.clearCache = function clearCache () {\n return defaultWriter.clearCache();\n };\n\n /**\n * Parses and caches the given template in the default writer and returns the\n * array of tokens it contains. Doing this ahead of time avoids the need to\n * parse templates on the fly as they are rendered.\n */\n mustache.parse = function parse (template, tags) {\n return defaultWriter.parse(template, tags);\n };\n\n /**\n * Renders the `template` with the given `view` and `partials` using the\n * default writer.\n */\n mustache.render = function render (template, view, partials) {\n if (typeof template !== 'string') {\n throw new TypeError('Invalid template! Template should be a \"string\" ' +\n 'but \"' + typeStr(template) + '\" was given as the first ' +\n 'argument for mustache#render(template, view, partials)');\n }\n\n return defaultWriter.render(template, view, partials);\n };\n\n // This is here for backwards compatibility with 0.4.x.,\n /*eslint-disable */ // eslint wants camel cased function name\n mustache.to_html = function to_html (template, view, partials, send) {\n /*eslint-enable*/\n\n var result = mustache.render(template, view, partials);\n\n if (isFunction(send)) {\n send(result);\n } else {\n return result;\n }\n };\n\n // Export the escaping function so that the user may override it.\n // See https://github.com/janl/mustache.js/issues/244\n mustache.escape = escapeHtml;\n\n // Export these mainly for testing, but also for advanced usage.\n mustache.Scanner = Scanner;\n mustache.Context = Context;\n mustache.Writer = Writer;\n\n return mustache;\n}));\n","import mustache from \"mustache\";\n\nconst html = `\n\n\n`;\n\nconst template = `\n
    \n
    \n {{#authors}}\n
    \n {{#personalURL}}\n {{name}}\n {{/personalURL}}\n {{^personalURL}}\n
    {{name}}
    \n {{/personalURL}}\n {{#affiliation}}\n {{#affiliationURL}}\n {{affiliation}}\n {{/affiliationURL}}\n {{^affiliationURL}}\n
    {{affiliation}}
    \n {{/affiliationURL}}\n {{/affiliation}}\n
    \n {{/authors}}\n
    \n
    \n
    {{publishedMonth}}. {{publishedDay}}
    \n
    {{publishedYear}}
    \n
    \n \n
    Citation:
    \n
    {{concatenatedAuthors}}, {{publishedYear}}
    \n
    \n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-byline');\n if (el) {\n el.innerHTML = html + mustache.render(template, data);\n }\n}\n","const html = `\n\n\n
    \n

    References

    \n \n

    Errors, Reuse, and Citation

    \n

    If you see mistakes or want to suggest changes, please create an issue on GitHub.

    \n

    Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on GitHub. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: “Figure from …”.

    \n

    For attribution in academic contexts, please cite this work as

    \n
    \n  

    BibTeX citation

    \n
    \n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-appendix')\n if (el) {\n let oldHtml = el.innerHTML;\n el.innerHTML = html;\n let div = el.querySelector(\"div.l-body\")\n\n if (dom.querySelector(\"dt-fn\")) {\n div.innerHTML = `

    Footnotes

    ` + div.innerHTML;\n }\n\n div.innerHTML = oldHtml + div.innerHTML;\n if (data.githubCompareUpdatesUrl) {\n div.innerHTML = `

    Updates

    View all changes to this article since it was first published.

    ` + div.innerHTML;\n }\n\n el.querySelector(\"a.github\").setAttribute(\"href\", data.githubUrl);\n el.querySelector(\"a.github-issue\").setAttribute(\"href\", data.githubUrl + \"/issues/new\");\n el.querySelector(\".citation.short\").textContent = data.concatenatedAuthors + \", \" + '\"' + data.title + '\", Distill, ' + data.publishedYear + \".\";\n var bibtex = \"@article{\" + data.slug + \",\\n\";\n bibtex += \" author = {\" + data.bibtexAuthors + \"},\\n\";\n bibtex += \" title = {\" + data.title + \"},\\n\";\n bibtex += \" journal = {Distill},\\n\";\n bibtex += \" year = {\" + data.publishedYear + \"},\\n\";\n bibtex += \" note = {\" + data.url + \"}\\n\";\n bibtex += \"}\";\n el.querySelector(\".citation.long\").textContent = bibtex;\n }\n\n}\n","export default function(dom, data) {\n let css = `\n dt-cite {\n color: hsla(206, 90%, 20%, 0.7);\n }\n dt-cite .citation-number {\n cursor: default;\n white-space: nowrap;\n font-family: -apple-system, BlinkMacSystemFont, \"Roboto\", Helvetica, sans-serif;\n font-size: 75%;\n color: hsla(206, 90%, 20%, 0.7);\n display: inline-block;\n line-height: 1.1em;\n text-align: center;\n position: relative;\n top: -2px;\n margin: 0 2px;\n }\n figcaption dt-cite .citation-number {\n font-size: 11px;\n font-weight: normal;\n top: -2px;\n line-height: 1em;\n }\n `;\n\n let style = dom.createElement(\"style\");\n style.textContent = css;\n dom.querySelector(\"body\").appendChild(style);\n\n let citations = data.citations;\n /*if (data.citations) {\n citations = Object.keys(data.citations).map(c => data.citations[c]);\n citations.sort((a, b) => {\n return a.author.localeCompare(b.author);\n });\n }*/\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach((el,n) => {\n var key = el.getAttribute(\"key\");\n if (key) {\n var keys = key.split(\",\");\n var cite_string = inline_cite_short(keys);\n var cite_hover_str = \"\";\n keys.map((key,n) => {\n if (n>0) cite_hover_str += \"

    \";\n cite_hover_str += hover_cite(data.bibliography[key]);\n });\n cite_hover_str = cite_hover_str.replace(/\"/g, \"'\")\n var orig_string = el.innerHTML;\n if (orig_string != \"\") orig_string += \" \";\n el.innerHTML = `${orig_string}${cite_string}`;\n }\n });\n\n let bibEl = dom.querySelector(\"dt-bibliography\");\n if (bibEl) {\n let ol = dom.createElement(\"ol\");\n citations.forEach(key => {\n let el = dom.createElement(\"li\");\n el.innerHTML = bibliography_cite(data.bibliography[key]);\n ol.appendChild(el);\n })\n bibEl.appendChild(ol);\n }\n\n function inline_cite_short(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var n = data.citations.indexOf(key)+1;\n return \"\"+n;\n } else {\n return \"?\";\n }\n }\n return \"[\"+keys.map(cite_string).join(\", \")+\"]\";\n }\n\n function inline_cite_long(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var ent = data.bibliography[key];\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var year = ent.year;\n if (names.length == 1) return names[0] + \", \" + year;\n if (names.length == 2) return names[0] + \" & \" + names[1] + \", \" + year;\n if (names.length > 2) return names[0] + \", et al., \" + year;\n } else {\n return \"?\";\n }\n }\n return keys.map(cite_string).join(\", \");\n }\n\n function author_string(ent, template, sep, finalSep){\n var names = ent.author.split(\" and \");\n let name_strings = names.map(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1];\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n var initials = \"\";\n if (firsts != undefined) {\n initials = firsts.trim().split(\" \").map(s => s.trim()[0]);\n initials = initials.join(\".\")+\".\";\n }\n return template.replace(\"${F}\", firsts)\n .replace(\"${L}\", last)\n .replace(\"${I}\", initials);\n });\n if (names.length > 1) {\n var str = name_strings.slice(0, names.length-1).join(sep);\n str += (finalSep || sep) + name_strings[names.length-1];\n return str;\n } else {\n return name_strings[0];\n }\n }\n\n function venue_string(ent) {\n var cite = (ent.journal || ent.booktitle || \"\")\n if (\"volume\" in ent){\n var issue = ent.issue || ent.number;\n issue = (issue != undefined)? \"(\"+issue+\")\" : \"\";\n cite += \", Vol \" + ent.volume + issue;\n }\n if (\"pages\" in ent){\n cite += \", pp. \" + ent.pages\n }\n if (cite != \"\") cite += \". \"\n if (\"publisher\" in ent){\n cite += ent.publisher;\n if (cite[cite.length-1] != \".\") cite += \".\";\n }\n return cite;\n }\n\n function link_string(ent){\n if (\"url\" in ent){\n var url = ent.url;\n var arxiv_match = (/arxiv\\.org\\/abs\\/([0-9\\.]*)/).exec(url);\n if (arxiv_match != null){\n url = `http://arxiv.org/pdf/${arxiv_match[1]}.pdf`;\n }\n\n if (url.slice(-4) == \".pdf\"){\n var label = \"PDF\";\n } else if (url.slice(-5) == \".html\") {\n var label = \"HTML\";\n }\n return `  [${label||\"link\"}]`;\n }/* else if (\"doi\" in ent){\n return `  [DOI]`;\n }*/ else {\n return \"\";\n }\n }\n function doi_string(ent, new_line){\n if (\"doi\" in ent) {\n return `${new_line?\"
    \":\"\"} DOI: ${ent.doi}`;\n } else {\n return \"\";\n }\n }\n\n function bibliography_cite(ent, fancy){\n if (ent){\n var cite = \"\" + ent.title + \" \"\n cite += link_string(ent) + \"
    \";\n cite += author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += venue_string(ent);\n cite += doi_string(ent);\n return cite\n /*var cite = author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += \"\" + ent.title + \". \";\n cite += venue_string(ent);\n cite += doi_string(ent);\n cite += link_string(ent);\n return cite*/\n } else {\n return \"?\";\n }\n }\n\n function hover_cite(ent){\n if (ent){\n var cite = \"\";\n cite += \"\" + ent.title + \"\";\n cite += link_string(ent);\n cite += \"
    \"\n\n var a_str = author_string(ent, \"${I} ${L}\", \", \") + \".\";\n var v_str = venue_string(ent).trim() + \" \" + ent.year + \". \" + doi_string(ent, true);\n\n if ((a_str+v_str).length < Math.min(40, ent.title.length)) {\n cite += a_str + \" \" + v_str;\n } else {\n cite += a_str + \"
    \" + v_str;\n }\n return cite;\n } else {\n return \"?\";\n }\n }\n\n\n //https://scholar.google.com/scholar?q=allintitle%3ADocument+author%3Aolah\n function get_GS_URL(ent){\n if (ent){\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var title = ent.title.split(\" \")//.replace(/[,:]/, \"\")\n var url = \"http://search.labs.crossref.org/dois?\"//\"\"https://scholar.google.com/scholar?\"\n url += uris({q: names.join(\" \") + \" \" + title.join(\" \")})\n }\n\n }\n}\n","export default function(dom, data) {\n\n var fnTags = [].slice.apply(dom.querySelectorAll(\"dt-fn\"));\n var fnContent = [];\n fnTags.forEach((el,n) => {\n var content = el.innerHTML;\n fnContent.push(content);\n n = (n+1)+\"\";\n var key = \"fn-\"+n;\n var escaped_content = content.replace(/\"/g, \"'\");\n el.innerHTML = `${n}`;\n });\n\n let fnList = dom.querySelector(\"dt-fn-list\");\n if (fnList) {\n let ol = dom.createElement(\"ol\");\n fnContent.forEach(content => {\n let el = dom.createElement(\"li\");\n el.innerHTML = content;\n ol.appendChild(el);\n })\n fnList.appendChild(ol);\n }\n\n}\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n */\n\n;(function() {\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^( *[-*_]){3,} *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,\n nptable: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n blockquote: /^( *>[^\\n]+(\\n(?!def)[^\\n]+)*\\n*)+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n table: noop,\n paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,\n text: /^[^\\n]+/\n};\n\nblock.bullet = /(?:[*+-]|\\d+\\.)/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = replace(block.item, 'gm')\n (/bull/g, block.bullet)\n ();\n\nblock.list = replace(block.list)\n (/bull/g, block.bullet)\n ('hr', '\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))')\n ('def', '\\\\n+(?=' + block.def.source + ')')\n ();\n\nblock.blockquote = replace(block.blockquote)\n ('def', block.def)\n ();\n\nblock._tag = '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'\n + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'\n + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|[^\\\\w\\\\s@]*@)\\\\b';\n\nblock.html = replace(block.html)\n ('comment', //)\n ('closed', /<(tag)[\\s\\S]+?<\\/\\1>/)\n ('closing', /])*?>/)\n (/tag/g, block._tag)\n ();\n\nblock.paragraph = replace(block.paragraph)\n ('hr', block.hr)\n ('heading', block.heading)\n ('lheading', block.lheading)\n ('blockquote', block.blockquote)\n ('tag', '<' + block._tag)\n ('def', block.def)\n ();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]*?)\\s*\\1 *(?:\\n+|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = replace(block.paragraph)\n ('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n ();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top, bq) {\n var src = src.replace(/^ +$/gm, '')\n , next\n , loose\n , cap\n , bull\n , b\n , item\n , space\n , i\n , l;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic\n ? cap.replace(/\\n+$/, '')\n : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top, true);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n\n this.tokens.push({\n type: 'list_start',\n ordered: bull.length > 1\n });\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n this.tokens.push({\n type: loose\n ? 'loose_item_start'\n : 'list_item_start'\n });\n\n // Recurse.\n this.token(item, false, bq);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if ((!bq && top) && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.links[cap[1].toLowerCase()] = {\n href: cap[2],\n title: cap[3]\n };\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i]\n .replace(/^ *\\| *| *\\| *$/g, '')\n .split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n autolink: /^<([^ >]+(@|:\\/)[^ >]+)>/,\n url: noop,\n tag: /^|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^\\b_((?:[^_]|__)+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n code: /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n text: /^[\\s\\S]+?(?=[\\\\?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\ninline.link = replace(inline.link)\n ('inside', inline._inside)\n ('href', inline._href)\n ();\n\ninline.reflink = replace(inline.reflink)\n ('inside', inline._inside)\n ();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: replace(inline.escape)('])', '~|])')(),\n url: /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n text: replace(inline.text)\n (']|', '~]|')\n ('|', '|https?://|')\n ()\n});\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: replace(inline.br)('{2,}', '*')(),\n text: replace(inline.gfm.text)('{2,}', '*')()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer;\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new\n Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n var out = ''\n , link\n , text\n , href\n , cap;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += cap[1];\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = cap[1].charAt(6) === ':'\n ? this.mangle(cap[1].substring(7))\n : this.mangle(cap[1]);\n href = this.mangle('mailto:') + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n src = src.substring(cap[0].length);\n text = escape(cap[1]);\n href = text;\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^/i.test(cap[0])) {\n this.inLink = false;\n }\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0]\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out += this.outputLink(cap, {\n href: cap[2],\n title: cap[3]\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2], true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = escape(link.href)\n , title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = ''\n , l = text.length\n , i = 0\n , ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || {};\n}\n\nRenderer.prototype.code = function(code, lang, escaped) {\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '\\n
    ';\n }\n\n return '
    '\n    + (escaped ? code : escape(code, true))\n    + '\\n
    \\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '
    \\n' + quote + '
    \\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw) {\n return ''\n + text\n + '\\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n};\n\nRenderer.prototype.list = function(body, ordered) {\n var type = ordered ? 'ol' : 'ul';\n return '<' + type + '>\\n' + body + '\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '
  • ' + text + '
  • \\n';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '

    ' + text + '

    \\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + '\\n'\n + body\n + '\\n'\n + '
    \\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '\\n' + content + '\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' style=\"text-align:' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.em = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? '
    ' : '
    ';\n};\n\nRenderer.prototype.del = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n if (this.options.sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return '';\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0) {\n return '';\n }\n }\n var out = '
    ';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n var out = '\"'' : '>';\n return out;\n};\n\nRenderer.prototype.text = function(text) {\n return text;\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer;\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options, renderer) {\n var parser = new Parser(options, renderer);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options, this.renderer);\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n this.token.text);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = ''\n , body = ''\n , i\n , row\n , cell\n , flags\n , j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n flags = { header: true, align: this.token.align[i] };\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n var body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n var body = ''\n , ordered = this.token.ordered;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered);\n }\n case 'list_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'loose_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'html': {\n var html = !this.token.pre && !this.options.pedantic\n ? this.inline.output(this.token.text)\n : this.token.text;\n return this.renderer.html(html);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n }\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n return html\n .replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\nfunction unescape(html) {\n\t// explicitly match decimal, hex, and named HTML entities \n return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/g, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction replace(regex, opt) {\n regex = regex.source;\n opt = opt || '';\n return function self(name, val) {\n if (!name) return new RegExp(regex, opt);\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return self;\n };\n}\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1\n , target\n , key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n\n var highlight = opt.highlight\n , tokens\n , pending\n , i = 0;\n\n try {\n tokens = Lexer.lex(src, opt)\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/chjj/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occured:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n sanitizer: null,\n mangle: true,\n smartLists: false,\n silent: false,\n highlight: null,\n langPrefix: 'lang-',\n smartypants: false,\n headerPrefix: '',\n renderer: new Renderer,\n xhtml: false\n};\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.parse = marked;\n\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n this.marked = marked;\n}\n\n}).call(function() {\n return this || (typeof window !== 'undefined' ? window : global);\n}());\n","import marked from 'marked';\n\nmarked.setOptions({\n gfm: true,\n smartypants: true\n});\n\nexport default function(dom, data) {\n let markdownElements = [].slice.call(dom.querySelectorAll('[markdown]'));\n markdownElements.forEach(el => {\n let content = el.innerHTML;\n // Set default indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n\n el.innerHTML = marked(content);\n });\n}\n","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = _self.Prism = {\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/ text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\tbreak tokenloop;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t delNum = 1;\n\n\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t to = match.index + match[0].length,\n\t\t\t\t\t\t k = i,\n\t\t\t\t\t\t p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && p < to; ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t match = match[0].slice(lookbehindLength),\n\t\t\t\t\t to = from + match.length,\n\t\t\t\t\t before = str.slice(0, from),\n\t\t\t\t\t after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (env.type == 'comment') {\n\t\tenv.attributes['spellcheck'] = 'true';\n\t}\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n \t// In worker\n\t_self.addEventListener('message', function(evt) {\n\t\tvar message = JSON.parse(evt.data),\n\t\t lang = message.language,\n\t\t code = message.code,\n\t\t immediateClose = message.immediateClose;\n\n\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\tif (immediateClose) {\n\t\t\t_self.close();\n\t\t}\n\t}, false);\n\n\treturn _self.Prism;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (document.addEventListener && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': //,\n\t'prolog': /<\\?[\\w\\W]+?\\?>/,\n\t'doctype': //i,\n\t'cdata': //i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\w\\W])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:('|\")[\\w\\W]*?(\\1)|[^\\s>]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /[=>\"']/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\w\\W]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^\\{\\}\\s][^\\{\\};]*?(?=\\s*\\{)/,\n\t'string': {\n\t\tpattern: /(\"|')(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'property': /(\\b|\\B)[\\w-]+(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|').*?\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\w\\W]*?\\*\\//,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[a-z0-9_\\.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /(\\.|\\\\)/\n\t\t}\n\t},\n\t'keyword': /\\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(0x[\\dA-Fa-f]+|0b[01]+|0o[0-7]+|\\d*\\.?\\d+([Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*(?=\\()/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*\\*?|\\/|~|\\^|%|\\.{3}/\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[.+?]|\\\\.|[^/\\\\\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\\\\\|\\\\?[^\\\\])*?`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript'\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tif(Array.prototype.forEach) { // Check to prevent error in IE8\n\t\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\t\tvar language, parent = pre;\n\t\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\t\tparent = parent.parentNode;\n\t\t\t\t}\n\n\t\t\t\tif (parent) {\n\t\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t\t}\n\n\t\t\t\tif (!language) {\n\t\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t\t}\n\n\t\t\t\tvar code = document.createElement('code');\n\t\t\t\tcode.className = 'language-' + language;\n\n\t\t\t\tpre.textContent = '';\n\n\t\t\t\tcode.textContent = 'Loading…';\n\n\t\t\t\tpre.appendChild(code);\n\n\t\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\t\txhr.open('GET', src, true);\n\n\t\t\t\txhr.onreadystatechange = function () {\n\t\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\txhr.send(null);\n\t\t\t});\n\t\t}\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\n})();\n","import Prism from \"prismjs\";\n\nexport default function(dom, data) {\n let codeElements = [].slice.call(dom.querySelectorAll(\"dt-code\"));\n codeElements.forEach(el => {\n let content = el.textContent;\n el.innerHTML = \"\";\n let language = el.getAttribute(\"language\");\n let c = dom.createElement(\"code\");\n if (el.getAttribute(\"block\") === \"\") {\n // Let's normalize the tab indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n let p = dom.createElement(\"pre\");\n p.appendChild(c);\n el.appendChild(p);\n } else {\n el.appendChild(c);\n }\n let highlighted = content;\n if (Prism.languages[language]) {\n c.setAttribute(\"class\", \"language-\" + language);\n highlighted = Prism.highlight(content, Prism.languages[language]);\n }\n c.innerHTML = highlighted;\n });\n}\n","export default function(dom, data) {\n\n var textNodes = dom.createTreeWalker(\n dom.body,\n dom.defaultView.NodeFilter.SHOW_TEXT\n );\n while (textNodes.nextNode()) {\n var n = textNodes.currentNode,\n text = n.nodeValue;\n if (text && acceptNode(n)) {\n text = quotes(text);\n text = punctuation(text);\n n.nodeValue = text;\n }\n }\n}\n\nfunction acceptNode(node) {\n var parent = node.parentElement;\n var isMath = (parent && parent.getAttribute && parent.getAttribute(\"class\")) ? parent.getAttribute(\"class\").includes(\"katex\") || parent.getAttribute(\"class\").includes(\"MathJax\") : false;\n return parent &&\n parent.nodeName !== \"SCRIPT\" &&\n parent.nodeName !== \"STYLE\" &&\n parent.nodeName !== \"CODE\" &&\n parent.nodeName !== \"PRE\" &&\n parent.nodeName !== \"SPAN\" &&\n parent.nodeName !== \"DT-HEADER\" &&\n parent.nodeName !== \"DT-BYLINE\" &&\n parent.nodeName !== \"DT-MATH\" &&\n parent.nodeName !== \"DT-CODE\" &&\n parent.nodeName !== \"DT-BIBLIOGRAPHY\" &&\n parent.nodeName !== \"DT-FOOTER\" &&\n parent.nodeType !== 8 && //comment nodes\n !isMath;\n}\n\n\n/*!\n * typeset - Typesetting for the web\n * @version v0.1.6\n * @link https://github.com/davidmerfield/Typeset.js\n * @author David Merfield\n */\n // which has a CC0 license\n // http://creativecommons.org/publicdomain/zero/1.0/\n\n\nfunction punctuation(text){\n\n // Dashes\n text = text.replace(/--/g, '\\u2014');\n text = text.replace(/ \\u2014 /g,\"\\u2009\\u2014\\u2009\"); //this has thin spaces\n\n // Elipses\n text = text.replace(/\\.\\.\\./g,'…');\n\n // Nbsp for punc with spaces\n var NBSP = \"\\u00a0\";\n var NBSP_PUNCTUATION_START = /([«¿¡]) /g;\n var NBSP_PUNCTUATION_END = / ([\\!\\?:;\\.,‽»])/g;\n\n text = text.replace(NBSP_PUNCTUATION_START, '$1' + NBSP);\n text = text.replace(NBSP_PUNCTUATION_END, NBSP + '$1');\n\n return text;\n}\n\nfunction quotes(text) {\n\n text = text\n .replace(/(\\W|^)\"([^\\s\\!\\?:;\\.,‽»])/g, '$1\\u201c$2') // beginning \"\n .replace(/(\\u201c[^\"]*)\"([^\"]*$|[^\\u201c\"]*\\u201c)/g, '$1\\u201d$2') // ending \"\n .replace(/([^0-9])\"/g,'$1\\u201d') // remaining \" at end of word\n .replace(/(\\W|^)'(\\S)/g, '$1\\u2018$2') // beginning '\n .replace(/([a-z])'([a-z])/ig, '$1\\u2019$2') // conjunction's possession\n .replace(/((\\u2018[^']*)|[a-z])'([^0-9]|$)/ig, '$1\\u2019$3') // ending '\n .replace(/(\\u2018)([0-9]{2}[^\\u2019]*)(\\u2018([^0-9]|$)|$|\\u2019[a-z])/ig, '\\u2019$2$3') // abbrev. years like '93\n .replace(/(\\B|^)\\u2018(?=([^\\u2019]*\\u2019\\b)*([^\\u2019\\u2018]*\\W[\\u2019\\u2018]\\b|[^\\u2019\\u2018]*$))/ig, '$1\\u2019') // backwards apostrophe\n .replace(/'''/g, '\\u2034') // triple prime\n .replace(/(\"|'')/g, '\\u2033') // double prime\n .replace(/'/g, '\\u2032');\n\n // Allow escaped quotes\n text = text.replace(/\\\\“/, '\\\"');\n text = text.replace(/\\\\”/, '\\\"');\n text = text.replace(/\\\\’/, '\\'');\n text = text.replace(/\\\\‘/, '\\'');\n\n return text;\n}\n\nfunction ligatures(text){\n\n text = text.replace(/fi/g, 'fi');\n text = text.replace(/fl/g, 'fl');\n\n return text;\n};\n","import code from './hover-box.txt';\n\nexport default function(dom) {\n let s = dom.createElement(\"script\");\n s.textContent = code;\n dom.querySelector(\"body\").appendChild(s);\n}\n","//import xml from \"xml\";\n\nexport default function(data) {\n\n\n var date = data.publishedDate;\n\n var batch_timestamp = Math.floor(Date.now() / 1000);\n var batch_id = data.authors.length ? data.authors[0].lastName.toLowerCase().slice(0,20) : \"Anonymous\";\n batch_id += \"_\" + date.getFullYear();\n batch_id += \"_\" + data.title.split(\" \")[0].toLowerCase().slice(0,20) + \"_\" + batch_timestamp;\n // generate XML\n var crf_data =\n {doi_batch : [\n\n { _attr: {\n version: \"4.3.7\",\n xmlns: \"http://www.crossref.org/schema/4.3.7\",\n \"xmlns:xsi\": \"http://www.w3.org/2001/XMLSchema-instance\",\n \"xsi:schemaLocation\": \"http://www.crossref.org/schema/4.3.7 http://www.crossref.org/schemas/crossref4.3.7.xsd\",\n }},\n\n { head: [\n {doi_batch_id: batch_id},\n {timestamp: batch_timestamp},\n {depositor: [\n {depositor_name: data.journal.publisherName},\n {email_address: data.journal.publisherEmail},\n ]},\n {registrant: data.journal.publisherName},\n ]},\n\n {body: [\n {journal: [\n\n {journal_metadata: [\n {full_title: data.journal.full_title || data.journal.title},\n {abbrev_title: data.journal.abbrev_title || data.journal.title || data.journal.full_title},\n {issn: data.journal.issn},\n {doi_data: [\n {doi: data.journal.doi},\n {resource: data.journal.url},\n ]},\n ]},\n\n {journal_issue: [\n {publication_date: [\n {month: date.getMonth()+1},\n {year: date.getFullYear()},\n ]},\n {journal_volume: [\n {volume: data.volume},\n ]},\n {issue: data.issue},\n ]},\n\n {journal_article: [\n {titles: [\n {title: data.title},\n ]},\n { contributors:\n data.authors.map((author, ind) => (\n {person_name: [\n { _attr: {\n contributor_role: \"author\",\n sequence: (ind == 0)? \"first\" : \"additional\"\n }},\n {given_name: author.firstName},\n {surname: author.lastName},\n {affiliation: author.affiliation}\n // TODO: ORCID?\n ]}\n ))\n },\n {publication_date: [\n {month: date.getMonth()+1},\n {day: date.getDate()},\n {year: date.getFullYear()}\n ]},\n { publisher_item: [\n {item_number: data.doi}\n ]},\n {doi_data: [\n {doi: data.doi},\n //{timestamp: \"\"},\n {resource: data.url},\n ]},\n {citation_list:\n data.citations.map(key =>\n citation_xml(key, data.bibliography[key]))\n }\n\n ]},\n\n ]},\n ]},\n ]};\n\n return xml(crf_data);\n}\n\nfunction citation_xml(key, ent){\n if (ent == undefined) return {};\n var info = [];\n info.push({_attr: {key: key}});\n if (\"title\" in ent)\n info.push({article_title: ent.title});\n if (\"author\" in ent)\n info.push({author: ent.author.split(\" and \")[0].split(\",\")[0].trim()});\n if (\"journal\" in ent)\n info.push({journal_title: ent.journal});\n if (\"booktitle\" in ent)\n info.push({volume_title: ent.booktitle});\n if (\"volume\" in ent)\n info.push({volume: ent.volume});\n if (\"issue\" in ent)\n info.push({issue: ent.issue});\n if (\"doi\" in ent)\n info.push({doi: ent.doi});\n return {citation: info}\n}\n\nfunction xml(obj) {\n //console.log(typeof(obj), obj)\n if (typeof obj === 'string') return obj;\n if (typeof obj === 'number') return \"\"+obj;\n let keys = Object.keys(obj);\n if (keys.length != 1) console.error(\"can't interpret \", obj, \"as xml\");\n let name = keys[0];\n var full_content = obj[name];\n var attr = {};\n if (Array.isArray(full_content)){\n var content = [];\n for (var i in full_content) {\n var obj = full_content[i];\n var obj_name = Object.keys(obj)[0];\n if (\"_attr\" == obj_name) {\n attr = obj[\"_attr\"];\n } else {\n //console.log(Object.keys(obj)[0])\n content.push(obj);\n }\n }\n } else {\n content = full_content;\n }\n if (content == undefined){\n content = \"undefined\"\n }\n\n let attr_string = \"\";\n for (var k in attr) {\n attr_string += ` ${k}=\\\"${attr[k]}\\\"`\n }\n\n //console.log(typeof content, Array.isArray(content), content instanceof String, content)\n if (Array.isArray(content)){\n content = content.map(xml);\n content = content.join(\"\\n\").split(\"\\n\");\n content = content.map(s => \" \" + s).join(\"\\n\")\n var result = `<${name}${attr_string}>\\n${content}\\n`;\n } else {\n content = xml(content);\n var result = `<${name}${attr_string}>${content}`;\n }\n return result;\n}\n","import logo from \"./distill-logo.svg\";\n\nconst html = `\n\n\n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-header\");\n if(el) {\n el.innerHTML = html;\n } else {\n let header = dom.createElement(\"dt-header\");\n header.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(header, b.firstChild);\n }\n}\n","import logo from \"./distill-logo.svg\";\n\nlet html = `\n\n\n
    \n
    \n \n ${logo}\n Distill\n \n is dedicated to clear explanations of machine learning\n
    \n
    \n About\n Submit\n Prize\n RSS\n Twitter\n
    \n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-footer\");\n if(el) {\n el.innerHTML = html;\n } else {\n let footer = dom.createElement(\"dt-footer\");\n footer.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.appendChild(footer);\n }\n}\n","import html from \"./components/html\";\nimport styles from \"./components/styles\";\nimport frontMatter from \"./components/front-matter\";\nimport bibliography from \"./components/bibliography\";\nimport expandData from \"./components/expand-data\";\nimport meta from \"./components/meta\";\nimport banner from \"./components/banner\";\nimport byline from \"./components/byline\";\nimport appendix from \"./components/appendix\";\nimport citation from \"./components/citation\";\nimport footnote from \"./components/footnote\";\nimport markdown from \"./components/markdown\";\nimport code from \"./components/code\";\nimport typeset from \"./components/typeset\";\nimport hoverBox from \"./components/hover-box-include\";\nimport generateCrossref from \"./components/generate-crossref\";\nimport header from \"./components/header\";\nimport footer from \"./components/footer\";\n\nfunction renderImmediately(dom) {\n html(dom);\n styles(dom);\n}\n\nfunction renderOnLoad(dom, data) {\n frontMatter(dom, data);\n bibliography(dom, data);\n expandData(dom, data);\n meta(dom, data);\n byline(dom, data);\n appendix(dom, data);\n markdown(dom, data);\n code(dom, data);\n citation(dom, data);\n footnote(dom, data);\n typeset(dom, data);\n hoverBox(dom, data);\n}\n\n// If we are in a browser, render automatically...\nif(window && window.document) {\n let data = {};\n renderImmediately(window.document);\n window.document.addEventListener(\"DOMContentLoaded\", (event) => {\n renderOnLoad(window.document, data);\n // Add a banner if we're not on localhost.\n if (window.location.hostname !== \"localhost\" && window.location.origin !== \"file://\") {\n banner(window.document, data);\n }\n generateCrossref(data);\n });\n}\n\n// If we are in node...\nfunction render(dom, data) {\n renderImmediately(dom);\n renderOnLoad(dom, data);\n // Remove script tag so it doesn't run again in the client\n let s = dom.querySelector('script[src*=\"distill.pub/template\"]');\n if (s) { s.parentElement.removeChild(s); };\n}\n\n// Distill specific rendering\nfunction distillify(dom, data) {\n header(dom, data);\n footer(dom, data);\n}\n\nexport {render as render};\nexport {distillify as distillify};\nexport {generateCrossref as generateCrossref};\n"],"names":["let","meta","YAMLException","common","require$$0","Mark","this","Type","require$$1","require$$2","type","arguments","Schema","require$$3","require$$4","require$$5","require","_hasOwnProperty","_toString","require$$6","require$$7","_require","DEFAULT_SAFE_SCHEMA","DEFAULT_FULL_SCHEMA","loadAll","load","safeLoadAll","safeLoad","State","dump","safeDump","require$$8","require$$9","ymlParse","interval","day","timeDay","timeYear","timeSunday","timeMonday","locale","escape","const","html","define","global","Prism","code","render"],"mappings":"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"} \ No newline at end of file From bf0cefac67ccb4216245d553c78b53c76b05352e Mon Sep 17 00:00:00 2001 From: Sam Liu Date: Wed, 22 Mar 2017 12:16:36 -0400 Subject: [PATCH 11/42] dismiss-citation-popup-ontouchend --- components/hover-box.txt | 5 +++++ dist/template.js | 2 +- dist/template.js.map | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/components/hover-box.txt b/components/hover-box.txt index b8a555e..8900f69 100644 --- a/components/hover-box.txt +++ b/components/hover-box.txt @@ -81,6 +81,11 @@ DistillHoverBox.bind = function bind(node, key) { DistillHoverBox.liveBoxes[key].extendTimeout(250); } }); + node.addEventListener("touchend", () => { + if (key in DistillHoverBox.liveBoxes){ + DistillHoverBox.liveBoxes[key].extendTimeout(250); + } + }); } diff --git a/dist/template.js b/dist/template.js index b7e3830..1be62c0 100644 --- a/dist/template.js +++ b/dist/template.js @@ -8492,7 +8492,7 @@ function quotes(text) { return text; } -var code$2 = "// DistillHoverBox\n//=====================================\n\nfunction DistillHoverBox(key, pos){\n\n if (!(key in DistillHoverBox.contentMap)){\n console.error(\"No DistillHoverBox content registered for key\", key);\n }\n if (key in DistillHoverBox.liveBoxes) {\n console.error(\"There already exists a DistillHoverBox for key\", key);\n } else {\n for (var k in DistillHoverBox.liveBoxes)\n DistillHoverBox.liveBoxes[k].remove();\n DistillHoverBox.liveBoxes[key] = this;\n }\n this.key = key;\n\n var pretty = window.innerWidth > 600;\n\n var padding = pretty? 18 : 12;\n var outer_padding = pretty ? 18 : 0;\n var bbox = document.querySelector(\"body\").getBoundingClientRect();\n var left = pos[0] - bbox.left, top = pos[1] - bbox.top;\n var width = Math.min(window.innerWidth-2*outer_padding, 648);\n left = Math.min(left, window.innerWidth-width-outer_padding);\n width = width - 2*padding;\n\n var str = `
    \n ${DistillHoverBox.contentMap[key]}\n
    `;\n\n this.div = appendBody(str);\n\n DistillHoverBox.bind (this.div, key);\n}\n\nDistillHoverBox.prototype.remove = function remove(){\n if (this.div) this.div.remove();\n if (this.timeout) clearTimeout(this.timeout);\n delete DistillHoverBox.liveBoxes[this.key];\n}\n\nDistillHoverBox.prototype.stopTimeout = function stopTimeout() {\n if (this.timeout) clearTimeout(this.timeout);\n}\n\nDistillHoverBox.prototype.extendTimeout = function extendTimeout(T) {\n //console.log(\"extend\", T)\n var this_ = this;\n this.stopTimeout();\n this.timeout = setTimeout(() => this_.remove(), T);\n}\n\nDistillHoverBox.liveBoxes = {};\nDistillHoverBox.contentMap = {};\n\nDistillHoverBox.bind = function bind(node, key) {\n if (typeof node == \"string\"){\n node = document.querySelector(node);\n }\n node.addEventListener(\"mouseover\", () => {\n var bbox = node.getBoundingClientRect();\n if (!(key in DistillHoverBox.liveBoxes)){\n new DistillHoverBox(key, [bbox.right, bbox.bottom]);\n }\n DistillHoverBox.liveBoxes[key].stopTimeout();\n });\n node.addEventListener(\"mouseout\", () => {\n if (key in DistillHoverBox.liveBoxes){\n DistillHoverBox.liveBoxes[key].extendTimeout(250);\n }\n });\n\n}\n\n\nfunction appendBody(str){\n var node = nodeFromString(str);\n var body = document.querySelector(\"body\");\n body.appendChild(node);\n return node;\n}\n\nfunction nodeFromString(str) {\n var div = document.createElement(\"div\");\n div.innerHTML = str;\n return div.firstChild;\n}\n\nvar hover_es = document.querySelectorAll(\"span[data-hover]\");\nhover_es = [].slice.apply(hover_es);\nhover_es.forEach((e,n) => {\n var key = \"hover-\"+n;\n var content = e.getAttribute(\"data-hover\");\n DistillHoverBox.contentMap[key] = content;\n DistillHoverBox.bind(e, key);\n});\n"; +var code$2 = "// DistillHoverBox\n//=====================================\n\nfunction DistillHoverBox(key, pos){\n\n if (!(key in DistillHoverBox.contentMap)){\n console.error(\"No DistillHoverBox content registered for key\", key);\n }\n if (key in DistillHoverBox.liveBoxes) {\n console.error(\"There already exists a DistillHoverBox for key\", key);\n } else {\n for (var k in DistillHoverBox.liveBoxes)\n DistillHoverBox.liveBoxes[k].remove();\n DistillHoverBox.liveBoxes[key] = this;\n }\n this.key = key;\n\n var pretty = window.innerWidth > 600;\n\n var padding = pretty? 18 : 12;\n var outer_padding = pretty ? 18 : 0;\n var bbox = document.querySelector(\"body\").getBoundingClientRect();\n var left = pos[0] - bbox.left, top = pos[1] - bbox.top;\n var width = Math.min(window.innerWidth-2*outer_padding, 648);\n left = Math.min(left, window.innerWidth-width-outer_padding);\n width = width - 2*padding;\n\n var str = `
    \n ${DistillHoverBox.contentMap[key]}\n
    `;\n\n this.div = appendBody(str);\n\n DistillHoverBox.bind (this.div, key);\n}\n\nDistillHoverBox.prototype.remove = function remove(){\n if (this.div) this.div.remove();\n if (this.timeout) clearTimeout(this.timeout);\n delete DistillHoverBox.liveBoxes[this.key];\n}\n\nDistillHoverBox.prototype.stopTimeout = function stopTimeout() {\n if (this.timeout) clearTimeout(this.timeout);\n}\n\nDistillHoverBox.prototype.extendTimeout = function extendTimeout(T) {\n //console.log(\"extend\", T)\n var this_ = this;\n this.stopTimeout();\n this.timeout = setTimeout(() => this_.remove(), T);\n}\n\nDistillHoverBox.liveBoxes = {};\nDistillHoverBox.contentMap = {};\n\nDistillHoverBox.bind = function bind(node, key) {\n if (typeof node == \"string\"){\n node = document.querySelector(node);\n }\n node.addEventListener(\"mouseover\", () => {\n var bbox = node.getBoundingClientRect();\n if (!(key in DistillHoverBox.liveBoxes)){\n new DistillHoverBox(key, [bbox.right, bbox.bottom]);\n }\n DistillHoverBox.liveBoxes[key].stopTimeout();\n });\n node.addEventListener(\"mouseout\", () => {\n if (key in DistillHoverBox.liveBoxes){\n DistillHoverBox.liveBoxes[key].extendTimeout(250);\n }\n });\n node.addEventListener(\"touchend\", () => {\n if (key in DistillHoverBox.liveBoxes){\n DistillHoverBox.liveBoxes[key].extendTimeout(250);\n }\n });\n\n}\n\n\nfunction appendBody(str){\n var node = nodeFromString(str);\n var body = document.querySelector(\"body\");\n body.appendChild(node);\n return node;\n}\n\nfunction nodeFromString(str) {\n var div = document.createElement(\"div\");\n div.innerHTML = str;\n return div.firstChild;\n}\n\nvar hover_es = document.querySelectorAll(\"span[data-hover]\");\nhover_es = [].slice.apply(hover_es);\nhover_es.forEach((e,n) => {\n var key = \"hover-\"+n;\n var content = e.getAttribute(\"data-hover\");\n DistillHoverBox.contentMap[key] = content;\n DistillHoverBox.bind(e, key);\n});\n"; var hoverBox = function(dom) { var s = dom.createElement("script"); diff --git a/dist/template.js.map b/dist/template.js.map index 9467022..60c15b1 100644 --- a/dist/template.js.map +++ b/dist/template.js.map @@ -1 +1 @@ -{"version":3,"file":null,"sources":["../components/html.js","../components/styles.js","../node_modules/js-yaml/lib/js-yaml/common.js","../node_modules/js-yaml/lib/js-yaml/exception.js","../node_modules/js-yaml/lib/js-yaml/mark.js","../node_modules/js-yaml/lib/js-yaml/type.js","../node_modules/js-yaml/lib/js-yaml/schema.js","../node_modules/js-yaml/lib/js-yaml/type/str.js","../node_modules/js-yaml/lib/js-yaml/type/seq.js","../node_modules/js-yaml/lib/js-yaml/type/map.js","../node_modules/js-yaml/lib/js-yaml/schema/failsafe.js","../node_modules/js-yaml/lib/js-yaml/type/null.js","../node_modules/js-yaml/lib/js-yaml/type/bool.js","../node_modules/js-yaml/lib/js-yaml/type/int.js","../node_modules/js-yaml/lib/js-yaml/type/float.js","../node_modules/js-yaml/lib/js-yaml/schema/json.js","../node_modules/js-yaml/lib/js-yaml/schema/core.js","../node_modules/js-yaml/lib/js-yaml/type/timestamp.js","../node_modules/js-yaml/lib/js-yaml/type/merge.js","../node_modules/js-yaml/lib/js-yaml/type/binary.js","../node_modules/js-yaml/lib/js-yaml/type/omap.js","../node_modules/js-yaml/lib/js-yaml/type/pairs.js","../node_modules/js-yaml/lib/js-yaml/type/set.js","../node_modules/js-yaml/lib/js-yaml/schema/default_safe.js","../node_modules/js-yaml/lib/js-yaml/type/js/undefined.js","../node_modules/js-yaml/lib/js-yaml/type/js/regexp.js","../node_modules/js-yaml/lib/js-yaml/type/js/function.js","../node_modules/js-yaml/lib/js-yaml/schema/default_full.js","../node_modules/js-yaml/lib/js-yaml/loader.js","../node_modules/js-yaml/lib/js-yaml/dumper.js","../node_modules/js-yaml/lib/js-yaml.js","../node_modules/js-yaml/index.js","../components/front-matter.js","../node_modules/bibtex-parse-js/bibtexParse.js","../components/bibliography.js","../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/utcMinute.js","../node_modules/d3-time/src/utcHour.js","../node_modules/d3-time/src/utcDay.js","../node_modules/d3-time/src/utcWeek.js","../node_modules/d3-time/src/utcMonth.js","../node_modules/d3-time/src/utcYear.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-time-format/src/isoFormat.js","../node_modules/d3-time-format/src/isoParse.js","../components/expand-data.js","../../node_modules/escape-html/index.js","../components/meta.js","../components/banner.js","../node_modules/mustache/mustache.js","../components/byline.js","../components/appendix.js","../components/citation.js","../components/footnote.js","../node_modules/marked/lib/marked.js","../components/markdown.js","../node_modules/prismjs/prism.js","../components/code.js","../components/typeset.js","../components/hover-box-include.js","../components/generate-crossref.js","../components/header.js","../components/footer.js","../index.js"],"sourcesContent":["export default function(dom) {\n if (!dom.querySelector(\"html\").getAttribute(\"lang\")) {\n dom.querySelector(\"html\").setAttribute(\"lang\", \"en\")\n }\n\n let head = dom.querySelector(\"head\");\n\n if (!dom.querySelector(\"meta[charset]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"charset\", \"utf-8\");\n head.appendChild(meta);\n }\n if (!dom.querySelector(\"meta[name=viewport]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"name\", \"viewport\");\n meta.setAttribute(\"content\", \"width=device-width, initial-scale=1\");\n head.appendChild(meta);\n }\n}\n","import base from './styles-base.css';\nimport layout from './styles-layout.css';\nimport article from './styles-article.css';\nimport code from './styles-code.css';\nimport print from './styles-print.css';\n\nexport default function(dom) {\n let s = dom.createElement(\"style\");\n s.textContent = base + layout + article + code + print;\n dom.querySelector(\"head\").appendChild(s);\n}\n","'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n var result = this.name + ': ';\n\n result += this.reason || '(unknown reason)';\n\n if (!compact && this.mark) {\n result += ' ' + this.mark.toString();\n }\n\n return result;\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n\nvar common = require('./common');\n\n\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\n\n\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head, start, tail, end, snippet;\n\n if (!this.buffer) return null;\n\n indent = indent || 4;\n maxLength = maxLength || 75;\n\n head = '';\n start = this.position;\n\n while (start > 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n\n tail = '';\n end = this.position;\n\n while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n\n snippet = this.buffer.slice(start, end);\n\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' +\n common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\n\nMark.prototype.toString = function toString(compact) {\n var snippet, where = '';\n\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n if (!compact) {\n snippet = this.getSnippet();\n\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n\n return where;\n};\n\n\nmodule.exports = Mark;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name, result) {\n var exclude = [];\n\n schema.include.forEach(function (includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n\n schema[name].forEach(function (currentType) {\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n exclude.push(previousIndex);\n }\n });\n\n result.push(currentType);\n });\n\n return result.filter(function (type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {}\n }, index, length;\n\n function collectType(type) {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n\n this.implicit.forEach(function (type) {\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n });\n\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\n\nSchema.DEFAULT = null;\n\n\nSchema.create = function createSchema() {\n var schemas, types;\n\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n\n if (!schemas.every(function (schema) { return schema instanceof Schema; })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n\n if (!types.every(function (type) { return type instanceof Type; })) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n return new Schema({\n include: schemas,\n explicit: types\n });\n};\n\n\nmodule.exports = Schema;\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 8\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 10 (except 0) or base 60\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch === ':') break;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n if (!hasDigits) return false;\n\n // if !base60 - done;\n if (ch !== ':') return true;\n\n // base60 almost not used, no needs to optimize\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch, base, digits = [];\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value, 16);\n return sign * parseInt(value, 8);\n }\n\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseInt(v, 10));\n });\n\n value = 0;\n base = 1;\n\n digits.forEach(function (d) {\n value += (d * base);\n base *= 60;\n });\n\n return sign * value;\n\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (object) { return '0b' + object.toString(2); },\n octal: function (object) { return '0' + object.toString(8); },\n decimal: function (object) { return object.toString(10); },\n hexadecimal: function (object) { return '0x' + object.toString(16).toUpperCase(); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n '^(?:[-+]?(?:[0-9][0-9_]*)\\\\.[0-9_]*(?:[eE][-+][0-9]+)?' +\n '|\\\\.[0-9_]+(?:[eE][-+][0-9]+)?' +\n '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' +\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data)) return false;\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign, base, digits;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n\n } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n\n value = 0.0;\n base = 1;\n\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n\n return sign * value;\n\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./failsafe')\n ],\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./json')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\nvar NodeBuffer;\n\ntry {\n // A trick for browserified version, to not include `Buffer` shim\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n // Wrap into Buffer for NodeJS and leave Array for browser\n if (NodeBuffer) return new NodeBuffer(result);\n\n return result;\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./core')\n ],\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n return true;\n}\n\nfunction constructJavascriptUndefined() {\n /*eslint-disable no-undefined*/\n return undefined;\n}\n\nfunction representJavascriptUndefined() {\n return '';\n}\n\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n if (data === null) return false;\n if (data.length === 0) return false;\n\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // if regexp starts with '/' it can have modifiers and must be properly closed\n // `/foo/gim` - modifiers tail can be maximum 3 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n\n if (modifiers.length > 3) return false;\n // if expression starts with /, is should be properly terminated\n if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n }\n\n return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // `/foo/gim` - tail can be maximum 4 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n\n return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object /*, style*/) {\n var result = '/' + object.source + '/';\n\n if (object.global) result += 'g';\n if (object.multiline) result += 'm';\n if (object.ignoreCase) result += 'i';\n\n return result;\n}\n\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n","'use strict';\n\nvar esprima;\n\n// Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n// If not found - try to fallback to window.esprima. If not\n// found too - then fail to parse.\n//\ntry {\n // workaround to exclude package from browserify list.\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n /*global window */\n if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n if (data === null) return false;\n\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true });\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction constructJavascriptFunction(data) {\n /*jslint evil:true*/\n\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true }),\n params = [],\n body;\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n throw new Error('Failed to resolve function');\n }\n\n ast.body[0].expression.params.forEach(function (param) {\n params.push(param.name);\n });\n\n body = ast.body[0].expression.body.range;\n\n // Esprima's ranges include the first '{' and the last '}' characters on\n // function expressions. So cut them out.\n /*eslint-disable no-new-func*/\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n}\n\nfunction representJavascriptFunction(object /*, style*/) {\n return object.toString();\n}\n\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n","// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [\n require('./default_safe')\n ],\n explicit: [\n require('../type/js/undefined'),\n require('../type/js/regexp'),\n require('../type/js/function')\n ]\n});\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00);\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n return new YAMLException(\n message,\n new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length;\n _position < _length;\n _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode) {\n var index, quantity;\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n throwError(state, 'duplicated mapping key');\n }\n _result[keyNode] = valueNode;\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else {\n break; // Reading is done. Go to the epilogue.\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if (state.lineIndent > nodeIndent && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!state.anchorMap.hasOwnProperty(alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag !== null && state.tag !== '!') {\n if (state.tag === '?') {\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length;\n typeIndex < typeQuantity;\n typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only assigned to plain scalars. So, it isn't\n // needed to check for 'kind' conformity.\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = {};\n state.anchorMap = {};\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n var documents = loadDocuments(input, options), index, length;\n\n for (index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nfunction safeLoadAll(input, output, options) {\n loadAll(input, output, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nfunction safeLoad(input, options) {\n return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// Simplified test for values allowed after the first character in plain style.\nfunction isPlainSafe(c) {\n // Uses a subset of nb-char - c-flow-indicator - \":\" - \"#\"\n // where nb-char ::= c-printable - b-char - c-byte-order-mark.\n return isPrintable(c) && c !== 0xFEFF\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // - \":\" - \"#\"\n && c !== CHAR_COLON\n && c !== CHAR_SHARP;\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n return isPrintable(c) && c !== 0xFEFF\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {\n var i;\n var char;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(string.charCodeAt(0))\n && !isWhitespace(string.charCodeAt(string.length - 1));\n\n if (singleLineOnly) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n return plain && !testAmbiguousType(string)\n ? STYLE_PLAIN : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (string[0] === ' ' && indentPerLevel > 9) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey) {\n state.dump = (function () {\n if (string.length === 0) {\n return \"''\";\n }\n if (!state.noCompatMode &&\n DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n return \"'\" + string + \"'\";\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = (string[0] === ' ') ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char;\n var escapeSeq;\n\n for (var i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n result += !escapeSeq && isPrintable(char)\n ? string[i]\n : escapeSeq || encodeHex(char);\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level, object[index], false, false)) {\n if (index !== 0) _result += ', ';\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || index !== 0) {\n _result += generateNextLine(state, level);\n }\n _result += '- ' + state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (index !== 0) pairBuffer += ', ';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + ': ';\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || index !== 0) {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n state.tag = explicit ? type.tag : '?';\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n writeBlockSequence(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey);\n }\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n state.dump = '!<' + state.tag + '> ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n if (writeNode(state, 0, input, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nfunction safeDump(input, options) {\n return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n","'use strict';\n\n\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\n\n\nfunction deprecated(name) {\n return function () {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\n\n\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\n\n// Deprecated schema names from JS-YAML 2.0.x\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\n\n// Deprecated functions from JS-YAML 1.x.x\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","'use strict';\n\n\nvar yaml = require('./lib/js-yaml.js');\n\n\nmodule.exports = yaml;\n","import ymlParse from \"js-yaml\";\n\nexport default function(dom, data) {\n let localData = {};\n let el = dom.querySelector('script[type=\"text/front-matter\"]');\n if (el) {\n let text = el.textContent;\n localData = ymlParse.safeLoad(text);\n }\n\n data.title = localData.title ? localData.title : \"Untitled\";\n data.description = localData.description ? localData.description : \"No description.\";\n\n data.authors = localData.authors ? localData.authors : [];\n\n data.authors = data.authors.map((author, i) =>{\n let a = {};\n let name = Object.keys(author)[0];\n if ((typeof author) === \"string\") {\n name = author;\n } else {\n a.personalURL = author[name];\n }\n let names = name.split(\" \");\n a.name = name;\n a.firstName = names.slice(0, names.length - 1).join(\" \");\n a.lastName = names[names.length -1];\n if(localData.affiliations[i]) {\n let affiliation = Object.keys(localData.affiliations[i])[0];\n if ((typeof localData.affiliations[i]) === \"string\") {\n affiliation = localData.affiliations[i]\n } else {\n a.affiliationURL = localData.affiliations[i][affiliation];\n }\n a.affiliation = affiliation;\n }\n return a;\n });\n \n\n}\n","/* start bibtexParse 0.0.22 */\n\n//Original work by Henrik Muehe (c) 2010\n//\n//CommonJS port by Mikola Lysenko 2013\n//\n//Port to Browser lib by ORCID / RCPETERS\n//\n//Issues:\n//no comment handling within strings\n//no string concatenation\n//no variable values yet\n//Grammar implemented here:\n//bibtex -> (string | preamble | comment | entry)*;\n//string -> '@STRING' '{' key_equals_value '}';\n//preamble -> '@PREAMBLE' '{' value '}';\n//comment -> '@COMMENT' '{' value '}';\n//entry -> '@' key '{' key ',' key_value_list '}';\n//key_value_list -> key_equals_value (',' key_equals_value)*;\n//key_equals_value -> key '=' value;\n//value -> value_quotes | value_braces | key;\n//value_quotes -> '\"' .*? '\"'; // not quite\n//value_braces -> '{' .*? '\"'; // not quite\n(function(exports) {\n\n function BibtexParser() {\n \n this.months = [\"jan\", \"feb\", \"mar\", \"apr\", \"may\", \"jun\", \"jul\", \"aug\", \"sep\", \"oct\", \"nov\", \"dec\"];\n this.notKey = [',','{','}',' ','='];\n this.pos = 0;\n this.input = \"\";\n this.entries = new Array();\n\n this.currentEntry = \"\";\n\n this.setInput = function(t) {\n this.input = t;\n };\n\n this.getEntries = function() {\n return this.entries;\n };\n\n this.isWhitespace = function(s) {\n return (s == ' ' || s == '\\r' || s == '\\t' || s == '\\n');\n };\n\n this.match = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n this.pos += s.length;\n } else {\n throw \"Token mismatch, expected \" + s + \", found \"\n + this.input.substring(this.pos);\n };\n this.skipWhitespace(canCommentOut);\n };\n\n this.tryMatch = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n return true;\n } else {\n return false;\n };\n this.skipWhitespace(canCommentOut);\n };\n\n /* when search for a match all text can be ignored, not just white space */\n this.matchAt = function() {\n while (this.input.length > this.pos && this.input[this.pos] != '@') {\n this.pos++;\n };\n\n if (this.input[this.pos] == '@') {\n return true;\n };\n return false;\n };\n\n this.skipWhitespace = function(canCommentOut) {\n while (this.isWhitespace(this.input[this.pos])) {\n this.pos++;\n };\n if (this.input[this.pos] == \"%\" && canCommentOut == true) {\n while (this.input[this.pos] != \"\\n\") {\n this.pos++;\n };\n this.skipWhitespace(canCommentOut);\n };\n };\n\n this.value_braces = function() {\n var bracecount = 0;\n this.match(\"{\", false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '}') {\n if (bracecount > 0) {\n bracecount--;\n } else {\n var end = this.pos;\n this.match(\"}\", false);\n return this.input.substring(start, end);\n };\n } else if (this.input[this.pos] == '{') {\n bracecount++;\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value\";\n };\n };\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.value_comment = function() {\n var str = '';\n var brcktCnt = 0;\n while (!(this.tryMatch(\"}\", false) && brcktCnt == 0)) {\n str = str + this.input[this.pos];\n if (this.input[this.pos] == '{')\n brcktCnt++;\n if (this.input[this.pos] == '}')\n brcktCnt--;\n if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n this.pos++;\n };\n return str;\n };\n\n this.value_quotes = function() {\n this.match('\"', false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '\"') {\n var end = this.pos;\n this.match('\"', false);\n return this.input.substring(start, end);\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n }\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.single_value = function() {\n var start = this.pos;\n if (this.tryMatch(\"{\")) {\n return this.value_braces();\n } else if (this.tryMatch('\"')) {\n return this.value_quotes();\n } else {\n var k = this.key();\n if (k.match(\"^[0-9]+$\"))\n return k;\n else if (this.months.indexOf(k.toLowerCase()) >= 0)\n return k.toLowerCase();\n else\n throw \"Value expected:\" + this.input.substring(start) + ' for key: ' + k;\n \n };\n };\n\n this.value = function() {\n var values = [];\n values.push(this.single_value());\n while (this.tryMatch(\"#\")) {\n this.match(\"#\");\n values.push(this.single_value());\n };\n return values.join(\"\");\n };\n\n this.key = function() {\n var start = this.pos;\n while (true) {\n if (this.pos >= this.input.length) {\n throw \"Runaway key\";\n };\n // а-яА-Я is Cyrillic\n //console.log(this.input[this.pos]);\n if (this.notKey.indexOf(this.input[this.pos]) >= 0) {\n return this.input.substring(start, this.pos);\n } else {\n this.pos++;\n \n };\n };\n };\n\n this.key_equals_value = function() {\n var key = this.key();\n if (this.tryMatch(\"=\")) {\n this.match(\"=\");\n var val = this.value();\n return [ key, val ];\n } else {\n throw \"... = value expected, equals sign missing:\"\n + this.input.substring(this.pos);\n };\n };\n\n this.key_value_list = function() {\n var kv = this.key_equals_value();\n this.currentEntry['entryTags'] = {};\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n while (this.tryMatch(\",\")) {\n this.match(\",\");\n // fixes problems with commas at the end of a list\n if (this.tryMatch(\"}\")) {\n break;\n }\n ;\n kv = this.key_equals_value();\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n };\n };\n\n this.entry_body = function(d) {\n this.currentEntry = {};\n this.currentEntry['citationKey'] = this.key();\n this.currentEntry['entryType'] = d.substring(1);\n this.match(\",\");\n this.key_value_list();\n this.entries.push(this.currentEntry);\n };\n\n this.directive = function() {\n this.match(\"@\");\n return \"@\" + this.key();\n };\n\n this.preamble = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'PREAMBLE';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.comment = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'COMMENT';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.entry = function(d) {\n this.entry_body(d);\n };\n\n this.bibtex = function() {\n while (this.matchAt()) {\n var d = this.directive();\n this.match(\"{\");\n if (d == \"@STRING\") {\n this.string();\n } else if (d == \"@PREAMBLE\") {\n this.preamble();\n } else if (d == \"@COMMENT\") {\n this.comment();\n } else {\n this.entry(d);\n }\n this.match(\"}\");\n };\n };\n };\n \n exports.toJSON = function(bibtex) {\n var b = new BibtexParser();\n b.setInput(bibtex);\n b.bibtex();\n return b.entries;\n };\n\n /* added during hackathon don't hate on me */\n exports.toBibtex = function(json) {\n var out = '';\n for ( var i in json) {\n out += \"@\" + json[i].entryType;\n out += '{';\n if (json[i].citationKey)\n out += json[i].citationKey + ', ';\n if (json[i].entry)\n out += json[i].entry ;\n if (json[i].entryTags) {\n var tags = '';\n for (var jdx in json[i].entryTags) {\n if (tags.length != 0)\n tags += ', ';\n tags += jdx + '= {' + json[i].entryTags[jdx] + '}';\n }\n out += tags;\n }\n out += '}\\n\\n';\n }\n return out;\n \n };\n\n})(typeof exports === 'undefined' ? this['bibtexParse'] = {} : exports);\n\n/* end bibtexParse */\n","import bibtexParse from \"bibtex-parse-js\";\n\nexport default function(dom, data) {\n let el = dom.querySelector('script[type=\"text/bibliography\"]');\n let citations = [];\n let bibliography = {};\n //TODO If we don't have a local element, make a request for the document.\n if (el) {\n let rawBib = el.textContent;\n let parsed = bibtexParse.toJSON(rawBib);\n if(parsed) {\n parsed.forEach(e => {\n for (var k in e.entryTags){\n var val = e.entryTags[k];\n val = val.replace(/[\\t\\n ]+/g, \" \");\n val = val.replace(/{\\\\[\"^`\\.'acu~Hvs]( )?([a-zA-Z])}/g,\n (full, x, char) => char);\n val = val.replace(/{\\\\([a-zA-Z])}/g,\n (full, char) => char);\n e.entryTags[k] = val;\n }\n bibliography[e.citationKey] = e.entryTags;\n bibliography[e.citationKey].type = e.entryType;\n });\n }\n\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach(el => {\n let key = el.getAttribute(\"key\");\n if (key) {\n let citationKeys = key.split(\",\");\n citationKeys.forEach(key => {\n if (citations.indexOf(key) == -1){\n citations.push(key);\n if (!(key in bibliography)){\n console.warn(\"No bibliography entry found for: \" + key);\n }\n }\n });\n }\n });\n }\n data.bibliography = bibliography;\n data.citations = citations;\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(new Date(+start)); while (offseti(start, step), floori(start), start < stop)\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) while (--step >= 0) while (offseti(date, 1), !test(date)) {} // eslint-disable-line no-empty\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(Math.floor(date / durationSecond) * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(Math.floor(date / durationMinute) * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute} from \"./duration\";\n\nvar hour = interval(function(date) {\n var offset = date.getTimezoneOffset() * durationMinute % durationHour;\n if (offset < 0) offset += durationHour;\n date.setTime(Math.floor((+date - offset) / durationHour) * durationHour + offset);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval\";\nimport {durationWeek} from \"./duration\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {timeDay, timeSunday, timeMonday, timeYear, utcDay, utcSunday, utcMonday, utcYear} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"S\": formatSeconds,\n \"U\": formatWeekNumberSunday,\n \"w\": formatWeekdayNumber,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"S\": formatUTCSeconds,\n \"U\": formatUTCWeekNumberSunday,\n \"w\": formatUTCWeekdayNumber,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"S\": parseSeconds,\n \"U\": parseWeekNumberSunday,\n \"w\": parseWeekdayNumber,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0);\n if (i != string.length) return null;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n var day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?:\\:?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekdayNumber(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekdayNumber(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {timeFormat} from \"d3-time-format\";\n\nexport default function(dom, data) {\n\n data.authors = data.authors || [];\n\n // paths\n data.url = data.url ? data.url : \"http://distill.pub/\" + data.distillPath;\n data.githubUrl = \"https://github.com/\" + data.githubPath;\n\n data.previewURL = data.previewURL ? data.previewURL : data.url + \"/thumbnail.jpg\"\n\n // Homepage\n //data.homepage = !post.noHomepage;\n data.journal = data.journal || {};\n\n // Dates\n if (data.publishedDate){//} && data.journal) {\n data.volume = data.publishedDate.getFullYear() - 2015;\n data.issue = data.publishedDate.getMonth() + 1;\n }\n\n data.publishedDate = data.publishedDate ? data.publishedDate : new Date(\"Invalid\");\n data.updatedDate = data.updatedDate ? data.updatedDate : new Date(\"Invalid\");\n\n data.publishedDateRFC\n let RFC = timeFormat(\"%a, %d %b %Y %H:%M:%S %Z\");\n let months = [\"Jan\", \"Feb\", \"March\", \"April\", \"May\", \"June\", \"July\", \"Aug\", \"Sept\", \"Oct\", \"Nov\", \"Dec\"];\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n data.publishedDateRFC = RFC(data.publishedDate);\n data.publishedYear = data.publishedDate.getFullYear();\n data.publishedMonth = months[data.publishedDate.getMonth()];\n data.publishedDay = data.publishedDate.getDate();\n data.publishedMonthPadded = zeroPad(data.publishedDate.getMonth() + 1);\n data.publishedDayPadded = zeroPad(data.publishedDate.getDate());\n data.updatedDateRFC = RFC(data.updatedDate);\n\n if (data.authors.length > 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \", et al.\";\n } else if (data.authors.length === 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \" & \" + data.authors[1].lastName;\n } else if (data.authors.length === 1) {\n data.concatenatedAuthors = data.authors[0].lastName\n }\n\n data.bibtexAuthors = data.authors.map(function(author){\n return author.lastName + \", \" + author.firstName;\n }).join(\" and \");\n\n data.slug = data.authors.length ? data.authors[0].lastName.toLowerCase() + data.publishedYear + data.title.split(\" \")[0].toLowerCase() : \"Untitled\";\n\n}\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","import favicon from './distill-favicon.base64';\nimport escape from 'escape-html';\n\nexport default function(dom, data) {\n let head = dom.querySelector(\"head\");\n let appendHead = html => appendHtml(head, html);\n\n function meta(name, content, force) {\n if (content || force)\n appendHead(` \\n`);\n }\n\n appendHead(`\n \n \n \n \n ${data.title}\n `);\n\n appendHead(`\n \n \n \n `);\n data.authors.forEach((a) => {\n appendHtml(head, `\n `)\n });\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n // if this is a proprer article, generate Google Scholar meta data\n if (data.doiSuffix){\n appendHead(`\n \\n`);\n\n meta(\"citation_title\", data.title);\n //meta(\"citation_fulltext_html_url\", data.url);\n meta(\"citation_volume\", data.volume);\n meta(\"citation_issue\", data.issue);\n meta(\"citation_firstpage\", data.doiSuffix? `e${data.doiSuffix}` : undefined);\n meta(\"citation_doi\", data.doi);\n\n let journal = data.journal || {};\n meta(\"citation_journal_title\", journal.full_title || journal.title);\n meta(\"citation_journal_abbrev\", journal.abbrev_title);\n meta(\"citation_issn\", journal.issn);\n meta(\"citation_publisher\", journal.publisher);\n meta(\"citation_fulltext_world_readable\", \"\", true);\n\n if (data.publishedDate){\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n meta(\"citation_online_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n // Should we do something different here?\n meta(\"citation_publication_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n }\n\n (data.authors || []).forEach((a) => {\n meta(\"citation_author\", `${a.lastName}, ${a.firstName}`);\n meta(\"citation_author_institution\", a.affiliation);\n });\n\n if (data.citations) {\n data.citations.forEach(key => {\n let d = data.bibliography[key];\n if(!d) {\n console.warn(\"No bibliography data fround for \" + key)\n } else {\n meta(\"citation_reference\", citation_meta_content(data.bibliography[key]) )\n };\n });\n }\n }\n}\n\nfunction appendHtml(el, html) {\n el.innerHTML += html;\n}\n\nfunction citation_meta_content(ref){\n // Special test for arxiv\n var content = `citation_title=${ref.title};`;\n\n let name_strings = ref.author.split(\" and \").forEach(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1].trim();\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n content += `citation_author=${firsts} ${last};`;\n });\n\n if (\"year\" in ref) {\n content += `citation_publication_date=${ref.year};`;\n }\n\n var arxiv_id_search = /https?:\\/\\/arxiv\\.org\\/pdf\\/([0-9]*\\.[0-9]*)\\.pdf/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /https?:\\/\\/arxiv\\.org\\/abs\\/([0-9]*\\.[0-9]*)/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /arXiv preprint arXiv:([0-9]*\\.[0-9]*)/.exec(ref.journal);\n if (arxiv_id_search && arxiv_id_search[1]){\n content += `citation_arxiv_id=${arxiv_id_search[1]};`;\n return content;\n }\n if (\"journal\" in ref){\n content += `citation_journal_title=${ref.journal};`;\n }\n if (\"volume\" in ref) {\n content += `citation_volume=${ref.volume};`;\n }\n if (\"issue\" in ref || \"number\" in ref){\n content += `citation_number=${ref.issue || ref.number};`;\n }\n /*content += `citation_first_page=${};`;\n content += `citation_publication_date=${};`;*/\n return content;\n}\n","const html = `\n\n
    This article is a draft, awaiting review for publication in Distill
    \n`;\n\nexport default function(dom, data) {\n let banner = dom.createElement(\"dt-banner\");\n banner.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(banner, b.firstChild);\n banner.addEventListener(\"click\", function() {\n banner.style.display = \"none\";\n });\n}\n","/*!\n * mustache.js - Logic-less {{mustache}} templates with JavaScript\n * http://github.com/janl/mustache.js\n */\n\n/*global define: false Mustache: true*/\n\n(function defineMustache (global, factory) {\n if (typeof exports === 'object' && exports && typeof exports.nodeName !== 'string') {\n factory(exports); // CommonJS\n } else if (typeof define === 'function' && define.amd) {\n define(['exports'], factory); // AMD\n } else {\n global.Mustache = {};\n factory(global.Mustache); // script, wsh, asp\n }\n}(this, function mustacheFactory (mustache) {\n\n var objectToString = Object.prototype.toString;\n var isArray = Array.isArray || function isArrayPolyfill (object) {\n return objectToString.call(object) === '[object Array]';\n };\n\n function isFunction (object) {\n return typeof object === 'function';\n }\n\n /**\n * More correct typeof string handling array\n * which normally returns typeof 'object'\n */\n function typeStr (obj) {\n return isArray(obj) ? 'array' : typeof obj;\n }\n\n function escapeRegExp (string) {\n return string.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n }\n\n /**\n * Null safe way of checking whether or not an object,\n * including its prototype, has a given property\n */\n function hasProperty (obj, propName) {\n return obj != null && typeof obj === 'object' && (propName in obj);\n }\n\n // Workaround for https://issues.apache.org/jira/browse/COUCHDB-577\n // See https://github.com/janl/mustache.js/issues/189\n var regExpTest = RegExp.prototype.test;\n function testRegExp (re, string) {\n return regExpTest.call(re, string);\n }\n\n var nonSpaceRe = /\\S/;\n function isWhitespace (string) {\n return !testRegExp(nonSpaceRe, string);\n }\n\n var entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n function escapeHtml (string) {\n return String(string).replace(/[&<>\"'`=\\/]/g, function fromEntityMap (s) {\n return entityMap[s];\n });\n }\n\n var whiteRe = /\\s*/;\n var spaceRe = /\\s+/;\n var equalsRe = /\\s*=/;\n var curlyRe = /\\s*\\}/;\n var tagRe = /#|\\^|\\/|>|\\{|&|=|!/;\n\n /**\n * Breaks up the given `template` string into a tree of tokens. If the `tags`\n * argument is given here it must be an array with two string values: the\n * opening and closing tags used in the template (e.g. [ \"<%\", \"%>\" ]). Of\n * course, the default is to use mustaches (i.e. mustache.tags).\n *\n * A token is an array with at least 4 elements. The first element is the\n * mustache symbol that was used inside the tag, e.g. \"#\" or \"&\". If the tag\n * did not contain a symbol (i.e. {{myValue}}) this element is \"name\". For\n * all text that appears outside a symbol this element is \"text\".\n *\n * The second element of a token is its \"value\". For mustache tags this is\n * whatever else was inside the tag besides the opening symbol. For text tokens\n * this is the text itself.\n *\n * The third and fourth elements of the token are the start and end indices,\n * respectively, of the token in the original template.\n *\n * Tokens that are the root node of a subtree contain two more elements: 1) an\n * array of tokens in the subtree and 2) the index in the original template at\n * which the closing tag for that section begins.\n */\n function parseTemplate (template, tags) {\n if (!template)\n return [];\n\n var sections = []; // Stack to hold section tokens\n var tokens = []; // Buffer to hold the tokens\n var spaces = []; // Indices of whitespace tokens on the current line\n var hasTag = false; // Is there a {{tag}} on the current line?\n var nonSpace = false; // Is there a non-space char on the current line?\n\n // Strips all whitespace tokens array for the current line\n // if there was a {{#tag}} on it and otherwise only space.\n function stripSpace () {\n if (hasTag && !nonSpace) {\n while (spaces.length)\n delete tokens[spaces.pop()];\n } else {\n spaces = [];\n }\n\n hasTag = false;\n nonSpace = false;\n }\n\n var openingTagRe, closingTagRe, closingCurlyRe;\n function compileTags (tagsToCompile) {\n if (typeof tagsToCompile === 'string')\n tagsToCompile = tagsToCompile.split(spaceRe, 2);\n\n if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)\n throw new Error('Invalid tags: ' + tagsToCompile);\n\n openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\\\s*');\n closingTagRe = new RegExp('\\\\s*' + escapeRegExp(tagsToCompile[1]));\n closingCurlyRe = new RegExp('\\\\s*' + escapeRegExp('}' + tagsToCompile[1]));\n }\n\n compileTags(tags || mustache.tags);\n\n var scanner = new Scanner(template);\n\n var start, type, value, chr, token, openSection;\n while (!scanner.eos()) {\n start = scanner.pos;\n\n // Match any text between tags.\n value = scanner.scanUntil(openingTagRe);\n\n if (value) {\n for (var i = 0, valueLength = value.length; i < valueLength; ++i) {\n chr = value.charAt(i);\n\n if (isWhitespace(chr)) {\n spaces.push(tokens.length);\n } else {\n nonSpace = true;\n }\n\n tokens.push([ 'text', chr, start, start + 1 ]);\n start += 1;\n\n // Check for whitespace on the current line.\n if (chr === '\\n')\n stripSpace();\n }\n }\n\n // Match the opening tag.\n if (!scanner.scan(openingTagRe))\n break;\n\n hasTag = true;\n\n // Get the tag type.\n type = scanner.scan(tagRe) || 'name';\n scanner.scan(whiteRe);\n\n // Get the tag value.\n if (type === '=') {\n value = scanner.scanUntil(equalsRe);\n scanner.scan(equalsRe);\n scanner.scanUntil(closingTagRe);\n } else if (type === '{') {\n value = scanner.scanUntil(closingCurlyRe);\n scanner.scan(curlyRe);\n scanner.scanUntil(closingTagRe);\n type = '&';\n } else {\n value = scanner.scanUntil(closingTagRe);\n }\n\n // Match the closing tag.\n if (!scanner.scan(closingTagRe))\n throw new Error('Unclosed tag at ' + scanner.pos);\n\n token = [ type, value, start, scanner.pos ];\n tokens.push(token);\n\n if (type === '#' || type === '^') {\n sections.push(token);\n } else if (type === '/') {\n // Check section nesting.\n openSection = sections.pop();\n\n if (!openSection)\n throw new Error('Unopened section \"' + value + '\" at ' + start);\n\n if (openSection[1] !== value)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + start);\n } else if (type === 'name' || type === '{' || type === '&') {\n nonSpace = true;\n } else if (type === '=') {\n // Set the tags for the next time around.\n compileTags(value);\n }\n }\n\n // Make sure there are no open sections when we're done.\n openSection = sections.pop();\n\n if (openSection)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + scanner.pos);\n\n return nestTokens(squashTokens(tokens));\n }\n\n /**\n * Combines the values of consecutive text tokens in the given `tokens` array\n * to a single token.\n */\n function squashTokens (tokens) {\n var squashedTokens = [];\n\n var token, lastToken;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n if (token) {\n if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {\n lastToken[1] += token[1];\n lastToken[3] = token[3];\n } else {\n squashedTokens.push(token);\n lastToken = token;\n }\n }\n }\n\n return squashedTokens;\n }\n\n /**\n * Forms the given array of `tokens` into a nested tree structure where\n * tokens that represent a section have two additional items: 1) an array of\n * all tokens that appear in that section and 2) the index in the original\n * template that represents the end of that section.\n */\n function nestTokens (tokens) {\n var nestedTokens = [];\n var collector = nestedTokens;\n var sections = [];\n\n var token, section;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n switch (token[0]) {\n case '#':\n case '^':\n collector.push(token);\n sections.push(token);\n collector = token[4] = [];\n break;\n case '/':\n section = sections.pop();\n section[5] = token[2];\n collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;\n break;\n default:\n collector.push(token);\n }\n }\n\n return nestedTokens;\n }\n\n /**\n * A simple string scanner that is used by the template parser to find\n * tokens in template strings.\n */\n function Scanner (string) {\n this.string = string;\n this.tail = string;\n this.pos = 0;\n }\n\n /**\n * Returns `true` if the tail is empty (end of string).\n */\n Scanner.prototype.eos = function eos () {\n return this.tail === '';\n };\n\n /**\n * Tries to match the given regular expression at the current position.\n * Returns the matched text if it can match, the empty string otherwise.\n */\n Scanner.prototype.scan = function scan (re) {\n var match = this.tail.match(re);\n\n if (!match || match.index !== 0)\n return '';\n\n var string = match[0];\n\n this.tail = this.tail.substring(string.length);\n this.pos += string.length;\n\n return string;\n };\n\n /**\n * Skips all text until the given regular expression can be matched. Returns\n * the skipped string, which is the entire tail if no match can be made.\n */\n Scanner.prototype.scanUntil = function scanUntil (re) {\n var index = this.tail.search(re), match;\n\n switch (index) {\n case -1:\n match = this.tail;\n this.tail = '';\n break;\n case 0:\n match = '';\n break;\n default:\n match = this.tail.substring(0, index);\n this.tail = this.tail.substring(index);\n }\n\n this.pos += match.length;\n\n return match;\n };\n\n /**\n * Represents a rendering context by wrapping a view object and\n * maintaining a reference to the parent context.\n */\n function Context (view, parentContext) {\n this.view = view;\n this.cache = { '.': this.view };\n this.parent = parentContext;\n }\n\n /**\n * Creates a new context using the given view with this context\n * as the parent.\n */\n Context.prototype.push = function push (view) {\n return new Context(view, this);\n };\n\n /**\n * Returns the value of the given name in this context, traversing\n * up the context hierarchy if the value is absent in this context's view.\n */\n Context.prototype.lookup = function lookup (name) {\n var cache = this.cache;\n\n var value;\n if (cache.hasOwnProperty(name)) {\n value = cache[name];\n } else {\n var context = this, names, index, lookupHit = false;\n\n while (context) {\n if (name.indexOf('.') > 0) {\n value = context.view;\n names = name.split('.');\n index = 0;\n\n /**\n * Using the dot notion path in `name`, we descend through the\n * nested objects.\n *\n * To be certain that the lookup has been successful, we have to\n * check if the last object in the path actually has the property\n * we are looking for. We store the result in `lookupHit`.\n *\n * This is specially necessary for when the value has been set to\n * `undefined` and we want to avoid looking up parent contexts.\n **/\n while (value != null && index < names.length) {\n if (index === names.length - 1)\n lookupHit = hasProperty(value, names[index]);\n\n value = value[names[index++]];\n }\n } else {\n value = context.view[name];\n lookupHit = hasProperty(context.view, name);\n }\n\n if (lookupHit)\n break;\n\n context = context.parent;\n }\n\n cache[name] = value;\n }\n\n if (isFunction(value))\n value = value.call(this.view);\n\n return value;\n };\n\n /**\n * A Writer knows how to take a stream of tokens and render them to a\n * string, given a context. It also maintains a cache of templates to\n * avoid the need to parse the same template twice.\n */\n function Writer () {\n this.cache = {};\n }\n\n /**\n * Clears all cached templates in this writer.\n */\n Writer.prototype.clearCache = function clearCache () {\n this.cache = {};\n };\n\n /**\n * Parses and caches the given `template` and returns the array of tokens\n * that is generated from the parse.\n */\n Writer.prototype.parse = function parse (template, tags) {\n var cache = this.cache;\n var tokens = cache[template];\n\n if (tokens == null)\n tokens = cache[template] = parseTemplate(template, tags);\n\n return tokens;\n };\n\n /**\n * High-level method that is used to render the given `template` with\n * the given `view`.\n *\n * The optional `partials` argument may be an object that contains the\n * names and templates of partials that are used in the template. It may\n * also be a function that is used to load partial templates on the fly\n * that takes a single argument: the name of the partial.\n */\n Writer.prototype.render = function render (template, view, partials) {\n var tokens = this.parse(template);\n var context = (view instanceof Context) ? view : new Context(view);\n return this.renderTokens(tokens, context, partials, template);\n };\n\n /**\n * Low-level method that renders the given array of `tokens` using\n * the given `context` and `partials`.\n *\n * Note: The `originalTemplate` is only ever used to extract the portion\n * of the original template that was contained in a higher-order section.\n * If the template doesn't use higher-order sections, this argument may\n * be omitted.\n */\n Writer.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate) {\n var buffer = '';\n\n var token, symbol, value;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n value = undefined;\n token = tokens[i];\n symbol = token[0];\n\n if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate);\n else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate);\n else if (symbol === '>') value = this.renderPartial(token, context, partials, originalTemplate);\n else if (symbol === '&') value = this.unescapedValue(token, context);\n else if (symbol === 'name') value = this.escapedValue(token, context);\n else if (symbol === 'text') value = this.rawValue(token);\n\n if (value !== undefined)\n buffer += value;\n }\n\n return buffer;\n };\n\n Writer.prototype.renderSection = function renderSection (token, context, partials, originalTemplate) {\n var self = this;\n var buffer = '';\n var value = context.lookup(token[1]);\n\n // This function is used to render an arbitrary template\n // in the current context by higher-order sections.\n function subRender (template) {\n return self.render(template, context, partials);\n }\n\n if (!value) return;\n\n if (isArray(value)) {\n for (var j = 0, valueLength = value.length; j < valueLength; ++j) {\n buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate);\n }\n } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {\n buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate);\n } else if (isFunction(value)) {\n if (typeof originalTemplate !== 'string')\n throw new Error('Cannot use higher-order sections without the original template');\n\n // Extract the portion of the original template that the section contains.\n value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);\n\n if (value != null)\n buffer += value;\n } else {\n buffer += this.renderTokens(token[4], context, partials, originalTemplate);\n }\n return buffer;\n };\n\n Writer.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate) {\n var value = context.lookup(token[1]);\n\n // Use JavaScript's definition of falsy. Include empty arrays.\n // See https://github.com/janl/mustache.js/issues/186\n if (!value || (isArray(value) && value.length === 0))\n return this.renderTokens(token[4], context, partials, originalTemplate);\n };\n\n Writer.prototype.renderPartial = function renderPartial (token, context, partials) {\n if (!partials) return;\n\n var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\n if (value != null)\n return this.renderTokens(this.parse(value), context, partials, value);\n };\n\n Writer.prototype.unescapedValue = function unescapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return value;\n };\n\n Writer.prototype.escapedValue = function escapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return mustache.escape(value);\n };\n\n Writer.prototype.rawValue = function rawValue (token) {\n return token[1];\n };\n\n mustache.name = 'mustache.js';\n mustache.version = '2.3.0';\n mustache.tags = [ '{{', '}}' ];\n\n // All high-level mustache.* functions use this writer.\n var defaultWriter = new Writer();\n\n /**\n * Clears all cached templates in the default writer.\n */\n mustache.clearCache = function clearCache () {\n return defaultWriter.clearCache();\n };\n\n /**\n * Parses and caches the given template in the default writer and returns the\n * array of tokens it contains. Doing this ahead of time avoids the need to\n * parse templates on the fly as they are rendered.\n */\n mustache.parse = function parse (template, tags) {\n return defaultWriter.parse(template, tags);\n };\n\n /**\n * Renders the `template` with the given `view` and `partials` using the\n * default writer.\n */\n mustache.render = function render (template, view, partials) {\n if (typeof template !== 'string') {\n throw new TypeError('Invalid template! Template should be a \"string\" ' +\n 'but \"' + typeStr(template) + '\" was given as the first ' +\n 'argument for mustache#render(template, view, partials)');\n }\n\n return defaultWriter.render(template, view, partials);\n };\n\n // This is here for backwards compatibility with 0.4.x.,\n /*eslint-disable */ // eslint wants camel cased function name\n mustache.to_html = function to_html (template, view, partials, send) {\n /*eslint-enable*/\n\n var result = mustache.render(template, view, partials);\n\n if (isFunction(send)) {\n send(result);\n } else {\n return result;\n }\n };\n\n // Export the escaping function so that the user may override it.\n // See https://github.com/janl/mustache.js/issues/244\n mustache.escape = escapeHtml;\n\n // Export these mainly for testing, but also for advanced usage.\n mustache.Scanner = Scanner;\n mustache.Context = Context;\n mustache.Writer = Writer;\n\n return mustache;\n}));\n","import mustache from \"mustache\";\n\nconst html = `\n\n\n`;\n\nconst template = `\n
    \n
    \n {{#authors}}\n
    \n {{#personalURL}}\n {{name}}\n {{/personalURL}}\n {{^personalURL}}\n
    {{name}}
    \n {{/personalURL}}\n {{#affiliation}}\n {{#affiliationURL}}\n {{affiliation}}\n {{/affiliationURL}}\n {{^affiliationURL}}\n
    {{affiliation}}
    \n {{/affiliationURL}}\n {{/affiliation}}\n
    \n {{/authors}}\n
    \n
    \n
    {{publishedMonth}}. {{publishedDay}}
    \n
    {{publishedYear}}
    \n
    \n \n
    Citation:
    \n
    {{concatenatedAuthors}}, {{publishedYear}}
    \n
    \n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-byline');\n if (el) {\n el.innerHTML = html + mustache.render(template, data);\n }\n}\n","const html = `\n\n\n
    \n

    References

    \n \n

    Errors, Reuse, and Citation

    \n

    If you see mistakes or want to suggest changes, please create an issue on GitHub.

    \n

    Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on GitHub. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: “Figure from …”.

    \n

    For attribution in academic contexts, please cite this work as

    \n
    \n  

    BibTeX citation

    \n
    \n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-appendix')\n if (el) {\n let oldHtml = el.innerHTML;\n el.innerHTML = html;\n let div = el.querySelector(\"div.l-body\")\n\n if (dom.querySelector(\"dt-fn\")) {\n div.innerHTML = `

    Footnotes

    ` + div.innerHTML;\n }\n\n div.innerHTML = oldHtml + div.innerHTML;\n if (data.githubCompareUpdatesUrl) {\n div.innerHTML = `

    Updates

    View all changes to this article since it was first published.

    ` + div.innerHTML;\n }\n\n el.querySelector(\"a.github\").setAttribute(\"href\", data.githubUrl);\n el.querySelector(\"a.github-issue\").setAttribute(\"href\", data.githubUrl + \"/issues/new\");\n el.querySelector(\".citation.short\").textContent = data.concatenatedAuthors + \", \" + '\"' + data.title + '\", Distill, ' + data.publishedYear + \".\";\n var bibtex = \"@article{\" + data.slug + \",\\n\";\n bibtex += \" author = {\" + data.bibtexAuthors + \"},\\n\";\n bibtex += \" title = {\" + data.title + \"},\\n\";\n bibtex += \" journal = {Distill},\\n\";\n bibtex += \" year = {\" + data.publishedYear + \"},\\n\";\n bibtex += \" note = {\" + data.url + \"}\\n\";\n bibtex += \"}\";\n el.querySelector(\".citation.long\").textContent = bibtex;\n }\n\n}\n","export default function(dom, data) {\n let css = `\n dt-cite {\n color: hsla(206, 90%, 20%, 0.7);\n }\n dt-cite .citation-number {\n cursor: default;\n white-space: nowrap;\n font-family: -apple-system, BlinkMacSystemFont, \"Roboto\", Helvetica, sans-serif;\n font-size: 75%;\n color: hsla(206, 90%, 20%, 0.7);\n display: inline-block;\n line-height: 1.1em;\n text-align: center;\n position: relative;\n top: -2px;\n margin: 0 2px;\n }\n figcaption dt-cite .citation-number {\n font-size: 11px;\n font-weight: normal;\n top: -2px;\n line-height: 1em;\n }\n `;\n\n let style = dom.createElement(\"style\");\n style.textContent = css;\n dom.querySelector(\"body\").appendChild(style);\n\n let citations = data.citations;\n /*if (data.citations) {\n citations = Object.keys(data.citations).map(c => data.citations[c]);\n citations.sort((a, b) => {\n return a.author.localeCompare(b.author);\n });\n }*/\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach((el,n) => {\n var key = el.getAttribute(\"key\");\n if (key) {\n var keys = key.split(\",\");\n var cite_string = inline_cite_short(keys);\n var cite_hover_str = \"\";\n keys.map((key,n) => {\n if (n>0) cite_hover_str += \"

    \";\n cite_hover_str += hover_cite(data.bibliography[key]);\n });\n cite_hover_str = cite_hover_str.replace(/\"/g, \"'\")\n var orig_string = el.innerHTML;\n if (orig_string != \"\") orig_string += \" \";\n el.innerHTML = `${orig_string}${cite_string}`;\n }\n });\n\n let bibEl = dom.querySelector(\"dt-bibliography\");\n if (bibEl) {\n let ol = dom.createElement(\"ol\");\n citations.forEach(key => {\n let el = dom.createElement(\"li\");\n el.innerHTML = bibliography_cite(data.bibliography[key]);\n ol.appendChild(el);\n })\n bibEl.appendChild(ol);\n }\n\n function inline_cite_short(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var n = data.citations.indexOf(key)+1;\n return \"\"+n;\n } else {\n return \"?\";\n }\n }\n return \"[\"+keys.map(cite_string).join(\", \")+\"]\";\n }\n\n function inline_cite_long(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var ent = data.bibliography[key];\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var year = ent.year;\n if (names.length == 1) return names[0] + \", \" + year;\n if (names.length == 2) return names[0] + \" & \" + names[1] + \", \" + year;\n if (names.length > 2) return names[0] + \", et al., \" + year;\n } else {\n return \"?\";\n }\n }\n return keys.map(cite_string).join(\", \");\n }\n\n function author_string(ent, template, sep, finalSep){\n var names = ent.author.split(\" and \");\n let name_strings = names.map(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1];\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n var initials = \"\";\n if (firsts != undefined) {\n initials = firsts.trim().split(\" \").map(s => s.trim()[0]);\n initials = initials.join(\".\")+\".\";\n }\n return template.replace(\"${F}\", firsts)\n .replace(\"${L}\", last)\n .replace(\"${I}\", initials);\n });\n if (names.length > 1) {\n var str = name_strings.slice(0, names.length-1).join(sep);\n str += (finalSep || sep) + name_strings[names.length-1];\n return str;\n } else {\n return name_strings[0];\n }\n }\n\n function venue_string(ent) {\n var cite = (ent.journal || ent.booktitle || \"\")\n if (\"volume\" in ent){\n var issue = ent.issue || ent.number;\n issue = (issue != undefined)? \"(\"+issue+\")\" : \"\";\n cite += \", Vol \" + ent.volume + issue;\n }\n if (\"pages\" in ent){\n cite += \", pp. \" + ent.pages\n }\n if (cite != \"\") cite += \". \"\n if (\"publisher\" in ent){\n cite += ent.publisher;\n if (cite[cite.length-1] != \".\") cite += \".\";\n }\n return cite;\n }\n\n function link_string(ent){\n if (\"url\" in ent){\n var url = ent.url;\n var arxiv_match = (/arxiv\\.org\\/abs\\/([0-9\\.]*)/).exec(url);\n if (arxiv_match != null){\n url = `http://arxiv.org/pdf/${arxiv_match[1]}.pdf`;\n }\n\n if (url.slice(-4) == \".pdf\"){\n var label = \"PDF\";\n } else if (url.slice(-5) == \".html\") {\n var label = \"HTML\";\n }\n return `  [${label||\"link\"}]`;\n }/* else if (\"doi\" in ent){\n return `  [DOI]`;\n }*/ else {\n return \"\";\n }\n }\n function doi_string(ent, new_line){\n if (\"doi\" in ent) {\n return `${new_line?\"
    \":\"\"} DOI: ${ent.doi}`;\n } else {\n return \"\";\n }\n }\n\n function bibliography_cite(ent, fancy){\n if (ent){\n var cite = \"\" + ent.title + \" \"\n cite += link_string(ent) + \"
    \";\n cite += author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += venue_string(ent);\n cite += doi_string(ent);\n return cite\n /*var cite = author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += \"\" + ent.title + \". \";\n cite += venue_string(ent);\n cite += doi_string(ent);\n cite += link_string(ent);\n return cite*/\n } else {\n return \"?\";\n }\n }\n\n function hover_cite(ent){\n if (ent){\n var cite = \"\";\n cite += \"\" + ent.title + \"\";\n cite += link_string(ent);\n cite += \"
    \"\n\n var a_str = author_string(ent, \"${I} ${L}\", \", \") + \".\";\n var v_str = venue_string(ent).trim() + \" \" + ent.year + \". \" + doi_string(ent, true);\n\n if ((a_str+v_str).length < Math.min(40, ent.title.length)) {\n cite += a_str + \" \" + v_str;\n } else {\n cite += a_str + \"
    \" + v_str;\n }\n return cite;\n } else {\n return \"?\";\n }\n }\n\n\n //https://scholar.google.com/scholar?q=allintitle%3ADocument+author%3Aolah\n function get_GS_URL(ent){\n if (ent){\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var title = ent.title.split(\" \")//.replace(/[,:]/, \"\")\n var url = \"http://search.labs.crossref.org/dois?\"//\"\"https://scholar.google.com/scholar?\"\n url += uris({q: names.join(\" \") + \" \" + title.join(\" \")})\n }\n\n }\n}\n","export default function(dom, data) {\n\n var fnTags = [].slice.apply(dom.querySelectorAll(\"dt-fn\"));\n var fnContent = [];\n fnTags.forEach((el,n) => {\n var content = el.innerHTML;\n fnContent.push(content);\n n = (n+1)+\"\";\n var key = \"fn-\"+n;\n var escaped_content = content.replace(/\"/g, \"'\");\n el.innerHTML = `${n}`;\n });\n\n let fnList = dom.querySelector(\"dt-fn-list\");\n if (fnList) {\n let ol = dom.createElement(\"ol\");\n fnContent.forEach(content => {\n let el = dom.createElement(\"li\");\n el.innerHTML = content;\n ol.appendChild(el);\n })\n fnList.appendChild(ol);\n }\n\n}\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n */\n\n;(function() {\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^( *[-*_]){3,} *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,\n nptable: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n blockquote: /^( *>[^\\n]+(\\n(?!def)[^\\n]+)*\\n*)+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n table: noop,\n paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,\n text: /^[^\\n]+/\n};\n\nblock.bullet = /(?:[*+-]|\\d+\\.)/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = replace(block.item, 'gm')\n (/bull/g, block.bullet)\n ();\n\nblock.list = replace(block.list)\n (/bull/g, block.bullet)\n ('hr', '\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))')\n ('def', '\\\\n+(?=' + block.def.source + ')')\n ();\n\nblock.blockquote = replace(block.blockquote)\n ('def', block.def)\n ();\n\nblock._tag = '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'\n + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'\n + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|[^\\\\w\\\\s@]*@)\\\\b';\n\nblock.html = replace(block.html)\n ('comment', //)\n ('closed', /<(tag)[\\s\\S]+?<\\/\\1>/)\n ('closing', /])*?>/)\n (/tag/g, block._tag)\n ();\n\nblock.paragraph = replace(block.paragraph)\n ('hr', block.hr)\n ('heading', block.heading)\n ('lheading', block.lheading)\n ('blockquote', block.blockquote)\n ('tag', '<' + block._tag)\n ('def', block.def)\n ();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]*?)\\s*\\1 *(?:\\n+|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = replace(block.paragraph)\n ('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n ();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top, bq) {\n var src = src.replace(/^ +$/gm, '')\n , next\n , loose\n , cap\n , bull\n , b\n , item\n , space\n , i\n , l;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic\n ? cap.replace(/\\n+$/, '')\n : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top, true);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n\n this.tokens.push({\n type: 'list_start',\n ordered: bull.length > 1\n });\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n this.tokens.push({\n type: loose\n ? 'loose_item_start'\n : 'list_item_start'\n });\n\n // Recurse.\n this.token(item, false, bq);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if ((!bq && top) && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.links[cap[1].toLowerCase()] = {\n href: cap[2],\n title: cap[3]\n };\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i]\n .replace(/^ *\\| *| *\\| *$/g, '')\n .split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n autolink: /^<([^ >]+(@|:\\/)[^ >]+)>/,\n url: noop,\n tag: /^|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^\\b_((?:[^_]|__)+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n code: /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n text: /^[\\s\\S]+?(?=[\\\\?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\ninline.link = replace(inline.link)\n ('inside', inline._inside)\n ('href', inline._href)\n ();\n\ninline.reflink = replace(inline.reflink)\n ('inside', inline._inside)\n ();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: replace(inline.escape)('])', '~|])')(),\n url: /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n text: replace(inline.text)\n (']|', '~]|')\n ('|', '|https?://|')\n ()\n});\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: replace(inline.br)('{2,}', '*')(),\n text: replace(inline.gfm.text)('{2,}', '*')()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer;\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new\n Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n var out = ''\n , link\n , text\n , href\n , cap;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += cap[1];\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = cap[1].charAt(6) === ':'\n ? this.mangle(cap[1].substring(7))\n : this.mangle(cap[1]);\n href = this.mangle('mailto:') + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n src = src.substring(cap[0].length);\n text = escape(cap[1]);\n href = text;\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^/i.test(cap[0])) {\n this.inLink = false;\n }\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0]\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out += this.outputLink(cap, {\n href: cap[2],\n title: cap[3]\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2], true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = escape(link.href)\n , title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = ''\n , l = text.length\n , i = 0\n , ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || {};\n}\n\nRenderer.prototype.code = function(code, lang, escaped) {\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '\\n
    ';\n }\n\n return '
    '\n    + (escaped ? code : escape(code, true))\n    + '\\n
    \\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '
    \\n' + quote + '
    \\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw) {\n return ''\n + text\n + '\\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n};\n\nRenderer.prototype.list = function(body, ordered) {\n var type = ordered ? 'ol' : 'ul';\n return '<' + type + '>\\n' + body + '\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '
  • ' + text + '
  • \\n';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '

    ' + text + '

    \\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + '\\n'\n + body\n + '\\n'\n + '
    \\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '\\n' + content + '\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' style=\"text-align:' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.em = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? '
    ' : '
    ';\n};\n\nRenderer.prototype.del = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n if (this.options.sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return '';\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0) {\n return '';\n }\n }\n var out = '
    ';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n var out = '\"'' : '>';\n return out;\n};\n\nRenderer.prototype.text = function(text) {\n return text;\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer;\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options, renderer) {\n var parser = new Parser(options, renderer);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options, this.renderer);\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n this.token.text);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = ''\n , body = ''\n , i\n , row\n , cell\n , flags\n , j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n flags = { header: true, align: this.token.align[i] };\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n var body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n var body = ''\n , ordered = this.token.ordered;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered);\n }\n case 'list_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'loose_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'html': {\n var html = !this.token.pre && !this.options.pedantic\n ? this.inline.output(this.token.text)\n : this.token.text;\n return this.renderer.html(html);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n }\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n return html\n .replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\nfunction unescape(html) {\n\t// explicitly match decimal, hex, and named HTML entities \n return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/g, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction replace(regex, opt) {\n regex = regex.source;\n opt = opt || '';\n return function self(name, val) {\n if (!name) return new RegExp(regex, opt);\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return self;\n };\n}\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1\n , target\n , key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n\n var highlight = opt.highlight\n , tokens\n , pending\n , i = 0;\n\n try {\n tokens = Lexer.lex(src, opt)\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/chjj/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occured:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n sanitizer: null,\n mangle: true,\n smartLists: false,\n silent: false,\n highlight: null,\n langPrefix: 'lang-',\n smartypants: false,\n headerPrefix: '',\n renderer: new Renderer,\n xhtml: false\n};\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.parse = marked;\n\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n this.marked = marked;\n}\n\n}).call(function() {\n return this || (typeof window !== 'undefined' ? window : global);\n}());\n","import marked from 'marked';\n\nmarked.setOptions({\n gfm: true,\n smartypants: true\n});\n\nexport default function(dom, data) {\n let markdownElements = [].slice.call(dom.querySelectorAll('[markdown]'));\n markdownElements.forEach(el => {\n let content = el.innerHTML;\n // Set default indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n\n el.innerHTML = marked(content);\n });\n}\n","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = _self.Prism = {\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/ text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\tbreak tokenloop;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t delNum = 1;\n\n\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t to = match.index + match[0].length,\n\t\t\t\t\t\t k = i,\n\t\t\t\t\t\t p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && p < to; ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t match = match[0].slice(lookbehindLength),\n\t\t\t\t\t to = from + match.length,\n\t\t\t\t\t before = str.slice(0, from),\n\t\t\t\t\t after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (env.type == 'comment') {\n\t\tenv.attributes['spellcheck'] = 'true';\n\t}\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n \t// In worker\n\t_self.addEventListener('message', function(evt) {\n\t\tvar message = JSON.parse(evt.data),\n\t\t lang = message.language,\n\t\t code = message.code,\n\t\t immediateClose = message.immediateClose;\n\n\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\tif (immediateClose) {\n\t\t\t_self.close();\n\t\t}\n\t}, false);\n\n\treturn _self.Prism;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (document.addEventListener && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': //,\n\t'prolog': /<\\?[\\w\\W]+?\\?>/,\n\t'doctype': //i,\n\t'cdata': //i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\w\\W])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:('|\")[\\w\\W]*?(\\1)|[^\\s>]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /[=>\"']/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\w\\W]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^\\{\\}\\s][^\\{\\};]*?(?=\\s*\\{)/,\n\t'string': {\n\t\tpattern: /(\"|')(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'property': /(\\b|\\B)[\\w-]+(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|').*?\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\w\\W]*?\\*\\//,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[a-z0-9_\\.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /(\\.|\\\\)/\n\t\t}\n\t},\n\t'keyword': /\\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(0x[\\dA-Fa-f]+|0b[01]+|0o[0-7]+|\\d*\\.?\\d+([Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*(?=\\()/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*\\*?|\\/|~|\\^|%|\\.{3}/\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[.+?]|\\\\.|[^/\\\\\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\\\\\|\\\\?[^\\\\])*?`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript'\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tif(Array.prototype.forEach) { // Check to prevent error in IE8\n\t\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\t\tvar language, parent = pre;\n\t\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\t\tparent = parent.parentNode;\n\t\t\t\t}\n\n\t\t\t\tif (parent) {\n\t\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t\t}\n\n\t\t\t\tif (!language) {\n\t\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t\t}\n\n\t\t\t\tvar code = document.createElement('code');\n\t\t\t\tcode.className = 'language-' + language;\n\n\t\t\t\tpre.textContent = '';\n\n\t\t\t\tcode.textContent = 'Loading…';\n\n\t\t\t\tpre.appendChild(code);\n\n\t\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\t\txhr.open('GET', src, true);\n\n\t\t\t\txhr.onreadystatechange = function () {\n\t\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\txhr.send(null);\n\t\t\t});\n\t\t}\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\n})();\n","import Prism from \"prismjs\";\n\nexport default function(dom, data) {\n let codeElements = [].slice.call(dom.querySelectorAll(\"dt-code\"));\n codeElements.forEach(el => {\n let content = el.textContent;\n el.innerHTML = \"\";\n let language = el.getAttribute(\"language\");\n let c = dom.createElement(\"code\");\n if (el.getAttribute(\"block\") === \"\") {\n // Let's normalize the tab indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n let p = dom.createElement(\"pre\");\n p.appendChild(c);\n el.appendChild(p);\n } else {\n el.appendChild(c);\n }\n let highlighted = content;\n if (Prism.languages[language]) {\n c.setAttribute(\"class\", \"language-\" + language);\n highlighted = Prism.highlight(content, Prism.languages[language]);\n }\n c.innerHTML = highlighted;\n });\n}\n","export default function(dom, data) {\n\n var textNodes = dom.createTreeWalker(\n dom.body,\n dom.defaultView.NodeFilter.SHOW_TEXT\n );\n while (textNodes.nextNode()) {\n var n = textNodes.currentNode,\n text = n.nodeValue;\n if (text && acceptNode(n)) {\n text = quotes(text);\n text = punctuation(text);\n n.nodeValue = text;\n }\n }\n}\n\nfunction acceptNode(node) {\n var parent = node.parentElement;\n var isMath = (parent && parent.getAttribute && parent.getAttribute(\"class\")) ? parent.getAttribute(\"class\").includes(\"katex\") || parent.getAttribute(\"class\").includes(\"MathJax\") : false;\n return parent &&\n parent.nodeName !== \"SCRIPT\" &&\n parent.nodeName !== \"STYLE\" &&\n parent.nodeName !== \"CODE\" &&\n parent.nodeName !== \"PRE\" &&\n parent.nodeName !== \"SPAN\" &&\n parent.nodeName !== \"DT-HEADER\" &&\n parent.nodeName !== \"DT-BYLINE\" &&\n parent.nodeName !== \"DT-MATH\" &&\n parent.nodeName !== \"DT-CODE\" &&\n parent.nodeName !== \"DT-BIBLIOGRAPHY\" &&\n parent.nodeName !== \"DT-FOOTER\" &&\n parent.nodeType !== 8 && //comment nodes\n !isMath;\n}\n\n\n/*!\n * typeset - Typesetting for the web\n * @version v0.1.6\n * @link https://github.com/davidmerfield/Typeset.js\n * @author David Merfield\n */\n // which has a CC0 license\n // http://creativecommons.org/publicdomain/zero/1.0/\n\n\nfunction punctuation(text){\n\n // Dashes\n text = text.replace(/--/g, '\\u2014');\n text = text.replace(/ \\u2014 /g,\"\\u2009\\u2014\\u2009\"); //this has thin spaces\n\n // Elipses\n text = text.replace(/\\.\\.\\./g,'…');\n\n // Nbsp for punc with spaces\n var NBSP = \"\\u00a0\";\n var NBSP_PUNCTUATION_START = /([«¿¡]) /g;\n var NBSP_PUNCTUATION_END = / ([\\!\\?:;\\.,‽»])/g;\n\n text = text.replace(NBSP_PUNCTUATION_START, '$1' + NBSP);\n text = text.replace(NBSP_PUNCTUATION_END, NBSP + '$1');\n\n return text;\n}\n\nfunction quotes(text) {\n\n text = text\n .replace(/(\\W|^)\"([^\\s\\!\\?:;\\.,‽»])/g, '$1\\u201c$2') // beginning \"\n .replace(/(\\u201c[^\"]*)\"([^\"]*$|[^\\u201c\"]*\\u201c)/g, '$1\\u201d$2') // ending \"\n .replace(/([^0-9])\"/g,'$1\\u201d') // remaining \" at end of word\n .replace(/(\\W|^)'(\\S)/g, '$1\\u2018$2') // beginning '\n .replace(/([a-z])'([a-z])/ig, '$1\\u2019$2') // conjunction's possession\n .replace(/((\\u2018[^']*)|[a-z])'([^0-9]|$)/ig, '$1\\u2019$3') // ending '\n .replace(/(\\u2018)([0-9]{2}[^\\u2019]*)(\\u2018([^0-9]|$)|$|\\u2019[a-z])/ig, '\\u2019$2$3') // abbrev. years like '93\n .replace(/(\\B|^)\\u2018(?=([^\\u2019]*\\u2019\\b)*([^\\u2019\\u2018]*\\W[\\u2019\\u2018]\\b|[^\\u2019\\u2018]*$))/ig, '$1\\u2019') // backwards apostrophe\n .replace(/'''/g, '\\u2034') // triple prime\n .replace(/(\"|'')/g, '\\u2033') // double prime\n .replace(/'/g, '\\u2032');\n\n // Allow escaped quotes\n text = text.replace(/\\\\“/, '\\\"');\n text = text.replace(/\\\\”/, '\\\"');\n text = text.replace(/\\\\’/, '\\'');\n text = text.replace(/\\\\‘/, '\\'');\n\n return text;\n}\n\nfunction ligatures(text){\n\n text = text.replace(/fi/g, 'fi');\n text = text.replace(/fl/g, 'fl');\n\n return text;\n};\n","import code from './hover-box.txt';\n\nexport default function(dom) {\n let s = dom.createElement(\"script\");\n s.textContent = code;\n dom.querySelector(\"body\").appendChild(s);\n}\n","//import xml from \"xml\";\n\nexport default function(data) {\n\n\n var date = data.publishedDate;\n\n var batch_timestamp = Math.floor(Date.now() / 1000);\n var batch_id = data.authors.length ? data.authors[0].lastName.toLowerCase().slice(0,20) : \"Anonymous\";\n batch_id += \"_\" + date.getFullYear();\n batch_id += \"_\" + data.title.split(\" \")[0].toLowerCase().slice(0,20) + \"_\" + batch_timestamp;\n // generate XML\n var crf_data =\n {doi_batch : [\n\n { _attr: {\n version: \"4.3.7\",\n xmlns: \"http://www.crossref.org/schema/4.3.7\",\n \"xmlns:xsi\": \"http://www.w3.org/2001/XMLSchema-instance\",\n \"xsi:schemaLocation\": \"http://www.crossref.org/schema/4.3.7 http://www.crossref.org/schemas/crossref4.3.7.xsd\",\n }},\n\n { head: [\n {doi_batch_id: batch_id},\n {timestamp: batch_timestamp},\n {depositor: [\n {depositor_name: data.journal.publisherName},\n {email_address: data.journal.publisherEmail},\n ]},\n {registrant: data.journal.publisherName},\n ]},\n\n {body: [\n {journal: [\n\n {journal_metadata: [\n {full_title: data.journal.full_title || data.journal.title},\n {abbrev_title: data.journal.abbrev_title || data.journal.title || data.journal.full_title},\n {issn: data.journal.issn},\n {doi_data: [\n {doi: data.journal.doi},\n {resource: data.journal.url},\n ]},\n ]},\n\n {journal_issue: [\n {publication_date: [\n {month: date.getMonth()+1},\n {year: date.getFullYear()},\n ]},\n {journal_volume: [\n {volume: data.volume},\n ]},\n {issue: data.issue},\n ]},\n\n {journal_article: [\n {titles: [\n {title: data.title},\n ]},\n { contributors:\n data.authors.map((author, ind) => (\n {person_name: [\n { _attr: {\n contributor_role: \"author\",\n sequence: (ind == 0)? \"first\" : \"additional\"\n }},\n {given_name: author.firstName},\n {surname: author.lastName},\n {affiliation: author.affiliation}\n // TODO: ORCID?\n ]}\n ))\n },\n {publication_date: [\n {month: date.getMonth()+1},\n {day: date.getDate()},\n {year: date.getFullYear()}\n ]},\n { publisher_item: [\n {item_number: data.doi}\n ]},\n {doi_data: [\n {doi: data.doi},\n //{timestamp: \"\"},\n {resource: data.url},\n ]},\n {citation_list:\n data.citations.map(key =>\n citation_xml(key, data.bibliography[key]))\n }\n\n ]},\n\n ]},\n ]},\n ]};\n\n return xml(crf_data);\n}\n\nfunction citation_xml(key, ent){\n if (ent == undefined) return {};\n var info = [];\n info.push({_attr: {key: key}});\n if (\"title\" in ent)\n info.push({article_title: ent.title});\n if (\"author\" in ent)\n info.push({author: ent.author.split(\" and \")[0].split(\",\")[0].trim()});\n if (\"journal\" in ent)\n info.push({journal_title: ent.journal});\n if (\"booktitle\" in ent)\n info.push({volume_title: ent.booktitle});\n if (\"volume\" in ent)\n info.push({volume: ent.volume});\n if (\"issue\" in ent)\n info.push({issue: ent.issue});\n if (\"doi\" in ent)\n info.push({doi: ent.doi});\n return {citation: info}\n}\n\nfunction xml(obj) {\n //console.log(typeof(obj), obj)\n if (typeof obj === 'string') return obj;\n if (typeof obj === 'number') return \"\"+obj;\n let keys = Object.keys(obj);\n if (keys.length != 1) console.error(\"can't interpret \", obj, \"as xml\");\n let name = keys[0];\n var full_content = obj[name];\n var attr = {};\n if (Array.isArray(full_content)){\n var content = [];\n for (var i in full_content) {\n var obj = full_content[i];\n var obj_name = Object.keys(obj)[0];\n if (\"_attr\" == obj_name) {\n attr = obj[\"_attr\"];\n } else {\n //console.log(Object.keys(obj)[0])\n content.push(obj);\n }\n }\n } else {\n content = full_content;\n }\n if (content == undefined){\n content = \"undefined\"\n }\n\n let attr_string = \"\";\n for (var k in attr) {\n attr_string += ` ${k}=\\\"${attr[k]}\\\"`\n }\n\n //console.log(typeof content, Array.isArray(content), content instanceof String, content)\n if (Array.isArray(content)){\n content = content.map(xml);\n content = content.join(\"\\n\").split(\"\\n\");\n content = content.map(s => \" \" + s).join(\"\\n\")\n var result = `<${name}${attr_string}>\\n${content}\\n`;\n } else {\n content = xml(content);\n var result = `<${name}${attr_string}>${content}`;\n }\n return result;\n}\n","import logo from \"./distill-logo.svg\";\n\nconst html = `\n\n\n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-header\");\n if(el) {\n el.innerHTML = html;\n } else {\n let header = dom.createElement(\"dt-header\");\n header.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(header, b.firstChild);\n }\n}\n","import logo from \"./distill-logo.svg\";\n\nlet html = `\n\n\n
    \n
    \n \n ${logo}\n Distill\n \n is dedicated to clear explanations of machine learning\n
    \n
    \n About\n Submit\n Prize\n RSS\n Twitter\n
    \n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-footer\");\n if(el) {\n el.innerHTML = html;\n } else {\n let footer = dom.createElement(\"dt-footer\");\n footer.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.appendChild(footer);\n }\n}\n","import html from \"./components/html\";\nimport styles from \"./components/styles\";\nimport frontMatter from \"./components/front-matter\";\nimport bibliography from \"./components/bibliography\";\nimport expandData from \"./components/expand-data\";\nimport meta from \"./components/meta\";\nimport banner from \"./components/banner\";\nimport byline from \"./components/byline\";\nimport appendix from \"./components/appendix\";\nimport citation from \"./components/citation\";\nimport footnote from \"./components/footnote\";\nimport markdown from \"./components/markdown\";\nimport code from \"./components/code\";\nimport typeset from \"./components/typeset\";\nimport hoverBox from \"./components/hover-box-include\";\nimport generateCrossref from \"./components/generate-crossref\";\nimport header from \"./components/header\";\nimport footer from \"./components/footer\";\n\nfunction renderImmediately(dom) {\n html(dom);\n styles(dom);\n}\n\nfunction renderOnLoad(dom, data) {\n frontMatter(dom, data);\n bibliography(dom, data);\n expandData(dom, data);\n meta(dom, data);\n byline(dom, data);\n appendix(dom, data);\n markdown(dom, data);\n code(dom, data);\n citation(dom, data);\n footnote(dom, data);\n typeset(dom, data);\n hoverBox(dom, data);\n}\n\n// If we are in a browser, render automatically...\nif(window && window.document) {\n let data = {};\n renderImmediately(window.document);\n window.document.addEventListener(\"DOMContentLoaded\", (event) => {\n renderOnLoad(window.document, data);\n // Add a banner if we're not on localhost.\n if (window.location.hostname !== \"localhost\" && window.location.origin !== \"file://\") {\n banner(window.document, data);\n }\n generateCrossref(data);\n });\n}\n\n// If we are in node...\nfunction render(dom, data) {\n renderImmediately(dom);\n renderOnLoad(dom, data);\n // Remove script tag so it doesn't run again in the client\n let s = dom.querySelector('script[src*=\"distill.pub/template\"]');\n if (s) { s.parentElement.removeChild(s); };\n}\n\n// Distill specific rendering\nfunction distillify(dom, data) {\n header(dom, data);\n footer(dom, data);\n}\n\nexport {render as render};\nexport {distillify as distillify};\nexport {generateCrossref as generateCrossref};\n"],"names":["let","meta","YAMLException","common","require$$0","Mark","this","Type","require$$1","require$$2","type","arguments","Schema","require$$3","require$$4","require$$5","require","_hasOwnProperty","_toString","require$$6","require$$7","_require","DEFAULT_SAFE_SCHEMA","DEFAULT_FULL_SCHEMA","loadAll","load","safeLoadAll","safeLoad","State","dump","safeDump","require$$8","require$$9","ymlParse","interval","day","timeDay","timeYear","timeSunday","timeMonday","locale","escape","const","html","define","global","Prism","code","render"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":null,"sources":["../components/html.js","../components/styles.js","../node_modules/js-yaml/lib/js-yaml/common.js","../node_modules/js-yaml/lib/js-yaml/exception.js","../node_modules/js-yaml/lib/js-yaml/mark.js","../node_modules/js-yaml/lib/js-yaml/type.js","../node_modules/js-yaml/lib/js-yaml/schema.js","../node_modules/js-yaml/lib/js-yaml/type/str.js","../node_modules/js-yaml/lib/js-yaml/type/seq.js","../node_modules/js-yaml/lib/js-yaml/type/map.js","../node_modules/js-yaml/lib/js-yaml/schema/failsafe.js","../node_modules/js-yaml/lib/js-yaml/type/null.js","../node_modules/js-yaml/lib/js-yaml/type/bool.js","../node_modules/js-yaml/lib/js-yaml/type/int.js","../node_modules/js-yaml/lib/js-yaml/type/float.js","../node_modules/js-yaml/lib/js-yaml/schema/json.js","../node_modules/js-yaml/lib/js-yaml/schema/core.js","../node_modules/js-yaml/lib/js-yaml/type/timestamp.js","../node_modules/js-yaml/lib/js-yaml/type/merge.js","../node_modules/js-yaml/lib/js-yaml/type/binary.js","../node_modules/js-yaml/lib/js-yaml/type/omap.js","../node_modules/js-yaml/lib/js-yaml/type/pairs.js","../node_modules/js-yaml/lib/js-yaml/type/set.js","../node_modules/js-yaml/lib/js-yaml/schema/default_safe.js","../node_modules/js-yaml/lib/js-yaml/type/js/undefined.js","../node_modules/js-yaml/lib/js-yaml/type/js/regexp.js","../node_modules/js-yaml/lib/js-yaml/type/js/function.js","../node_modules/js-yaml/lib/js-yaml/schema/default_full.js","../node_modules/js-yaml/lib/js-yaml/loader.js","../node_modules/js-yaml/lib/js-yaml/dumper.js","../node_modules/js-yaml/lib/js-yaml.js","../node_modules/js-yaml/index.js","../components/front-matter.js","../node_modules/bibtex-parse-js/bibtexParse.js","../components/bibliography.js","../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/utcMinute.js","../node_modules/d3-time/src/utcHour.js","../node_modules/d3-time/src/utcDay.js","../node_modules/d3-time/src/utcWeek.js","../node_modules/d3-time/src/utcMonth.js","../node_modules/d3-time/src/utcYear.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-time-format/src/isoFormat.js","../node_modules/d3-time-format/src/isoParse.js","../components/expand-data.js","../node_modules/escape-html/index.js","../components/meta.js","../components/banner.js","../node_modules/mustache/mustache.js","../components/byline.js","../components/appendix.js","../components/citation.js","../components/footnote.js","../node_modules/marked/lib/marked.js","../components/markdown.js","../node_modules/prismjs/prism.js","../components/code.js","../components/typeset.js","../components/hover-box-include.js","../components/generate-crossref.js","../components/header.js","../components/footer.js","../index.js"],"sourcesContent":["export default function(dom) {\n if (!dom.querySelector(\"html\").getAttribute(\"lang\")) {\n dom.querySelector(\"html\").setAttribute(\"lang\", \"en\")\n }\n\n let head = dom.querySelector(\"head\");\n\n if (!dom.querySelector(\"meta[charset]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"charset\", \"utf-8\");\n head.appendChild(meta);\n }\n if (!dom.querySelector(\"meta[name=viewport]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"name\", \"viewport\");\n meta.setAttribute(\"content\", \"width=device-width, initial-scale=1\");\n head.appendChild(meta);\n }\n}\n","import base from './styles-base.css';\nimport layout from './styles-layout.css';\nimport article from './styles-article.css';\nimport code from './styles-code.css';\nimport print from './styles-print.css';\n\nexport default function(dom) {\n let s = dom.createElement(\"style\");\n s.textContent = base + layout + article + code + print;\n dom.querySelector(\"head\").appendChild(s);\n}\n","'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n var result = this.name + ': ';\n\n result += this.reason || '(unknown reason)';\n\n if (!compact && this.mark) {\n result += ' ' + this.mark.toString();\n }\n\n return result;\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n\nvar common = require('./common');\n\n\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\n\n\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head, start, tail, end, snippet;\n\n if (!this.buffer) return null;\n\n indent = indent || 4;\n maxLength = maxLength || 75;\n\n head = '';\n start = this.position;\n\n while (start > 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n\n tail = '';\n end = this.position;\n\n while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n\n snippet = this.buffer.slice(start, end);\n\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' +\n common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\n\nMark.prototype.toString = function toString(compact) {\n var snippet, where = '';\n\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n if (!compact) {\n snippet = this.getSnippet();\n\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n\n return where;\n};\n\n\nmodule.exports = Mark;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name, result) {\n var exclude = [];\n\n schema.include.forEach(function (includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n\n schema[name].forEach(function (currentType) {\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n exclude.push(previousIndex);\n }\n });\n\n result.push(currentType);\n });\n\n return result.filter(function (type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {}\n }, index, length;\n\n function collectType(type) {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n\n this.implicit.forEach(function (type) {\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n });\n\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\n\nSchema.DEFAULT = null;\n\n\nSchema.create = function createSchema() {\n var schemas, types;\n\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n\n if (!schemas.every(function (schema) { return schema instanceof Schema; })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n\n if (!types.every(function (type) { return type instanceof Type; })) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n return new Schema({\n include: schemas,\n explicit: types\n });\n};\n\n\nmodule.exports = Schema;\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 8\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 10 (except 0) or base 60\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch === ':') break;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n if (!hasDigits) return false;\n\n // if !base60 - done;\n if (ch !== ':') return true;\n\n // base60 almost not used, no needs to optimize\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch, base, digits = [];\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value, 16);\n return sign * parseInt(value, 8);\n }\n\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseInt(v, 10));\n });\n\n value = 0;\n base = 1;\n\n digits.forEach(function (d) {\n value += (d * base);\n base *= 60;\n });\n\n return sign * value;\n\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (object) { return '0b' + object.toString(2); },\n octal: function (object) { return '0' + object.toString(8); },\n decimal: function (object) { return object.toString(10); },\n hexadecimal: function (object) { return '0x' + object.toString(16).toUpperCase(); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n '^(?:[-+]?(?:[0-9][0-9_]*)\\\\.[0-9_]*(?:[eE][-+][0-9]+)?' +\n '|\\\\.[0-9_]+(?:[eE][-+][0-9]+)?' +\n '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' +\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data)) return false;\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign, base, digits;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n\n } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n\n value = 0.0;\n base = 1;\n\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n\n return sign * value;\n\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./failsafe')\n ],\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./json')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\nvar NodeBuffer;\n\ntry {\n // A trick for browserified version, to not include `Buffer` shim\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n // Wrap into Buffer for NodeJS and leave Array for browser\n if (NodeBuffer) return new NodeBuffer(result);\n\n return result;\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./core')\n ],\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n return true;\n}\n\nfunction constructJavascriptUndefined() {\n /*eslint-disable no-undefined*/\n return undefined;\n}\n\nfunction representJavascriptUndefined() {\n return '';\n}\n\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n if (data === null) return false;\n if (data.length === 0) return false;\n\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // if regexp starts with '/' it can have modifiers and must be properly closed\n // `/foo/gim` - modifiers tail can be maximum 3 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n\n if (modifiers.length > 3) return false;\n // if expression starts with /, is should be properly terminated\n if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n }\n\n return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // `/foo/gim` - tail can be maximum 4 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n\n return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object /*, style*/) {\n var result = '/' + object.source + '/';\n\n if (object.global) result += 'g';\n if (object.multiline) result += 'm';\n if (object.ignoreCase) result += 'i';\n\n return result;\n}\n\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n","'use strict';\n\nvar esprima;\n\n// Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n// If not found - try to fallback to window.esprima. If not\n// found too - then fail to parse.\n//\ntry {\n // workaround to exclude package from browserify list.\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n /*global window */\n if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n if (data === null) return false;\n\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true });\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction constructJavascriptFunction(data) {\n /*jslint evil:true*/\n\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true }),\n params = [],\n body;\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n throw new Error('Failed to resolve function');\n }\n\n ast.body[0].expression.params.forEach(function (param) {\n params.push(param.name);\n });\n\n body = ast.body[0].expression.body.range;\n\n // Esprima's ranges include the first '{' and the last '}' characters on\n // function expressions. So cut them out.\n /*eslint-disable no-new-func*/\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n}\n\nfunction representJavascriptFunction(object /*, style*/) {\n return object.toString();\n}\n\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n","// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [\n require('./default_safe')\n ],\n explicit: [\n require('../type/js/undefined'),\n require('../type/js/regexp'),\n require('../type/js/function')\n ]\n});\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00);\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n return new YAMLException(\n message,\n new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length;\n _position < _length;\n _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode) {\n var index, quantity;\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n throwError(state, 'duplicated mapping key');\n }\n _result[keyNode] = valueNode;\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else {\n break; // Reading is done. Go to the epilogue.\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if (state.lineIndent > nodeIndent && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!state.anchorMap.hasOwnProperty(alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag !== null && state.tag !== '!') {\n if (state.tag === '?') {\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length;\n typeIndex < typeQuantity;\n typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only assigned to plain scalars. So, it isn't\n // needed to check for 'kind' conformity.\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = {};\n state.anchorMap = {};\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n var documents = loadDocuments(input, options), index, length;\n\n for (index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nfunction safeLoadAll(input, output, options) {\n loadAll(input, output, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nfunction safeLoad(input, options) {\n return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// Simplified test for values allowed after the first character in plain style.\nfunction isPlainSafe(c) {\n // Uses a subset of nb-char - c-flow-indicator - \":\" - \"#\"\n // where nb-char ::= c-printable - b-char - c-byte-order-mark.\n return isPrintable(c) && c !== 0xFEFF\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // - \":\" - \"#\"\n && c !== CHAR_COLON\n && c !== CHAR_SHARP;\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n return isPrintable(c) && c !== 0xFEFF\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {\n var i;\n var char;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(string.charCodeAt(0))\n && !isWhitespace(string.charCodeAt(string.length - 1));\n\n if (singleLineOnly) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n return plain && !testAmbiguousType(string)\n ? STYLE_PLAIN : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (string[0] === ' ' && indentPerLevel > 9) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey) {\n state.dump = (function () {\n if (string.length === 0) {\n return \"''\";\n }\n if (!state.noCompatMode &&\n DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n return \"'\" + string + \"'\";\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = (string[0] === ' ') ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char;\n var escapeSeq;\n\n for (var i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n result += !escapeSeq && isPrintable(char)\n ? string[i]\n : escapeSeq || encodeHex(char);\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level, object[index], false, false)) {\n if (index !== 0) _result += ', ';\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || index !== 0) {\n _result += generateNextLine(state, level);\n }\n _result += '- ' + state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (index !== 0) pairBuffer += ', ';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + ': ';\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || index !== 0) {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n state.tag = explicit ? type.tag : '?';\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n writeBlockSequence(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey);\n }\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n state.dump = '!<' + state.tag + '> ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n if (writeNode(state, 0, input, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nfunction safeDump(input, options) {\n return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n","'use strict';\n\n\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\n\n\nfunction deprecated(name) {\n return function () {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\n\n\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\n\n// Deprecated schema names from JS-YAML 2.0.x\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\n\n// Deprecated functions from JS-YAML 1.x.x\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","'use strict';\n\n\nvar yaml = require('./lib/js-yaml.js');\n\n\nmodule.exports = yaml;\n","import ymlParse from \"js-yaml\";\n\nexport default function(dom, data) {\n let localData = {};\n let el = dom.querySelector('script[type=\"text/front-matter\"]');\n if (el) {\n let text = el.textContent;\n localData = ymlParse.safeLoad(text);\n }\n\n data.title = localData.title ? localData.title : \"Untitled\";\n data.description = localData.description ? localData.description : \"No description.\";\n\n data.authors = localData.authors ? localData.authors : [];\n\n data.authors = data.authors.map((author, i) =>{\n let a = {};\n let name = Object.keys(author)[0];\n if ((typeof author) === \"string\") {\n name = author;\n } else {\n a.personalURL = author[name];\n }\n let names = name.split(\" \");\n a.name = name;\n a.firstName = names.slice(0, names.length - 1).join(\" \");\n a.lastName = names[names.length -1];\n if(localData.affiliations[i]) {\n let affiliation = Object.keys(localData.affiliations[i])[0];\n if ((typeof localData.affiliations[i]) === \"string\") {\n affiliation = localData.affiliations[i]\n } else {\n a.affiliationURL = localData.affiliations[i][affiliation];\n }\n a.affiliation = affiliation;\n }\n return a;\n });\n \n\n}\n","/* start bibtexParse 0.0.22 */\n\n//Original work by Henrik Muehe (c) 2010\n//\n//CommonJS port by Mikola Lysenko 2013\n//\n//Port to Browser lib by ORCID / RCPETERS\n//\n//Issues:\n//no comment handling within strings\n//no string concatenation\n//no variable values yet\n//Grammar implemented here:\n//bibtex -> (string | preamble | comment | entry)*;\n//string -> '@STRING' '{' key_equals_value '}';\n//preamble -> '@PREAMBLE' '{' value '}';\n//comment -> '@COMMENT' '{' value '}';\n//entry -> '@' key '{' key ',' key_value_list '}';\n//key_value_list -> key_equals_value (',' key_equals_value)*;\n//key_equals_value -> key '=' value;\n//value -> value_quotes | value_braces | key;\n//value_quotes -> '\"' .*? '\"'; // not quite\n//value_braces -> '{' .*? '\"'; // not quite\n(function(exports) {\n\n function BibtexParser() {\n \n this.months = [\"jan\", \"feb\", \"mar\", \"apr\", \"may\", \"jun\", \"jul\", \"aug\", \"sep\", \"oct\", \"nov\", \"dec\"];\n this.notKey = [',','{','}',' ','='];\n this.pos = 0;\n this.input = \"\";\n this.entries = new Array();\n\n this.currentEntry = \"\";\n\n this.setInput = function(t) {\n this.input = t;\n };\n\n this.getEntries = function() {\n return this.entries;\n };\n\n this.isWhitespace = function(s) {\n return (s == ' ' || s == '\\r' || s == '\\t' || s == '\\n');\n };\n\n this.match = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n this.pos += s.length;\n } else {\n throw \"Token mismatch, expected \" + s + \", found \"\n + this.input.substring(this.pos);\n };\n this.skipWhitespace(canCommentOut);\n };\n\n this.tryMatch = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n return true;\n } else {\n return false;\n };\n this.skipWhitespace(canCommentOut);\n };\n\n /* when search for a match all text can be ignored, not just white space */\n this.matchAt = function() {\n while (this.input.length > this.pos && this.input[this.pos] != '@') {\n this.pos++;\n };\n\n if (this.input[this.pos] == '@') {\n return true;\n };\n return false;\n };\n\n this.skipWhitespace = function(canCommentOut) {\n while (this.isWhitespace(this.input[this.pos])) {\n this.pos++;\n };\n if (this.input[this.pos] == \"%\" && canCommentOut == true) {\n while (this.input[this.pos] != \"\\n\") {\n this.pos++;\n };\n this.skipWhitespace(canCommentOut);\n };\n };\n\n this.value_braces = function() {\n var bracecount = 0;\n this.match(\"{\", false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '}') {\n if (bracecount > 0) {\n bracecount--;\n } else {\n var end = this.pos;\n this.match(\"}\", false);\n return this.input.substring(start, end);\n };\n } else if (this.input[this.pos] == '{') {\n bracecount++;\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value\";\n };\n };\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.value_comment = function() {\n var str = '';\n var brcktCnt = 0;\n while (!(this.tryMatch(\"}\", false) && brcktCnt == 0)) {\n str = str + this.input[this.pos];\n if (this.input[this.pos] == '{')\n brcktCnt++;\n if (this.input[this.pos] == '}')\n brcktCnt--;\n if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n this.pos++;\n };\n return str;\n };\n\n this.value_quotes = function() {\n this.match('\"', false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '\"') {\n var end = this.pos;\n this.match('\"', false);\n return this.input.substring(start, end);\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n }\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.single_value = function() {\n var start = this.pos;\n if (this.tryMatch(\"{\")) {\n return this.value_braces();\n } else if (this.tryMatch('\"')) {\n return this.value_quotes();\n } else {\n var k = this.key();\n if (k.match(\"^[0-9]+$\"))\n return k;\n else if (this.months.indexOf(k.toLowerCase()) >= 0)\n return k.toLowerCase();\n else\n throw \"Value expected:\" + this.input.substring(start) + ' for key: ' + k;\n \n };\n };\n\n this.value = function() {\n var values = [];\n values.push(this.single_value());\n while (this.tryMatch(\"#\")) {\n this.match(\"#\");\n values.push(this.single_value());\n };\n return values.join(\"\");\n };\n\n this.key = function() {\n var start = this.pos;\n while (true) {\n if (this.pos >= this.input.length) {\n throw \"Runaway key\";\n };\n // а-яА-Я is Cyrillic\n //console.log(this.input[this.pos]);\n if (this.notKey.indexOf(this.input[this.pos]) >= 0) {\n return this.input.substring(start, this.pos);\n } else {\n this.pos++;\n \n };\n };\n };\n\n this.key_equals_value = function() {\n var key = this.key();\n if (this.tryMatch(\"=\")) {\n this.match(\"=\");\n var val = this.value();\n return [ key, val ];\n } else {\n throw \"... = value expected, equals sign missing:\"\n + this.input.substring(this.pos);\n };\n };\n\n this.key_value_list = function() {\n var kv = this.key_equals_value();\n this.currentEntry['entryTags'] = {};\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n while (this.tryMatch(\",\")) {\n this.match(\",\");\n // fixes problems with commas at the end of a list\n if (this.tryMatch(\"}\")) {\n break;\n }\n ;\n kv = this.key_equals_value();\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n };\n };\n\n this.entry_body = function(d) {\n this.currentEntry = {};\n this.currentEntry['citationKey'] = this.key();\n this.currentEntry['entryType'] = d.substring(1);\n this.match(\",\");\n this.key_value_list();\n this.entries.push(this.currentEntry);\n };\n\n this.directive = function() {\n this.match(\"@\");\n return \"@\" + this.key();\n };\n\n this.preamble = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'PREAMBLE';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.comment = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'COMMENT';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.entry = function(d) {\n this.entry_body(d);\n };\n\n this.bibtex = function() {\n while (this.matchAt()) {\n var d = this.directive();\n this.match(\"{\");\n if (d == \"@STRING\") {\n this.string();\n } else if (d == \"@PREAMBLE\") {\n this.preamble();\n } else if (d == \"@COMMENT\") {\n this.comment();\n } else {\n this.entry(d);\n }\n this.match(\"}\");\n };\n };\n };\n \n exports.toJSON = function(bibtex) {\n var b = new BibtexParser();\n b.setInput(bibtex);\n b.bibtex();\n return b.entries;\n };\n\n /* added during hackathon don't hate on me */\n exports.toBibtex = function(json) {\n var out = '';\n for ( var i in json) {\n out += \"@\" + json[i].entryType;\n out += '{';\n if (json[i].citationKey)\n out += json[i].citationKey + ', ';\n if (json[i].entry)\n out += json[i].entry ;\n if (json[i].entryTags) {\n var tags = '';\n for (var jdx in json[i].entryTags) {\n if (tags.length != 0)\n tags += ', ';\n tags += jdx + '= {' + json[i].entryTags[jdx] + '}';\n }\n out += tags;\n }\n out += '}\\n\\n';\n }\n return out;\n \n };\n\n})(typeof exports === 'undefined' ? this['bibtexParse'] = {} : exports);\n\n/* end bibtexParse */\n","import bibtexParse from \"bibtex-parse-js\";\n\nexport default function(dom, data) {\n let el = dom.querySelector('script[type=\"text/bibliography\"]');\n let citations = [];\n let bibliography = {};\n //TODO If we don't have a local element, make a request for the document.\n if (el) {\n let rawBib = el.textContent;\n let parsed = bibtexParse.toJSON(rawBib);\n if(parsed) {\n parsed.forEach(e => {\n for (var k in e.entryTags){\n var val = e.entryTags[k];\n val = val.replace(/[\\t\\n ]+/g, \" \");\n val = val.replace(/{\\\\[\"^`\\.'acu~Hvs]( )?([a-zA-Z])}/g,\n (full, x, char) => char);\n val = val.replace(/{\\\\([a-zA-Z])}/g,\n (full, char) => char);\n e.entryTags[k] = val;\n }\n bibliography[e.citationKey] = e.entryTags;\n bibliography[e.citationKey].type = e.entryType;\n });\n }\n\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach(el => {\n let key = el.getAttribute(\"key\");\n if (key) {\n let citationKeys = key.split(\",\");\n citationKeys.forEach(key => {\n if (citations.indexOf(key) == -1){\n citations.push(key);\n if (!(key in bibliography)){\n console.warn(\"No bibliography entry found for: \" + key);\n }\n }\n });\n }\n });\n }\n data.bibliography = bibliography;\n data.citations = citations;\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(new Date(+start)); while (offseti(start, step), floori(start), start < stop)\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) while (--step >= 0) while (offseti(date, 1), !test(date)) {} // eslint-disable-line no-empty\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(Math.floor(date / durationSecond) * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(Math.floor(date / durationMinute) * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute} from \"./duration\";\n\nvar hour = interval(function(date) {\n var offset = date.getTimezoneOffset() * durationMinute % durationHour;\n if (offset < 0) offset += durationHour;\n date.setTime(Math.floor((+date - offset) / durationHour) * durationHour + offset);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval\";\nimport {durationWeek} from \"./duration\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {timeDay, timeSunday, timeMonday, timeYear, utcDay, utcSunday, utcMonday, utcYear} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"S\": formatSeconds,\n \"U\": formatWeekNumberSunday,\n \"w\": formatWeekdayNumber,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"S\": formatUTCSeconds,\n \"U\": formatUTCWeekNumberSunday,\n \"w\": formatUTCWeekdayNumber,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"S\": parseSeconds,\n \"U\": parseWeekNumberSunday,\n \"w\": parseWeekdayNumber,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0);\n if (i != string.length) return null;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n var day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?:\\:?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekdayNumber(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekdayNumber(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {timeFormat} from \"d3-time-format\";\n\nexport default function(dom, data) {\n\n data.authors = data.authors || [];\n\n // paths\n data.url = data.url ? data.url : \"http://distill.pub/\" + data.distillPath;\n data.githubUrl = \"https://github.com/\" + data.githubPath;\n\n data.previewURL = data.previewURL ? data.previewURL : data.url + \"/thumbnail.jpg\"\n\n // Homepage\n //data.homepage = !post.noHomepage;\n data.journal = data.journal || {};\n\n // Dates\n if (data.publishedDate){//} && data.journal) {\n data.volume = data.publishedDate.getFullYear() - 2015;\n data.issue = data.publishedDate.getMonth() + 1;\n }\n\n data.publishedDate = data.publishedDate ? data.publishedDate : new Date(\"Invalid\");\n data.updatedDate = data.updatedDate ? data.updatedDate : new Date(\"Invalid\");\n\n data.publishedDateRFC\n let RFC = timeFormat(\"%a, %d %b %Y %H:%M:%S %Z\");\n let months = [\"Jan\", \"Feb\", \"March\", \"April\", \"May\", \"June\", \"July\", \"Aug\", \"Sept\", \"Oct\", \"Nov\", \"Dec\"];\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n data.publishedDateRFC = RFC(data.publishedDate);\n data.publishedYear = data.publishedDate.getFullYear();\n data.publishedMonth = months[data.publishedDate.getMonth()];\n data.publishedDay = data.publishedDate.getDate();\n data.publishedMonthPadded = zeroPad(data.publishedDate.getMonth() + 1);\n data.publishedDayPadded = zeroPad(data.publishedDate.getDate());\n data.updatedDateRFC = RFC(data.updatedDate);\n\n if (data.authors.length > 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \", et al.\";\n } else if (data.authors.length === 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \" & \" + data.authors[1].lastName;\n } else if (data.authors.length === 1) {\n data.concatenatedAuthors = data.authors[0].lastName\n }\n\n data.bibtexAuthors = data.authors.map(function(author){\n return author.lastName + \", \" + author.firstName;\n }).join(\" and \");\n\n data.slug = data.authors.length ? data.authors[0].lastName.toLowerCase() + data.publishedYear + data.title.split(\" \")[0].toLowerCase() : \"Untitled\";\n\n}\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","import favicon from './distill-favicon.base64';\nimport escape from 'escape-html';\n\nexport default function(dom, data) {\n let head = dom.querySelector(\"head\");\n let appendHead = html => appendHtml(head, html);\n\n function meta(name, content, force) {\n if (content || force)\n appendHead(` \\n`);\n }\n\n appendHead(`\n \n \n \n \n ${data.title}\n `);\n\n appendHead(`\n \n \n \n `);\n data.authors.forEach((a) => {\n appendHtml(head, `\n `)\n });\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n // if this is a proprer article, generate Google Scholar meta data\n if (data.doiSuffix){\n appendHead(`\n \\n`);\n\n meta(\"citation_title\", data.title);\n //meta(\"citation_fulltext_html_url\", data.url);\n meta(\"citation_volume\", data.volume);\n meta(\"citation_issue\", data.issue);\n meta(\"citation_firstpage\", data.doiSuffix? `e${data.doiSuffix}` : undefined);\n meta(\"citation_doi\", data.doi);\n\n let journal = data.journal || {};\n meta(\"citation_journal_title\", journal.full_title || journal.title);\n meta(\"citation_journal_abbrev\", journal.abbrev_title);\n meta(\"citation_issn\", journal.issn);\n meta(\"citation_publisher\", journal.publisher);\n meta(\"citation_fulltext_world_readable\", \"\", true);\n\n if (data.publishedDate){\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n meta(\"citation_online_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n // Should we do something different here?\n meta(\"citation_publication_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n }\n\n (data.authors || []).forEach((a) => {\n meta(\"citation_author\", `${a.lastName}, ${a.firstName}`);\n meta(\"citation_author_institution\", a.affiliation);\n });\n\n if (data.citations) {\n data.citations.forEach(key => {\n let d = data.bibliography[key];\n if(!d) {\n console.warn(\"No bibliography data fround for \" + key)\n } else {\n meta(\"citation_reference\", citation_meta_content(data.bibliography[key]) )\n };\n });\n }\n }\n}\n\nfunction appendHtml(el, html) {\n el.innerHTML += html;\n}\n\nfunction citation_meta_content(ref){\n // Special test for arxiv\n var content = `citation_title=${ref.title};`;\n\n let name_strings = ref.author.split(\" and \").forEach(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1].trim();\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n content += `citation_author=${firsts} ${last};`;\n });\n\n if (\"year\" in ref) {\n content += `citation_publication_date=${ref.year};`;\n }\n\n var arxiv_id_search = /https?:\\/\\/arxiv\\.org\\/pdf\\/([0-9]*\\.[0-9]*)\\.pdf/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /https?:\\/\\/arxiv\\.org\\/abs\\/([0-9]*\\.[0-9]*)/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /arXiv preprint arXiv:([0-9]*\\.[0-9]*)/.exec(ref.journal);\n if (arxiv_id_search && arxiv_id_search[1]){\n content += `citation_arxiv_id=${arxiv_id_search[1]};`;\n return content;\n }\n if (\"journal\" in ref){\n content += `citation_journal_title=${ref.journal};`;\n }\n if (\"volume\" in ref) {\n content += `citation_volume=${ref.volume};`;\n }\n if (\"issue\" in ref || \"number\" in ref){\n content += `citation_number=${ref.issue || ref.number};`;\n }\n /*content += `citation_first_page=${};`;\n content += `citation_publication_date=${};`;*/\n return content;\n}\n","const html = `\n\n
    This article is a draft, awaiting review for publication in Distill
    \n`;\n\nexport default function(dom, data) {\n let banner = dom.createElement(\"dt-banner\");\n banner.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(banner, b.firstChild);\n banner.addEventListener(\"click\", function() {\n banner.style.display = \"none\";\n });\n}\n","/*!\n * mustache.js - Logic-less {{mustache}} templates with JavaScript\n * http://github.com/janl/mustache.js\n */\n\n/*global define: false Mustache: true*/\n\n(function defineMustache (global, factory) {\n if (typeof exports === 'object' && exports && typeof exports.nodeName !== 'string') {\n factory(exports); // CommonJS\n } else if (typeof define === 'function' && define.amd) {\n define(['exports'], factory); // AMD\n } else {\n global.Mustache = {};\n factory(global.Mustache); // script, wsh, asp\n }\n}(this, function mustacheFactory (mustache) {\n\n var objectToString = Object.prototype.toString;\n var isArray = Array.isArray || function isArrayPolyfill (object) {\n return objectToString.call(object) === '[object Array]';\n };\n\n function isFunction (object) {\n return typeof object === 'function';\n }\n\n /**\n * More correct typeof string handling array\n * which normally returns typeof 'object'\n */\n function typeStr (obj) {\n return isArray(obj) ? 'array' : typeof obj;\n }\n\n function escapeRegExp (string) {\n return string.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n }\n\n /**\n * Null safe way of checking whether or not an object,\n * including its prototype, has a given property\n */\n function hasProperty (obj, propName) {\n return obj != null && typeof obj === 'object' && (propName in obj);\n }\n\n // Workaround for https://issues.apache.org/jira/browse/COUCHDB-577\n // See https://github.com/janl/mustache.js/issues/189\n var regExpTest = RegExp.prototype.test;\n function testRegExp (re, string) {\n return regExpTest.call(re, string);\n }\n\n var nonSpaceRe = /\\S/;\n function isWhitespace (string) {\n return !testRegExp(nonSpaceRe, string);\n }\n\n var entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n function escapeHtml (string) {\n return String(string).replace(/[&<>\"'`=\\/]/g, function fromEntityMap (s) {\n return entityMap[s];\n });\n }\n\n var whiteRe = /\\s*/;\n var spaceRe = /\\s+/;\n var equalsRe = /\\s*=/;\n var curlyRe = /\\s*\\}/;\n var tagRe = /#|\\^|\\/|>|\\{|&|=|!/;\n\n /**\n * Breaks up the given `template` string into a tree of tokens. If the `tags`\n * argument is given here it must be an array with two string values: the\n * opening and closing tags used in the template (e.g. [ \"<%\", \"%>\" ]). Of\n * course, the default is to use mustaches (i.e. mustache.tags).\n *\n * A token is an array with at least 4 elements. The first element is the\n * mustache symbol that was used inside the tag, e.g. \"#\" or \"&\". If the tag\n * did not contain a symbol (i.e. {{myValue}}) this element is \"name\". For\n * all text that appears outside a symbol this element is \"text\".\n *\n * The second element of a token is its \"value\". For mustache tags this is\n * whatever else was inside the tag besides the opening symbol. For text tokens\n * this is the text itself.\n *\n * The third and fourth elements of the token are the start and end indices,\n * respectively, of the token in the original template.\n *\n * Tokens that are the root node of a subtree contain two more elements: 1) an\n * array of tokens in the subtree and 2) the index in the original template at\n * which the closing tag for that section begins.\n */\n function parseTemplate (template, tags) {\n if (!template)\n return [];\n\n var sections = []; // Stack to hold section tokens\n var tokens = []; // Buffer to hold the tokens\n var spaces = []; // Indices of whitespace tokens on the current line\n var hasTag = false; // Is there a {{tag}} on the current line?\n var nonSpace = false; // Is there a non-space char on the current line?\n\n // Strips all whitespace tokens array for the current line\n // if there was a {{#tag}} on it and otherwise only space.\n function stripSpace () {\n if (hasTag && !nonSpace) {\n while (spaces.length)\n delete tokens[spaces.pop()];\n } else {\n spaces = [];\n }\n\n hasTag = false;\n nonSpace = false;\n }\n\n var openingTagRe, closingTagRe, closingCurlyRe;\n function compileTags (tagsToCompile) {\n if (typeof tagsToCompile === 'string')\n tagsToCompile = tagsToCompile.split(spaceRe, 2);\n\n if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)\n throw new Error('Invalid tags: ' + tagsToCompile);\n\n openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\\\s*');\n closingTagRe = new RegExp('\\\\s*' + escapeRegExp(tagsToCompile[1]));\n closingCurlyRe = new RegExp('\\\\s*' + escapeRegExp('}' + tagsToCompile[1]));\n }\n\n compileTags(tags || mustache.tags);\n\n var scanner = new Scanner(template);\n\n var start, type, value, chr, token, openSection;\n while (!scanner.eos()) {\n start = scanner.pos;\n\n // Match any text between tags.\n value = scanner.scanUntil(openingTagRe);\n\n if (value) {\n for (var i = 0, valueLength = value.length; i < valueLength; ++i) {\n chr = value.charAt(i);\n\n if (isWhitespace(chr)) {\n spaces.push(tokens.length);\n } else {\n nonSpace = true;\n }\n\n tokens.push([ 'text', chr, start, start + 1 ]);\n start += 1;\n\n // Check for whitespace on the current line.\n if (chr === '\\n')\n stripSpace();\n }\n }\n\n // Match the opening tag.\n if (!scanner.scan(openingTagRe))\n break;\n\n hasTag = true;\n\n // Get the tag type.\n type = scanner.scan(tagRe) || 'name';\n scanner.scan(whiteRe);\n\n // Get the tag value.\n if (type === '=') {\n value = scanner.scanUntil(equalsRe);\n scanner.scan(equalsRe);\n scanner.scanUntil(closingTagRe);\n } else if (type === '{') {\n value = scanner.scanUntil(closingCurlyRe);\n scanner.scan(curlyRe);\n scanner.scanUntil(closingTagRe);\n type = '&';\n } else {\n value = scanner.scanUntil(closingTagRe);\n }\n\n // Match the closing tag.\n if (!scanner.scan(closingTagRe))\n throw new Error('Unclosed tag at ' + scanner.pos);\n\n token = [ type, value, start, scanner.pos ];\n tokens.push(token);\n\n if (type === '#' || type === '^') {\n sections.push(token);\n } else if (type === '/') {\n // Check section nesting.\n openSection = sections.pop();\n\n if (!openSection)\n throw new Error('Unopened section \"' + value + '\" at ' + start);\n\n if (openSection[1] !== value)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + start);\n } else if (type === 'name' || type === '{' || type === '&') {\n nonSpace = true;\n } else if (type === '=') {\n // Set the tags for the next time around.\n compileTags(value);\n }\n }\n\n // Make sure there are no open sections when we're done.\n openSection = sections.pop();\n\n if (openSection)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + scanner.pos);\n\n return nestTokens(squashTokens(tokens));\n }\n\n /**\n * Combines the values of consecutive text tokens in the given `tokens` array\n * to a single token.\n */\n function squashTokens (tokens) {\n var squashedTokens = [];\n\n var token, lastToken;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n if (token) {\n if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {\n lastToken[1] += token[1];\n lastToken[3] = token[3];\n } else {\n squashedTokens.push(token);\n lastToken = token;\n }\n }\n }\n\n return squashedTokens;\n }\n\n /**\n * Forms the given array of `tokens` into a nested tree structure where\n * tokens that represent a section have two additional items: 1) an array of\n * all tokens that appear in that section and 2) the index in the original\n * template that represents the end of that section.\n */\n function nestTokens (tokens) {\n var nestedTokens = [];\n var collector = nestedTokens;\n var sections = [];\n\n var token, section;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n switch (token[0]) {\n case '#':\n case '^':\n collector.push(token);\n sections.push(token);\n collector = token[4] = [];\n break;\n case '/':\n section = sections.pop();\n section[5] = token[2];\n collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;\n break;\n default:\n collector.push(token);\n }\n }\n\n return nestedTokens;\n }\n\n /**\n * A simple string scanner that is used by the template parser to find\n * tokens in template strings.\n */\n function Scanner (string) {\n this.string = string;\n this.tail = string;\n this.pos = 0;\n }\n\n /**\n * Returns `true` if the tail is empty (end of string).\n */\n Scanner.prototype.eos = function eos () {\n return this.tail === '';\n };\n\n /**\n * Tries to match the given regular expression at the current position.\n * Returns the matched text if it can match, the empty string otherwise.\n */\n Scanner.prototype.scan = function scan (re) {\n var match = this.tail.match(re);\n\n if (!match || match.index !== 0)\n return '';\n\n var string = match[0];\n\n this.tail = this.tail.substring(string.length);\n this.pos += string.length;\n\n return string;\n };\n\n /**\n * Skips all text until the given regular expression can be matched. Returns\n * the skipped string, which is the entire tail if no match can be made.\n */\n Scanner.prototype.scanUntil = function scanUntil (re) {\n var index = this.tail.search(re), match;\n\n switch (index) {\n case -1:\n match = this.tail;\n this.tail = '';\n break;\n case 0:\n match = '';\n break;\n default:\n match = this.tail.substring(0, index);\n this.tail = this.tail.substring(index);\n }\n\n this.pos += match.length;\n\n return match;\n };\n\n /**\n * Represents a rendering context by wrapping a view object and\n * maintaining a reference to the parent context.\n */\n function Context (view, parentContext) {\n this.view = view;\n this.cache = { '.': this.view };\n this.parent = parentContext;\n }\n\n /**\n * Creates a new context using the given view with this context\n * as the parent.\n */\n Context.prototype.push = function push (view) {\n return new Context(view, this);\n };\n\n /**\n * Returns the value of the given name in this context, traversing\n * up the context hierarchy if the value is absent in this context's view.\n */\n Context.prototype.lookup = function lookup (name) {\n var cache = this.cache;\n\n var value;\n if (cache.hasOwnProperty(name)) {\n value = cache[name];\n } else {\n var context = this, names, index, lookupHit = false;\n\n while (context) {\n if (name.indexOf('.') > 0) {\n value = context.view;\n names = name.split('.');\n index = 0;\n\n /**\n * Using the dot notion path in `name`, we descend through the\n * nested objects.\n *\n * To be certain that the lookup has been successful, we have to\n * check if the last object in the path actually has the property\n * we are looking for. We store the result in `lookupHit`.\n *\n * This is specially necessary for when the value has been set to\n * `undefined` and we want to avoid looking up parent contexts.\n **/\n while (value != null && index < names.length) {\n if (index === names.length - 1)\n lookupHit = hasProperty(value, names[index]);\n\n value = value[names[index++]];\n }\n } else {\n value = context.view[name];\n lookupHit = hasProperty(context.view, name);\n }\n\n if (lookupHit)\n break;\n\n context = context.parent;\n }\n\n cache[name] = value;\n }\n\n if (isFunction(value))\n value = value.call(this.view);\n\n return value;\n };\n\n /**\n * A Writer knows how to take a stream of tokens and render them to a\n * string, given a context. It also maintains a cache of templates to\n * avoid the need to parse the same template twice.\n */\n function Writer () {\n this.cache = {};\n }\n\n /**\n * Clears all cached templates in this writer.\n */\n Writer.prototype.clearCache = function clearCache () {\n this.cache = {};\n };\n\n /**\n * Parses and caches the given `template` and returns the array of tokens\n * that is generated from the parse.\n */\n Writer.prototype.parse = function parse (template, tags) {\n var cache = this.cache;\n var tokens = cache[template];\n\n if (tokens == null)\n tokens = cache[template] = parseTemplate(template, tags);\n\n return tokens;\n };\n\n /**\n * High-level method that is used to render the given `template` with\n * the given `view`.\n *\n * The optional `partials` argument may be an object that contains the\n * names and templates of partials that are used in the template. It may\n * also be a function that is used to load partial templates on the fly\n * that takes a single argument: the name of the partial.\n */\n Writer.prototype.render = function render (template, view, partials) {\n var tokens = this.parse(template);\n var context = (view instanceof Context) ? view : new Context(view);\n return this.renderTokens(tokens, context, partials, template);\n };\n\n /**\n * Low-level method that renders the given array of `tokens` using\n * the given `context` and `partials`.\n *\n * Note: The `originalTemplate` is only ever used to extract the portion\n * of the original template that was contained in a higher-order section.\n * If the template doesn't use higher-order sections, this argument may\n * be omitted.\n */\n Writer.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate) {\n var buffer = '';\n\n var token, symbol, value;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n value = undefined;\n token = tokens[i];\n symbol = token[0];\n\n if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate);\n else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate);\n else if (symbol === '>') value = this.renderPartial(token, context, partials, originalTemplate);\n else if (symbol === '&') value = this.unescapedValue(token, context);\n else if (symbol === 'name') value = this.escapedValue(token, context);\n else if (symbol === 'text') value = this.rawValue(token);\n\n if (value !== undefined)\n buffer += value;\n }\n\n return buffer;\n };\n\n Writer.prototype.renderSection = function renderSection (token, context, partials, originalTemplate) {\n var self = this;\n var buffer = '';\n var value = context.lookup(token[1]);\n\n // This function is used to render an arbitrary template\n // in the current context by higher-order sections.\n function subRender (template) {\n return self.render(template, context, partials);\n }\n\n if (!value) return;\n\n if (isArray(value)) {\n for (var j = 0, valueLength = value.length; j < valueLength; ++j) {\n buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate);\n }\n } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {\n buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate);\n } else if (isFunction(value)) {\n if (typeof originalTemplate !== 'string')\n throw new Error('Cannot use higher-order sections without the original template');\n\n // Extract the portion of the original template that the section contains.\n value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);\n\n if (value != null)\n buffer += value;\n } else {\n buffer += this.renderTokens(token[4], context, partials, originalTemplate);\n }\n return buffer;\n };\n\n Writer.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate) {\n var value = context.lookup(token[1]);\n\n // Use JavaScript's definition of falsy. Include empty arrays.\n // See https://github.com/janl/mustache.js/issues/186\n if (!value || (isArray(value) && value.length === 0))\n return this.renderTokens(token[4], context, partials, originalTemplate);\n };\n\n Writer.prototype.renderPartial = function renderPartial (token, context, partials) {\n if (!partials) return;\n\n var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\n if (value != null)\n return this.renderTokens(this.parse(value), context, partials, value);\n };\n\n Writer.prototype.unescapedValue = function unescapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return value;\n };\n\n Writer.prototype.escapedValue = function escapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return mustache.escape(value);\n };\n\n Writer.prototype.rawValue = function rawValue (token) {\n return token[1];\n };\n\n mustache.name = 'mustache.js';\n mustache.version = '2.3.0';\n mustache.tags = [ '{{', '}}' ];\n\n // All high-level mustache.* functions use this writer.\n var defaultWriter = new Writer();\n\n /**\n * Clears all cached templates in the default writer.\n */\n mustache.clearCache = function clearCache () {\n return defaultWriter.clearCache();\n };\n\n /**\n * Parses and caches the given template in the default writer and returns the\n * array of tokens it contains. Doing this ahead of time avoids the need to\n * parse templates on the fly as they are rendered.\n */\n mustache.parse = function parse (template, tags) {\n return defaultWriter.parse(template, tags);\n };\n\n /**\n * Renders the `template` with the given `view` and `partials` using the\n * default writer.\n */\n mustache.render = function render (template, view, partials) {\n if (typeof template !== 'string') {\n throw new TypeError('Invalid template! Template should be a \"string\" ' +\n 'but \"' + typeStr(template) + '\" was given as the first ' +\n 'argument for mustache#render(template, view, partials)');\n }\n\n return defaultWriter.render(template, view, partials);\n };\n\n // This is here for backwards compatibility with 0.4.x.,\n /*eslint-disable */ // eslint wants camel cased function name\n mustache.to_html = function to_html (template, view, partials, send) {\n /*eslint-enable*/\n\n var result = mustache.render(template, view, partials);\n\n if (isFunction(send)) {\n send(result);\n } else {\n return result;\n }\n };\n\n // Export the escaping function so that the user may override it.\n // See https://github.com/janl/mustache.js/issues/244\n mustache.escape = escapeHtml;\n\n // Export these mainly for testing, but also for advanced usage.\n mustache.Scanner = Scanner;\n mustache.Context = Context;\n mustache.Writer = Writer;\n\n return mustache;\n}));\n","import mustache from \"mustache\";\n\nconst html = `\n\n\n`;\n\nconst template = `\n
    \n
    \n {{#authors}}\n
    \n {{#personalURL}}\n {{name}}\n {{/personalURL}}\n {{^personalURL}}\n
    {{name}}
    \n {{/personalURL}}\n {{#affiliation}}\n {{#affiliationURL}}\n {{affiliation}}\n {{/affiliationURL}}\n {{^affiliationURL}}\n
    {{affiliation}}
    \n {{/affiliationURL}}\n {{/affiliation}}\n
    \n {{/authors}}\n
    \n
    \n
    {{publishedMonth}}. {{publishedDay}}
    \n
    {{publishedYear}}
    \n
    \n \n
    Citation:
    \n
    {{concatenatedAuthors}}, {{publishedYear}}
    \n
    \n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-byline');\n if (el) {\n el.innerHTML = html + mustache.render(template, data);\n }\n}\n","const html = `\n\n\n
    \n

    References

    \n \n

    Errors, Reuse, and Citation

    \n

    If you see mistakes or want to suggest changes, please create an issue on GitHub.

    \n

    Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on GitHub. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: “Figure from …”.

    \n

    For attribution in academic contexts, please cite this work as

    \n
    \n  

    BibTeX citation

    \n
    \n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-appendix')\n if (el) {\n let oldHtml = el.innerHTML;\n el.innerHTML = html;\n let div = el.querySelector(\"div.l-body\")\n\n if (dom.querySelector(\"dt-fn\")) {\n div.innerHTML = `

    Footnotes

    ` + div.innerHTML;\n }\n\n div.innerHTML = oldHtml + div.innerHTML;\n if (data.githubCompareUpdatesUrl) {\n div.innerHTML = `

    Updates

    View all changes to this article since it was first published.

    ` + div.innerHTML;\n }\n\n el.querySelector(\"a.github\").setAttribute(\"href\", data.githubUrl);\n el.querySelector(\"a.github-issue\").setAttribute(\"href\", data.githubUrl + \"/issues/new\");\n el.querySelector(\".citation.short\").textContent = data.concatenatedAuthors + \", \" + '\"' + data.title + '\", Distill, ' + data.publishedYear + \".\";\n var bibtex = \"@article{\" + data.slug + \",\\n\";\n bibtex += \" author = {\" + data.bibtexAuthors + \"},\\n\";\n bibtex += \" title = {\" + data.title + \"},\\n\";\n bibtex += \" journal = {Distill},\\n\";\n bibtex += \" year = {\" + data.publishedYear + \"},\\n\";\n bibtex += \" note = {\" + data.url + \"}\\n\";\n bibtex += \"}\";\n el.querySelector(\".citation.long\").textContent = bibtex;\n }\n\n}\n","export default function(dom, data) {\n let css = `\n dt-cite {\n color: hsla(206, 90%, 20%, 0.7);\n }\n dt-cite .citation-number {\n cursor: default;\n white-space: nowrap;\n font-family: -apple-system, BlinkMacSystemFont, \"Roboto\", Helvetica, sans-serif;\n font-size: 75%;\n color: hsla(206, 90%, 20%, 0.7);\n display: inline-block;\n line-height: 1.1em;\n text-align: center;\n position: relative;\n top: -2px;\n margin: 0 2px;\n }\n figcaption dt-cite .citation-number {\n font-size: 11px;\n font-weight: normal;\n top: -2px;\n line-height: 1em;\n }\n `;\n\n let style = dom.createElement(\"style\");\n style.textContent = css;\n dom.querySelector(\"body\").appendChild(style);\n\n let citations = data.citations;\n /*if (data.citations) {\n citations = Object.keys(data.citations).map(c => data.citations[c]);\n citations.sort((a, b) => {\n return a.author.localeCompare(b.author);\n });\n }*/\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach((el,n) => {\n var key = el.getAttribute(\"key\");\n if (key) {\n var keys = key.split(\",\");\n var cite_string = inline_cite_short(keys);\n var cite_hover_str = \"\";\n keys.map((key,n) => {\n if (n>0) cite_hover_str += \"

    \";\n cite_hover_str += hover_cite(data.bibliography[key]);\n });\n cite_hover_str = cite_hover_str.replace(/\"/g, \"'\")\n var orig_string = el.innerHTML;\n if (orig_string != \"\") orig_string += \" \";\n el.innerHTML = `${orig_string}${cite_string}`;\n }\n });\n\n let bibEl = dom.querySelector(\"dt-bibliography\");\n if (bibEl) {\n let ol = dom.createElement(\"ol\");\n citations.forEach(key => {\n let el = dom.createElement(\"li\");\n el.innerHTML = bibliography_cite(data.bibliography[key]);\n ol.appendChild(el);\n })\n bibEl.appendChild(ol);\n }\n\n function inline_cite_short(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var n = data.citations.indexOf(key)+1;\n return \"\"+n;\n } else {\n return \"?\";\n }\n }\n return \"[\"+keys.map(cite_string).join(\", \")+\"]\";\n }\n\n function inline_cite_long(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var ent = data.bibliography[key];\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var year = ent.year;\n if (names.length == 1) return names[0] + \", \" + year;\n if (names.length == 2) return names[0] + \" & \" + names[1] + \", \" + year;\n if (names.length > 2) return names[0] + \", et al., \" + year;\n } else {\n return \"?\";\n }\n }\n return keys.map(cite_string).join(\", \");\n }\n\n function author_string(ent, template, sep, finalSep){\n var names = ent.author.split(\" and \");\n let name_strings = names.map(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1];\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n var initials = \"\";\n if (firsts != undefined) {\n initials = firsts.trim().split(\" \").map(s => s.trim()[0]);\n initials = initials.join(\".\")+\".\";\n }\n return template.replace(\"${F}\", firsts)\n .replace(\"${L}\", last)\n .replace(\"${I}\", initials);\n });\n if (names.length > 1) {\n var str = name_strings.slice(0, names.length-1).join(sep);\n str += (finalSep || sep) + name_strings[names.length-1];\n return str;\n } else {\n return name_strings[0];\n }\n }\n\n function venue_string(ent) {\n var cite = (ent.journal || ent.booktitle || \"\")\n if (\"volume\" in ent){\n var issue = ent.issue || ent.number;\n issue = (issue != undefined)? \"(\"+issue+\")\" : \"\";\n cite += \", Vol \" + ent.volume + issue;\n }\n if (\"pages\" in ent){\n cite += \", pp. \" + ent.pages\n }\n if (cite != \"\") cite += \". \"\n if (\"publisher\" in ent){\n cite += ent.publisher;\n if (cite[cite.length-1] != \".\") cite += \".\";\n }\n return cite;\n }\n\n function link_string(ent){\n if (\"url\" in ent){\n var url = ent.url;\n var arxiv_match = (/arxiv\\.org\\/abs\\/([0-9\\.]*)/).exec(url);\n if (arxiv_match != null){\n url = `http://arxiv.org/pdf/${arxiv_match[1]}.pdf`;\n }\n\n if (url.slice(-4) == \".pdf\"){\n var label = \"PDF\";\n } else if (url.slice(-5) == \".html\") {\n var label = \"HTML\";\n }\n return `  [${label||\"link\"}]`;\n }/* else if (\"doi\" in ent){\n return `  [DOI]`;\n }*/ else {\n return \"\";\n }\n }\n function doi_string(ent, new_line){\n if (\"doi\" in ent) {\n return `${new_line?\"
    \":\"\"} DOI: ${ent.doi}`;\n } else {\n return \"\";\n }\n }\n\n function bibliography_cite(ent, fancy){\n if (ent){\n var cite = \"\" + ent.title + \" \"\n cite += link_string(ent) + \"
    \";\n cite += author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += venue_string(ent);\n cite += doi_string(ent);\n return cite\n /*var cite = author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += \"\" + ent.title + \". \";\n cite += venue_string(ent);\n cite += doi_string(ent);\n cite += link_string(ent);\n return cite*/\n } else {\n return \"?\";\n }\n }\n\n function hover_cite(ent){\n if (ent){\n var cite = \"\";\n cite += \"\" + ent.title + \"\";\n cite += link_string(ent);\n cite += \"
    \"\n\n var a_str = author_string(ent, \"${I} ${L}\", \", \") + \".\";\n var v_str = venue_string(ent).trim() + \" \" + ent.year + \". \" + doi_string(ent, true);\n\n if ((a_str+v_str).length < Math.min(40, ent.title.length)) {\n cite += a_str + \" \" + v_str;\n } else {\n cite += a_str + \"
    \" + v_str;\n }\n return cite;\n } else {\n return \"?\";\n }\n }\n\n\n //https://scholar.google.com/scholar?q=allintitle%3ADocument+author%3Aolah\n function get_GS_URL(ent){\n if (ent){\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var title = ent.title.split(\" \")//.replace(/[,:]/, \"\")\n var url = \"http://search.labs.crossref.org/dois?\"//\"\"https://scholar.google.com/scholar?\"\n url += uris({q: names.join(\" \") + \" \" + title.join(\" \")})\n }\n\n }\n}\n","export default function(dom, data) {\n\n var fnTags = [].slice.apply(dom.querySelectorAll(\"dt-fn\"));\n var fnContent = [];\n fnTags.forEach((el,n) => {\n var content = el.innerHTML;\n fnContent.push(content);\n n = (n+1)+\"\";\n var key = \"fn-\"+n;\n var escaped_content = content.replace(/\"/g, \"'\");\n el.innerHTML = `${n}`;\n });\n\n let fnList = dom.querySelector(\"dt-fn-list\");\n if (fnList) {\n let ol = dom.createElement(\"ol\");\n fnContent.forEach(content => {\n let el = dom.createElement(\"li\");\n el.innerHTML = content;\n ol.appendChild(el);\n })\n fnList.appendChild(ol);\n }\n\n}\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n */\n\n;(function() {\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^( *[-*_]){3,} *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,\n nptable: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n blockquote: /^( *>[^\\n]+(\\n(?!def)[^\\n]+)*\\n*)+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n table: noop,\n paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,\n text: /^[^\\n]+/\n};\n\nblock.bullet = /(?:[*+-]|\\d+\\.)/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = replace(block.item, 'gm')\n (/bull/g, block.bullet)\n ();\n\nblock.list = replace(block.list)\n (/bull/g, block.bullet)\n ('hr', '\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))')\n ('def', '\\\\n+(?=' + block.def.source + ')')\n ();\n\nblock.blockquote = replace(block.blockquote)\n ('def', block.def)\n ();\n\nblock._tag = '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'\n + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'\n + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|[^\\\\w\\\\s@]*@)\\\\b';\n\nblock.html = replace(block.html)\n ('comment', //)\n ('closed', /<(tag)[\\s\\S]+?<\\/\\1>/)\n ('closing', /])*?>/)\n (/tag/g, block._tag)\n ();\n\nblock.paragraph = replace(block.paragraph)\n ('hr', block.hr)\n ('heading', block.heading)\n ('lheading', block.lheading)\n ('blockquote', block.blockquote)\n ('tag', '<' + block._tag)\n ('def', block.def)\n ();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]*?)\\s*\\1 *(?:\\n+|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = replace(block.paragraph)\n ('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n ();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top, bq) {\n var src = src.replace(/^ +$/gm, '')\n , next\n , loose\n , cap\n , bull\n , b\n , item\n , space\n , i\n , l;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic\n ? cap.replace(/\\n+$/, '')\n : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top, true);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n\n this.tokens.push({\n type: 'list_start',\n ordered: bull.length > 1\n });\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n this.tokens.push({\n type: loose\n ? 'loose_item_start'\n : 'list_item_start'\n });\n\n // Recurse.\n this.token(item, false, bq);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if ((!bq && top) && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.links[cap[1].toLowerCase()] = {\n href: cap[2],\n title: cap[3]\n };\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i]\n .replace(/^ *\\| *| *\\| *$/g, '')\n .split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n autolink: /^<([^ >]+(@|:\\/)[^ >]+)>/,\n url: noop,\n tag: /^|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^\\b_((?:[^_]|__)+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n code: /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n text: /^[\\s\\S]+?(?=[\\\\?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\ninline.link = replace(inline.link)\n ('inside', inline._inside)\n ('href', inline._href)\n ();\n\ninline.reflink = replace(inline.reflink)\n ('inside', inline._inside)\n ();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: replace(inline.escape)('])', '~|])')(),\n url: /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n text: replace(inline.text)\n (']|', '~]|')\n ('|', '|https?://|')\n ()\n});\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: replace(inline.br)('{2,}', '*')(),\n text: replace(inline.gfm.text)('{2,}', '*')()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer;\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new\n Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n var out = ''\n , link\n , text\n , href\n , cap;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += cap[1];\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = cap[1].charAt(6) === ':'\n ? this.mangle(cap[1].substring(7))\n : this.mangle(cap[1]);\n href = this.mangle('mailto:') + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n src = src.substring(cap[0].length);\n text = escape(cap[1]);\n href = text;\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^/i.test(cap[0])) {\n this.inLink = false;\n }\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0]\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out += this.outputLink(cap, {\n href: cap[2],\n title: cap[3]\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2], true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = escape(link.href)\n , title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = ''\n , l = text.length\n , i = 0\n , ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || {};\n}\n\nRenderer.prototype.code = function(code, lang, escaped) {\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '\\n
    ';\n }\n\n return '
    '\n    + (escaped ? code : escape(code, true))\n    + '\\n
    \\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '
    \\n' + quote + '
    \\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw) {\n return ''\n + text\n + '\\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n};\n\nRenderer.prototype.list = function(body, ordered) {\n var type = ordered ? 'ol' : 'ul';\n return '<' + type + '>\\n' + body + '\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '
  • ' + text + '
  • \\n';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '

    ' + text + '

    \\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + '\\n'\n + body\n + '\\n'\n + '
    \\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '\\n' + content + '\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' style=\"text-align:' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.em = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? '
    ' : '
    ';\n};\n\nRenderer.prototype.del = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n if (this.options.sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return '';\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0) {\n return '';\n }\n }\n var out = '
    ';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n var out = '\"'' : '>';\n return out;\n};\n\nRenderer.prototype.text = function(text) {\n return text;\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer;\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options, renderer) {\n var parser = new Parser(options, renderer);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options, this.renderer);\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n this.token.text);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = ''\n , body = ''\n , i\n , row\n , cell\n , flags\n , j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n flags = { header: true, align: this.token.align[i] };\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n var body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n var body = ''\n , ordered = this.token.ordered;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered);\n }\n case 'list_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'loose_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'html': {\n var html = !this.token.pre && !this.options.pedantic\n ? this.inline.output(this.token.text)\n : this.token.text;\n return this.renderer.html(html);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n }\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n return html\n .replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\nfunction unescape(html) {\n\t// explicitly match decimal, hex, and named HTML entities \n return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/g, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction replace(regex, opt) {\n regex = regex.source;\n opt = opt || '';\n return function self(name, val) {\n if (!name) return new RegExp(regex, opt);\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return self;\n };\n}\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1\n , target\n , key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n\n var highlight = opt.highlight\n , tokens\n , pending\n , i = 0;\n\n try {\n tokens = Lexer.lex(src, opt)\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/chjj/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occured:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n sanitizer: null,\n mangle: true,\n smartLists: false,\n silent: false,\n highlight: null,\n langPrefix: 'lang-',\n smartypants: false,\n headerPrefix: '',\n renderer: new Renderer,\n xhtml: false\n};\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.parse = marked;\n\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n this.marked = marked;\n}\n\n}).call(function() {\n return this || (typeof window !== 'undefined' ? window : global);\n}());\n","import marked from 'marked';\n\nmarked.setOptions({\n gfm: true,\n smartypants: true\n});\n\nexport default function(dom, data) {\n let markdownElements = [].slice.call(dom.querySelectorAll('[markdown]'));\n markdownElements.forEach(el => {\n let content = el.innerHTML;\n // Set default indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n\n el.innerHTML = marked(content);\n });\n}\n","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = _self.Prism = {\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/ text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\tbreak tokenloop;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t delNum = 1;\n\n\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t to = match.index + match[0].length,\n\t\t\t\t\t\t k = i,\n\t\t\t\t\t\t p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && p < to; ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t match = match[0].slice(lookbehindLength),\n\t\t\t\t\t to = from + match.length,\n\t\t\t\t\t before = str.slice(0, from),\n\t\t\t\t\t after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (env.type == 'comment') {\n\t\tenv.attributes['spellcheck'] = 'true';\n\t}\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n \t// In worker\n\t_self.addEventListener('message', function(evt) {\n\t\tvar message = JSON.parse(evt.data),\n\t\t lang = message.language,\n\t\t code = message.code,\n\t\t immediateClose = message.immediateClose;\n\n\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\tif (immediateClose) {\n\t\t\t_self.close();\n\t\t}\n\t}, false);\n\n\treturn _self.Prism;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (document.addEventListener && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': //,\n\t'prolog': /<\\?[\\w\\W]+?\\?>/,\n\t'doctype': //i,\n\t'cdata': //i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\w\\W])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:('|\")[\\w\\W]*?(\\1)|[^\\s>]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /[=>\"']/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\w\\W]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^\\{\\}\\s][^\\{\\};]*?(?=\\s*\\{)/,\n\t'string': {\n\t\tpattern: /(\"|')(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'property': /(\\b|\\B)[\\w-]+(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|').*?\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\w\\W]*?\\*\\//,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[a-z0-9_\\.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /(\\.|\\\\)/\n\t\t}\n\t},\n\t'keyword': /\\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(0x[\\dA-Fa-f]+|0b[01]+|0o[0-7]+|\\d*\\.?\\d+([Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*(?=\\()/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*\\*?|\\/|~|\\^|%|\\.{3}/\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[.+?]|\\\\.|[^/\\\\\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\\\\\|\\\\?[^\\\\])*?`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript'\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tif(Array.prototype.forEach) { // Check to prevent error in IE8\n\t\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\t\tvar language, parent = pre;\n\t\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\t\tparent = parent.parentNode;\n\t\t\t\t}\n\n\t\t\t\tif (parent) {\n\t\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t\t}\n\n\t\t\t\tif (!language) {\n\t\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t\t}\n\n\t\t\t\tvar code = document.createElement('code');\n\t\t\t\tcode.className = 'language-' + language;\n\n\t\t\t\tpre.textContent = '';\n\n\t\t\t\tcode.textContent = 'Loading…';\n\n\t\t\t\tpre.appendChild(code);\n\n\t\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\t\txhr.open('GET', src, true);\n\n\t\t\t\txhr.onreadystatechange = function () {\n\t\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\txhr.send(null);\n\t\t\t});\n\t\t}\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\n})();\n","import Prism from \"prismjs\";\n\nexport default function(dom, data) {\n let codeElements = [].slice.call(dom.querySelectorAll(\"dt-code\"));\n codeElements.forEach(el => {\n let content = el.textContent;\n el.innerHTML = \"\";\n let language = el.getAttribute(\"language\");\n let c = dom.createElement(\"code\");\n if (el.getAttribute(\"block\") === \"\") {\n // Let's normalize the tab indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n let p = dom.createElement(\"pre\");\n p.appendChild(c);\n el.appendChild(p);\n } else {\n el.appendChild(c);\n }\n let highlighted = content;\n if (Prism.languages[language]) {\n c.setAttribute(\"class\", \"language-\" + language);\n highlighted = Prism.highlight(content, Prism.languages[language]);\n }\n c.innerHTML = highlighted;\n });\n}\n","export default function(dom, data) {\n\n var textNodes = dom.createTreeWalker(\n dom.body,\n dom.defaultView.NodeFilter.SHOW_TEXT\n );\n while (textNodes.nextNode()) {\n var n = textNodes.currentNode,\n text = n.nodeValue;\n if (text && acceptNode(n)) {\n text = quotes(text);\n text = punctuation(text);\n n.nodeValue = text;\n }\n }\n}\n\nfunction acceptNode(node) {\n var parent = node.parentElement;\n var isMath = (parent && parent.getAttribute && parent.getAttribute(\"class\")) ? parent.getAttribute(\"class\").includes(\"katex\") || parent.getAttribute(\"class\").includes(\"MathJax\") : false;\n return parent &&\n parent.nodeName !== \"SCRIPT\" &&\n parent.nodeName !== \"STYLE\" &&\n parent.nodeName !== \"CODE\" &&\n parent.nodeName !== \"PRE\" &&\n parent.nodeName !== \"SPAN\" &&\n parent.nodeName !== \"DT-HEADER\" &&\n parent.nodeName !== \"DT-BYLINE\" &&\n parent.nodeName !== \"DT-MATH\" &&\n parent.nodeName !== \"DT-CODE\" &&\n parent.nodeName !== \"DT-BIBLIOGRAPHY\" &&\n parent.nodeName !== \"DT-FOOTER\" &&\n parent.nodeType !== 8 && //comment nodes\n !isMath;\n}\n\n\n/*!\n * typeset - Typesetting for the web\n * @version v0.1.6\n * @link https://github.com/davidmerfield/Typeset.js\n * @author David Merfield\n */\n // which has a CC0 license\n // http://creativecommons.org/publicdomain/zero/1.0/\n\n\nfunction punctuation(text){\n\n // Dashes\n text = text.replace(/--/g, '\\u2014');\n text = text.replace(/ \\u2014 /g,\"\\u2009\\u2014\\u2009\"); //this has thin spaces\n\n // Elipses\n text = text.replace(/\\.\\.\\./g,'…');\n\n // Nbsp for punc with spaces\n var NBSP = \"\\u00a0\";\n var NBSP_PUNCTUATION_START = /([«¿¡]) /g;\n var NBSP_PUNCTUATION_END = / ([\\!\\?:;\\.,‽»])/g;\n\n text = text.replace(NBSP_PUNCTUATION_START, '$1' + NBSP);\n text = text.replace(NBSP_PUNCTUATION_END, NBSP + '$1');\n\n return text;\n}\n\nfunction quotes(text) {\n\n text = text\n .replace(/(\\W|^)\"([^\\s\\!\\?:;\\.,‽»])/g, '$1\\u201c$2') // beginning \"\n .replace(/(\\u201c[^\"]*)\"([^\"]*$|[^\\u201c\"]*\\u201c)/g, '$1\\u201d$2') // ending \"\n .replace(/([^0-9])\"/g,'$1\\u201d') // remaining \" at end of word\n .replace(/(\\W|^)'(\\S)/g, '$1\\u2018$2') // beginning '\n .replace(/([a-z])'([a-z])/ig, '$1\\u2019$2') // conjunction's possession\n .replace(/((\\u2018[^']*)|[a-z])'([^0-9]|$)/ig, '$1\\u2019$3') // ending '\n .replace(/(\\u2018)([0-9]{2}[^\\u2019]*)(\\u2018([^0-9]|$)|$|\\u2019[a-z])/ig, '\\u2019$2$3') // abbrev. years like '93\n .replace(/(\\B|^)\\u2018(?=([^\\u2019]*\\u2019\\b)*([^\\u2019\\u2018]*\\W[\\u2019\\u2018]\\b|[^\\u2019\\u2018]*$))/ig, '$1\\u2019') // backwards apostrophe\n .replace(/'''/g, '\\u2034') // triple prime\n .replace(/(\"|'')/g, '\\u2033') // double prime\n .replace(/'/g, '\\u2032');\n\n // Allow escaped quotes\n text = text.replace(/\\\\“/, '\\\"');\n text = text.replace(/\\\\”/, '\\\"');\n text = text.replace(/\\\\’/, '\\'');\n text = text.replace(/\\\\‘/, '\\'');\n\n return text;\n}\n\nfunction ligatures(text){\n\n text = text.replace(/fi/g, 'fi');\n text = text.replace(/fl/g, 'fl');\n\n return text;\n};\n","import code from './hover-box.txt';\n\nexport default function(dom) {\n let s = dom.createElement(\"script\");\n s.textContent = code;\n dom.querySelector(\"body\").appendChild(s);\n}\n","//import xml from \"xml\";\n\nexport default function(data) {\n\n\n var date = data.publishedDate;\n\n var batch_timestamp = Math.floor(Date.now() / 1000);\n var batch_id = data.authors.length ? data.authors[0].lastName.toLowerCase().slice(0,20) : \"Anonymous\";\n batch_id += \"_\" + date.getFullYear();\n batch_id += \"_\" + data.title.split(\" \")[0].toLowerCase().slice(0,20) + \"_\" + batch_timestamp;\n // generate XML\n var crf_data =\n {doi_batch : [\n\n { _attr: {\n version: \"4.3.7\",\n xmlns: \"http://www.crossref.org/schema/4.3.7\",\n \"xmlns:xsi\": \"http://www.w3.org/2001/XMLSchema-instance\",\n \"xsi:schemaLocation\": \"http://www.crossref.org/schema/4.3.7 http://www.crossref.org/schemas/crossref4.3.7.xsd\",\n }},\n\n { head: [\n {doi_batch_id: batch_id},\n {timestamp: batch_timestamp},\n {depositor: [\n {depositor_name: data.journal.publisherName},\n {email_address: data.journal.publisherEmail},\n ]},\n {registrant: data.journal.publisherName},\n ]},\n\n {body: [\n {journal: [\n\n {journal_metadata: [\n {full_title: data.journal.full_title || data.journal.title},\n {abbrev_title: data.journal.abbrev_title || data.journal.title || data.journal.full_title},\n {issn: data.journal.issn},\n {doi_data: [\n {doi: data.journal.doi},\n {resource: data.journal.url},\n ]},\n ]},\n\n {journal_issue: [\n {publication_date: [\n {month: date.getMonth()+1},\n {year: date.getFullYear()},\n ]},\n {journal_volume: [\n {volume: data.volume},\n ]},\n {issue: data.issue},\n ]},\n\n {journal_article: [\n {titles: [\n {title: data.title},\n ]},\n { contributors:\n data.authors.map((author, ind) => (\n {person_name: [\n { _attr: {\n contributor_role: \"author\",\n sequence: (ind == 0)? \"first\" : \"additional\"\n }},\n {given_name: author.firstName},\n {surname: author.lastName},\n {affiliation: author.affiliation}\n // TODO: ORCID?\n ]}\n ))\n },\n {publication_date: [\n {month: date.getMonth()+1},\n {day: date.getDate()},\n {year: date.getFullYear()}\n ]},\n { publisher_item: [\n {item_number: data.doi}\n ]},\n {doi_data: [\n {doi: data.doi},\n //{timestamp: \"\"},\n {resource: data.url},\n ]},\n {citation_list:\n data.citations.map(key =>\n citation_xml(key, data.bibliography[key]))\n }\n\n ]},\n\n ]},\n ]},\n ]};\n\n return xml(crf_data);\n}\n\nfunction citation_xml(key, ent){\n if (ent == undefined) return {};\n var info = [];\n info.push({_attr: {key: key}});\n if (\"title\" in ent)\n info.push({article_title: ent.title});\n if (\"author\" in ent)\n info.push({author: ent.author.split(\" and \")[0].split(\",\")[0].trim()});\n if (\"journal\" in ent)\n info.push({journal_title: ent.journal});\n if (\"booktitle\" in ent)\n info.push({volume_title: ent.booktitle});\n if (\"volume\" in ent)\n info.push({volume: ent.volume});\n if (\"issue\" in ent)\n info.push({issue: ent.issue});\n if (\"doi\" in ent)\n info.push({doi: ent.doi});\n return {citation: info}\n}\n\nfunction xml(obj) {\n //console.log(typeof(obj), obj)\n if (typeof obj === 'string') return obj;\n if (typeof obj === 'number') return \"\"+obj;\n let keys = Object.keys(obj);\n if (keys.length != 1) console.error(\"can't interpret \", obj, \"as xml\");\n let name = keys[0];\n var full_content = obj[name];\n var attr = {};\n if (Array.isArray(full_content)){\n var content = [];\n for (var i in full_content) {\n var obj = full_content[i];\n var obj_name = Object.keys(obj)[0];\n if (\"_attr\" == obj_name) {\n attr = obj[\"_attr\"];\n } else {\n //console.log(Object.keys(obj)[0])\n content.push(obj);\n }\n }\n } else {\n content = full_content;\n }\n if (content == undefined){\n content = \"undefined\"\n }\n\n let attr_string = \"\";\n for (var k in attr) {\n attr_string += ` ${k}=\\\"${attr[k]}\\\"`\n }\n\n //console.log(typeof content, Array.isArray(content), content instanceof String, content)\n if (Array.isArray(content)){\n content = content.map(xml);\n content = content.join(\"\\n\").split(\"\\n\");\n content = content.map(s => \" \" + s).join(\"\\n\")\n var result = `<${name}${attr_string}>\\n${content}\\n`;\n } else {\n content = xml(content);\n var result = `<${name}${attr_string}>${content}`;\n }\n return result;\n}\n","import logo from \"./distill-logo.svg\";\n\nconst html = `\n\n\n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-header\");\n if(el) {\n el.innerHTML = html;\n } else {\n let header = dom.createElement(\"dt-header\");\n header.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(header, b.firstChild);\n }\n}\n","import logo from \"./distill-logo.svg\";\n\nlet html = `\n\n\n
    \n
    \n \n ${logo}\n Distill\n \n is dedicated to clear explanations of machine learning\n
    \n
    \n About\n Submit\n Prize\n RSS\n Twitter\n
    \n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-footer\");\n if(el) {\n el.innerHTML = html;\n } else {\n let footer = dom.createElement(\"dt-footer\");\n footer.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.appendChild(footer);\n }\n}\n","import html from \"./components/html\";\nimport styles from \"./components/styles\";\nimport frontMatter from \"./components/front-matter\";\nimport bibliography from \"./components/bibliography\";\nimport expandData from \"./components/expand-data\";\nimport meta from \"./components/meta\";\nimport banner from \"./components/banner\";\nimport byline from \"./components/byline\";\nimport appendix from \"./components/appendix\";\nimport citation from \"./components/citation\";\nimport footnote from \"./components/footnote\";\nimport markdown from \"./components/markdown\";\nimport code from \"./components/code\";\nimport typeset from \"./components/typeset\";\nimport hoverBox from \"./components/hover-box-include\";\nimport generateCrossref from \"./components/generate-crossref\";\nimport header from \"./components/header\";\nimport footer from \"./components/footer\";\n\nfunction renderImmediately(dom) {\n html(dom);\n styles(dom);\n}\n\nfunction renderOnLoad(dom, data) {\n frontMatter(dom, data);\n bibliography(dom, data);\n expandData(dom, data);\n meta(dom, data);\n byline(dom, data);\n appendix(dom, data);\n markdown(dom, data);\n code(dom, data);\n citation(dom, data);\n footnote(dom, data);\n typeset(dom, data);\n hoverBox(dom, data);\n}\n\n// If we are in a browser, render automatically...\nif(window && window.document) {\n let data = {};\n renderImmediately(window.document);\n window.document.addEventListener(\"DOMContentLoaded\", (event) => {\n renderOnLoad(window.document, data);\n // Add a banner if we're not on localhost.\n if (window.location.hostname !== \"localhost\" && window.location.origin !== \"file://\") {\n banner(window.document, data);\n }\n generateCrossref(data);\n });\n}\n\n// If we are in node...\nfunction render(dom, data) {\n renderImmediately(dom);\n renderOnLoad(dom, data);\n // Remove script tag so it doesn't run again in the client\n let s = dom.querySelector('script[src*=\"distill.pub/template\"]');\n if (s) { s.parentElement.removeChild(s); };\n}\n\n// Distill specific rendering\nfunction distillify(dom, data) {\n header(dom, data);\n footer(dom, data);\n}\n\nexport {render as render};\nexport {distillify as distillify};\nexport {generateCrossref as generateCrossref};\n"],"names":["let","meta","YAMLException","common","require$$0","Mark","this","Type","require$$1","require$$2","type","arguments","Schema","require$$3","require$$4","require$$5","require","_hasOwnProperty","_toString","require$$6","require$$7","_require","DEFAULT_SAFE_SCHEMA","DEFAULT_FULL_SCHEMA","loadAll","load","safeLoadAll","safeLoad","State","dump","safeDump","require$$8","require$$9","ymlParse","interval","day","timeDay","timeYear","timeSunday","timeMonday","locale","escape","const","html","define","global","Prism","code","render"],"mappings":"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"} \ No newline at end of file From 4bd4c4dcf9afaf45391412d6d09e8d1f3e1cf4bb Mon Sep 17 00:00:00 2001 From: Shan Carter Date: Wed, 22 Mar 2017 09:24:37 -0700 Subject: [PATCH 12/42] fixing urls --- components/expand-data.js | 6 +++++- dist/template.js | 6 +++++- dist/template.js.map | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/components/expand-data.js b/components/expand-data.js index e7f391a..caa1aa6 100644 --- a/components/expand-data.js +++ b/components/expand-data.js @@ -5,7 +5,11 @@ export default function(dom, data) { data.authors = data.authors || []; // paths - data.url = data.url ? data.url : "http://distill.pub/" + data.distillPath; + if (!data.distillPath && !data.url) { + data.url = "http://distill.pub/"; + } else if (!data.url) { + data.url = "http://distill.pub/" + data.distillPath; + } data.githubUrl = "https://github.com/" + data.githubPath; data.previewURL = data.previewURL ? data.previewURL : data.url + "/thumbnail.jpg" diff --git a/dist/template.js b/dist/template.js index b7e3830..fe1a66f 100644 --- a/dist/template.js +++ b/dist/template.js @@ -5092,7 +5092,11 @@ var expandData = function(dom, data) { data.authors = data.authors || []; // paths - data.url = data.url ? data.url : "http://distill.pub/" + data.distillPath; + if (!data.distillPath && !data.url) { + data.url = "http://distill.pub/"; + } else if (!data.url) { + data.url = "http://distill.pub/" + data.distillPath; + } data.githubUrl = "https://github.com/" + data.githubPath; data.previewURL = data.previewURL ? data.previewURL : data.url + "/thumbnail.jpg"; diff --git a/dist/template.js.map b/dist/template.js.map index 9467022..e31ec06 100644 --- a/dist/template.js.map +++ b/dist/template.js.map @@ -1 +1 @@ -{"version":3,"file":null,"sources":["../components/html.js","../components/styles.js","../node_modules/js-yaml/lib/js-yaml/common.js","../node_modules/js-yaml/lib/js-yaml/exception.js","../node_modules/js-yaml/lib/js-yaml/mark.js","../node_modules/js-yaml/lib/js-yaml/type.js","../node_modules/js-yaml/lib/js-yaml/schema.js","../node_modules/js-yaml/lib/js-yaml/type/str.js","../node_modules/js-yaml/lib/js-yaml/type/seq.js","../node_modules/js-yaml/lib/js-yaml/type/map.js","../node_modules/js-yaml/lib/js-yaml/schema/failsafe.js","../node_modules/js-yaml/lib/js-yaml/type/null.js","../node_modules/js-yaml/lib/js-yaml/type/bool.js","../node_modules/js-yaml/lib/js-yaml/type/int.js","../node_modules/js-yaml/lib/js-yaml/type/float.js","../node_modules/js-yaml/lib/js-yaml/schema/json.js","../node_modules/js-yaml/lib/js-yaml/schema/core.js","../node_modules/js-yaml/lib/js-yaml/type/timestamp.js","../node_modules/js-yaml/lib/js-yaml/type/merge.js","../node_modules/js-yaml/lib/js-yaml/type/binary.js","../node_modules/js-yaml/lib/js-yaml/type/omap.js","../node_modules/js-yaml/lib/js-yaml/type/pairs.js","../node_modules/js-yaml/lib/js-yaml/type/set.js","../node_modules/js-yaml/lib/js-yaml/schema/default_safe.js","../node_modules/js-yaml/lib/js-yaml/type/js/undefined.js","../node_modules/js-yaml/lib/js-yaml/type/js/regexp.js","../node_modules/js-yaml/lib/js-yaml/type/js/function.js","../node_modules/js-yaml/lib/js-yaml/schema/default_full.js","../node_modules/js-yaml/lib/js-yaml/loader.js","../node_modules/js-yaml/lib/js-yaml/dumper.js","../node_modules/js-yaml/lib/js-yaml.js","../node_modules/js-yaml/index.js","../components/front-matter.js","../node_modules/bibtex-parse-js/bibtexParse.js","../components/bibliography.js","../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/utcMinute.js","../node_modules/d3-time/src/utcHour.js","../node_modules/d3-time/src/utcDay.js","../node_modules/d3-time/src/utcWeek.js","../node_modules/d3-time/src/utcMonth.js","../node_modules/d3-time/src/utcYear.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-time-format/src/isoFormat.js","../node_modules/d3-time-format/src/isoParse.js","../components/expand-data.js","../../node_modules/escape-html/index.js","../components/meta.js","../components/banner.js","../node_modules/mustache/mustache.js","../components/byline.js","../components/appendix.js","../components/citation.js","../components/footnote.js","../node_modules/marked/lib/marked.js","../components/markdown.js","../node_modules/prismjs/prism.js","../components/code.js","../components/typeset.js","../components/hover-box-include.js","../components/generate-crossref.js","../components/header.js","../components/footer.js","../index.js"],"sourcesContent":["export default function(dom) {\n if (!dom.querySelector(\"html\").getAttribute(\"lang\")) {\n dom.querySelector(\"html\").setAttribute(\"lang\", \"en\")\n }\n\n let head = dom.querySelector(\"head\");\n\n if (!dom.querySelector(\"meta[charset]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"charset\", \"utf-8\");\n head.appendChild(meta);\n }\n if (!dom.querySelector(\"meta[name=viewport]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"name\", \"viewport\");\n meta.setAttribute(\"content\", \"width=device-width, initial-scale=1\");\n head.appendChild(meta);\n }\n}\n","import base from './styles-base.css';\nimport layout from './styles-layout.css';\nimport article from './styles-article.css';\nimport code from './styles-code.css';\nimport print from './styles-print.css';\n\nexport default function(dom) {\n let s = dom.createElement(\"style\");\n s.textContent = base + layout + article + code + print;\n dom.querySelector(\"head\").appendChild(s);\n}\n","'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n var result = this.name + ': ';\n\n result += this.reason || '(unknown reason)';\n\n if (!compact && this.mark) {\n result += ' ' + this.mark.toString();\n }\n\n return result;\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n\nvar common = require('./common');\n\n\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\n\n\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head, start, tail, end, snippet;\n\n if (!this.buffer) return null;\n\n indent = indent || 4;\n maxLength = maxLength || 75;\n\n head = '';\n start = this.position;\n\n while (start > 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n\n tail = '';\n end = this.position;\n\n while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n\n snippet = this.buffer.slice(start, end);\n\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' +\n common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\n\nMark.prototype.toString = function toString(compact) {\n var snippet, where = '';\n\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n if (!compact) {\n snippet = this.getSnippet();\n\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n\n return where;\n};\n\n\nmodule.exports = Mark;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name, result) {\n var exclude = [];\n\n schema.include.forEach(function (includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n\n schema[name].forEach(function (currentType) {\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n exclude.push(previousIndex);\n }\n });\n\n result.push(currentType);\n });\n\n return result.filter(function (type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {}\n }, index, length;\n\n function collectType(type) {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n\n this.implicit.forEach(function (type) {\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n });\n\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\n\nSchema.DEFAULT = null;\n\n\nSchema.create = function createSchema() {\n var schemas, types;\n\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n\n if (!schemas.every(function (schema) { return schema instanceof Schema; })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n\n if (!types.every(function (type) { return type instanceof Type; })) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n return new Schema({\n include: schemas,\n explicit: types\n });\n};\n\n\nmodule.exports = Schema;\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 8\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 10 (except 0) or base 60\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch === ':') break;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n if (!hasDigits) return false;\n\n // if !base60 - done;\n if (ch !== ':') return true;\n\n // base60 almost not used, no needs to optimize\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch, base, digits = [];\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value, 16);\n return sign * parseInt(value, 8);\n }\n\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseInt(v, 10));\n });\n\n value = 0;\n base = 1;\n\n digits.forEach(function (d) {\n value += (d * base);\n base *= 60;\n });\n\n return sign * value;\n\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (object) { return '0b' + object.toString(2); },\n octal: function (object) { return '0' + object.toString(8); },\n decimal: function (object) { return object.toString(10); },\n hexadecimal: function (object) { return '0x' + object.toString(16).toUpperCase(); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n '^(?:[-+]?(?:[0-9][0-9_]*)\\\\.[0-9_]*(?:[eE][-+][0-9]+)?' +\n '|\\\\.[0-9_]+(?:[eE][-+][0-9]+)?' +\n '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' +\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data)) return false;\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign, base, digits;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n\n } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n\n value = 0.0;\n base = 1;\n\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n\n return sign * value;\n\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./failsafe')\n ],\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./json')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\nvar NodeBuffer;\n\ntry {\n // A trick for browserified version, to not include `Buffer` shim\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n // Wrap into Buffer for NodeJS and leave Array for browser\n if (NodeBuffer) return new NodeBuffer(result);\n\n return result;\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./core')\n ],\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n return true;\n}\n\nfunction constructJavascriptUndefined() {\n /*eslint-disable no-undefined*/\n return undefined;\n}\n\nfunction representJavascriptUndefined() {\n return '';\n}\n\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n if (data === null) return false;\n if (data.length === 0) return false;\n\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // if regexp starts with '/' it can have modifiers and must be properly closed\n // `/foo/gim` - modifiers tail can be maximum 3 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n\n if (modifiers.length > 3) return false;\n // if expression starts with /, is should be properly terminated\n if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n }\n\n return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // `/foo/gim` - tail can be maximum 4 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n\n return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object /*, style*/) {\n var result = '/' + object.source + '/';\n\n if (object.global) result += 'g';\n if (object.multiline) result += 'm';\n if (object.ignoreCase) result += 'i';\n\n return result;\n}\n\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n","'use strict';\n\nvar esprima;\n\n// Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n// If not found - try to fallback to window.esprima. If not\n// found too - then fail to parse.\n//\ntry {\n // workaround to exclude package from browserify list.\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n /*global window */\n if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n if (data === null) return false;\n\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true });\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction constructJavascriptFunction(data) {\n /*jslint evil:true*/\n\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true }),\n params = [],\n body;\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n throw new Error('Failed to resolve function');\n }\n\n ast.body[0].expression.params.forEach(function (param) {\n params.push(param.name);\n });\n\n body = ast.body[0].expression.body.range;\n\n // Esprima's ranges include the first '{' and the last '}' characters on\n // function expressions. So cut them out.\n /*eslint-disable no-new-func*/\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n}\n\nfunction representJavascriptFunction(object /*, style*/) {\n return object.toString();\n}\n\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n","// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [\n require('./default_safe')\n ],\n explicit: [\n require('../type/js/undefined'),\n require('../type/js/regexp'),\n require('../type/js/function')\n ]\n});\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00);\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n return new YAMLException(\n message,\n new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length;\n _position < _length;\n _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode) {\n var index, quantity;\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n throwError(state, 'duplicated mapping key');\n }\n _result[keyNode] = valueNode;\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else {\n break; // Reading is done. Go to the epilogue.\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if (state.lineIndent > nodeIndent && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!state.anchorMap.hasOwnProperty(alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag !== null && state.tag !== '!') {\n if (state.tag === '?') {\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length;\n typeIndex < typeQuantity;\n typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only assigned to plain scalars. So, it isn't\n // needed to check for 'kind' conformity.\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = {};\n state.anchorMap = {};\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n var documents = loadDocuments(input, options), index, length;\n\n for (index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nfunction safeLoadAll(input, output, options) {\n loadAll(input, output, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nfunction safeLoad(input, options) {\n return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// Simplified test for values allowed after the first character in plain style.\nfunction isPlainSafe(c) {\n // Uses a subset of nb-char - c-flow-indicator - \":\" - \"#\"\n // where nb-char ::= c-printable - b-char - c-byte-order-mark.\n return isPrintable(c) && c !== 0xFEFF\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // - \":\" - \"#\"\n && c !== CHAR_COLON\n && c !== CHAR_SHARP;\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n return isPrintable(c) && c !== 0xFEFF\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {\n var i;\n var char;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(string.charCodeAt(0))\n && !isWhitespace(string.charCodeAt(string.length - 1));\n\n if (singleLineOnly) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n return plain && !testAmbiguousType(string)\n ? STYLE_PLAIN : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (string[0] === ' ' && indentPerLevel > 9) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey) {\n state.dump = (function () {\n if (string.length === 0) {\n return \"''\";\n }\n if (!state.noCompatMode &&\n DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n return \"'\" + string + \"'\";\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = (string[0] === ' ') ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char;\n var escapeSeq;\n\n for (var i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n result += !escapeSeq && isPrintable(char)\n ? string[i]\n : escapeSeq || encodeHex(char);\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level, object[index], false, false)) {\n if (index !== 0) _result += ', ';\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || index !== 0) {\n _result += generateNextLine(state, level);\n }\n _result += '- ' + state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (index !== 0) pairBuffer += ', ';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + ': ';\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || index !== 0) {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n state.tag = explicit ? type.tag : '?';\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n writeBlockSequence(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey);\n }\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n state.dump = '!<' + state.tag + '> ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n if (writeNode(state, 0, input, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nfunction safeDump(input, options) {\n return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n","'use strict';\n\n\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\n\n\nfunction deprecated(name) {\n return function () {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\n\n\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\n\n// Deprecated schema names from JS-YAML 2.0.x\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\n\n// Deprecated functions from JS-YAML 1.x.x\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","'use strict';\n\n\nvar yaml = require('./lib/js-yaml.js');\n\n\nmodule.exports = yaml;\n","import ymlParse from \"js-yaml\";\n\nexport default function(dom, data) {\n let localData = {};\n let el = dom.querySelector('script[type=\"text/front-matter\"]');\n if (el) {\n let text = el.textContent;\n localData = ymlParse.safeLoad(text);\n }\n\n data.title = localData.title ? localData.title : \"Untitled\";\n data.description = localData.description ? localData.description : \"No description.\";\n\n data.authors = localData.authors ? localData.authors : [];\n\n data.authors = data.authors.map((author, i) =>{\n let a = {};\n let name = Object.keys(author)[0];\n if ((typeof author) === \"string\") {\n name = author;\n } else {\n a.personalURL = author[name];\n }\n let names = name.split(\" \");\n a.name = name;\n a.firstName = names.slice(0, names.length - 1).join(\" \");\n a.lastName = names[names.length -1];\n if(localData.affiliations[i]) {\n let affiliation = Object.keys(localData.affiliations[i])[0];\n if ((typeof localData.affiliations[i]) === \"string\") {\n affiliation = localData.affiliations[i]\n } else {\n a.affiliationURL = localData.affiliations[i][affiliation];\n }\n a.affiliation = affiliation;\n }\n return a;\n });\n \n\n}\n","/* start bibtexParse 0.0.22 */\n\n//Original work by Henrik Muehe (c) 2010\n//\n//CommonJS port by Mikola Lysenko 2013\n//\n//Port to Browser lib by ORCID / RCPETERS\n//\n//Issues:\n//no comment handling within strings\n//no string concatenation\n//no variable values yet\n//Grammar implemented here:\n//bibtex -> (string | preamble | comment | entry)*;\n//string -> '@STRING' '{' key_equals_value '}';\n//preamble -> '@PREAMBLE' '{' value '}';\n//comment -> '@COMMENT' '{' value '}';\n//entry -> '@' key '{' key ',' key_value_list '}';\n//key_value_list -> key_equals_value (',' key_equals_value)*;\n//key_equals_value -> key '=' value;\n//value -> value_quotes | value_braces | key;\n//value_quotes -> '\"' .*? '\"'; // not quite\n//value_braces -> '{' .*? '\"'; // not quite\n(function(exports) {\n\n function BibtexParser() {\n \n this.months = [\"jan\", \"feb\", \"mar\", \"apr\", \"may\", \"jun\", \"jul\", \"aug\", \"sep\", \"oct\", \"nov\", \"dec\"];\n this.notKey = [',','{','}',' ','='];\n this.pos = 0;\n this.input = \"\";\n this.entries = new Array();\n\n this.currentEntry = \"\";\n\n this.setInput = function(t) {\n this.input = t;\n };\n\n this.getEntries = function() {\n return this.entries;\n };\n\n this.isWhitespace = function(s) {\n return (s == ' ' || s == '\\r' || s == '\\t' || s == '\\n');\n };\n\n this.match = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n this.pos += s.length;\n } else {\n throw \"Token mismatch, expected \" + s + \", found \"\n + this.input.substring(this.pos);\n };\n this.skipWhitespace(canCommentOut);\n };\n\n this.tryMatch = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n return true;\n } else {\n return false;\n };\n this.skipWhitespace(canCommentOut);\n };\n\n /* when search for a match all text can be ignored, not just white space */\n this.matchAt = function() {\n while (this.input.length > this.pos && this.input[this.pos] != '@') {\n this.pos++;\n };\n\n if (this.input[this.pos] == '@') {\n return true;\n };\n return false;\n };\n\n this.skipWhitespace = function(canCommentOut) {\n while (this.isWhitespace(this.input[this.pos])) {\n this.pos++;\n };\n if (this.input[this.pos] == \"%\" && canCommentOut == true) {\n while (this.input[this.pos] != \"\\n\") {\n this.pos++;\n };\n this.skipWhitespace(canCommentOut);\n };\n };\n\n this.value_braces = function() {\n var bracecount = 0;\n this.match(\"{\", false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '}') {\n if (bracecount > 0) {\n bracecount--;\n } else {\n var end = this.pos;\n this.match(\"}\", false);\n return this.input.substring(start, end);\n };\n } else if (this.input[this.pos] == '{') {\n bracecount++;\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value\";\n };\n };\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.value_comment = function() {\n var str = '';\n var brcktCnt = 0;\n while (!(this.tryMatch(\"}\", false) && brcktCnt == 0)) {\n str = str + this.input[this.pos];\n if (this.input[this.pos] == '{')\n brcktCnt++;\n if (this.input[this.pos] == '}')\n brcktCnt--;\n if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n this.pos++;\n };\n return str;\n };\n\n this.value_quotes = function() {\n this.match('\"', false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '\"') {\n var end = this.pos;\n this.match('\"', false);\n return this.input.substring(start, end);\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n }\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.single_value = function() {\n var start = this.pos;\n if (this.tryMatch(\"{\")) {\n return this.value_braces();\n } else if (this.tryMatch('\"')) {\n return this.value_quotes();\n } else {\n var k = this.key();\n if (k.match(\"^[0-9]+$\"))\n return k;\n else if (this.months.indexOf(k.toLowerCase()) >= 0)\n return k.toLowerCase();\n else\n throw \"Value expected:\" + this.input.substring(start) + ' for key: ' + k;\n \n };\n };\n\n this.value = function() {\n var values = [];\n values.push(this.single_value());\n while (this.tryMatch(\"#\")) {\n this.match(\"#\");\n values.push(this.single_value());\n };\n return values.join(\"\");\n };\n\n this.key = function() {\n var start = this.pos;\n while (true) {\n if (this.pos >= this.input.length) {\n throw \"Runaway key\";\n };\n // а-яА-Я is Cyrillic\n //console.log(this.input[this.pos]);\n if (this.notKey.indexOf(this.input[this.pos]) >= 0) {\n return this.input.substring(start, this.pos);\n } else {\n this.pos++;\n \n };\n };\n };\n\n this.key_equals_value = function() {\n var key = this.key();\n if (this.tryMatch(\"=\")) {\n this.match(\"=\");\n var val = this.value();\n return [ key, val ];\n } else {\n throw \"... = value expected, equals sign missing:\"\n + this.input.substring(this.pos);\n };\n };\n\n this.key_value_list = function() {\n var kv = this.key_equals_value();\n this.currentEntry['entryTags'] = {};\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n while (this.tryMatch(\",\")) {\n this.match(\",\");\n // fixes problems with commas at the end of a list\n if (this.tryMatch(\"}\")) {\n break;\n }\n ;\n kv = this.key_equals_value();\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n };\n };\n\n this.entry_body = function(d) {\n this.currentEntry = {};\n this.currentEntry['citationKey'] = this.key();\n this.currentEntry['entryType'] = d.substring(1);\n this.match(\",\");\n this.key_value_list();\n this.entries.push(this.currentEntry);\n };\n\n this.directive = function() {\n this.match(\"@\");\n return \"@\" + this.key();\n };\n\n this.preamble = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'PREAMBLE';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.comment = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'COMMENT';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.entry = function(d) {\n this.entry_body(d);\n };\n\n this.bibtex = function() {\n while (this.matchAt()) {\n var d = this.directive();\n this.match(\"{\");\n if (d == \"@STRING\") {\n this.string();\n } else if (d == \"@PREAMBLE\") {\n this.preamble();\n } else if (d == \"@COMMENT\") {\n this.comment();\n } else {\n this.entry(d);\n }\n this.match(\"}\");\n };\n };\n };\n \n exports.toJSON = function(bibtex) {\n var b = new BibtexParser();\n b.setInput(bibtex);\n b.bibtex();\n return b.entries;\n };\n\n /* added during hackathon don't hate on me */\n exports.toBibtex = function(json) {\n var out = '';\n for ( var i in json) {\n out += \"@\" + json[i].entryType;\n out += '{';\n if (json[i].citationKey)\n out += json[i].citationKey + ', ';\n if (json[i].entry)\n out += json[i].entry ;\n if (json[i].entryTags) {\n var tags = '';\n for (var jdx in json[i].entryTags) {\n if (tags.length != 0)\n tags += ', ';\n tags += jdx + '= {' + json[i].entryTags[jdx] + '}';\n }\n out += tags;\n }\n out += '}\\n\\n';\n }\n return out;\n \n };\n\n})(typeof exports === 'undefined' ? this['bibtexParse'] = {} : exports);\n\n/* end bibtexParse */\n","import bibtexParse from \"bibtex-parse-js\";\n\nexport default function(dom, data) {\n let el = dom.querySelector('script[type=\"text/bibliography\"]');\n let citations = [];\n let bibliography = {};\n //TODO If we don't have a local element, make a request for the document.\n if (el) {\n let rawBib = el.textContent;\n let parsed = bibtexParse.toJSON(rawBib);\n if(parsed) {\n parsed.forEach(e => {\n for (var k in e.entryTags){\n var val = e.entryTags[k];\n val = val.replace(/[\\t\\n ]+/g, \" \");\n val = val.replace(/{\\\\[\"^`\\.'acu~Hvs]( )?([a-zA-Z])}/g,\n (full, x, char) => char);\n val = val.replace(/{\\\\([a-zA-Z])}/g,\n (full, char) => char);\n e.entryTags[k] = val;\n }\n bibliography[e.citationKey] = e.entryTags;\n bibliography[e.citationKey].type = e.entryType;\n });\n }\n\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach(el => {\n let key = el.getAttribute(\"key\");\n if (key) {\n let citationKeys = key.split(\",\");\n citationKeys.forEach(key => {\n if (citations.indexOf(key) == -1){\n citations.push(key);\n if (!(key in bibliography)){\n console.warn(\"No bibliography entry found for: \" + key);\n }\n }\n });\n }\n });\n }\n data.bibliography = bibliography;\n data.citations = citations;\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(new Date(+start)); while (offseti(start, step), floori(start), start < stop)\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) while (--step >= 0) while (offseti(date, 1), !test(date)) {} // eslint-disable-line no-empty\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(Math.floor(date / durationSecond) * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(Math.floor(date / durationMinute) * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute} from \"./duration\";\n\nvar hour = interval(function(date) {\n var offset = date.getTimezoneOffset() * durationMinute % durationHour;\n if (offset < 0) offset += durationHour;\n date.setTime(Math.floor((+date - offset) / durationHour) * durationHour + offset);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval\";\nimport {durationWeek} from \"./duration\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {timeDay, timeSunday, timeMonday, timeYear, utcDay, utcSunday, utcMonday, utcYear} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"S\": formatSeconds,\n \"U\": formatWeekNumberSunday,\n \"w\": formatWeekdayNumber,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"S\": formatUTCSeconds,\n \"U\": formatUTCWeekNumberSunday,\n \"w\": formatUTCWeekdayNumber,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"S\": parseSeconds,\n \"U\": parseWeekNumberSunday,\n \"w\": parseWeekdayNumber,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0);\n if (i != string.length) return null;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n var day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?:\\:?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekdayNumber(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekdayNumber(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {timeFormat} from \"d3-time-format\";\n\nexport default function(dom, data) {\n\n data.authors = data.authors || [];\n\n // paths\n data.url = data.url ? data.url : \"http://distill.pub/\" + data.distillPath;\n data.githubUrl = \"https://github.com/\" + data.githubPath;\n\n data.previewURL = data.previewURL ? data.previewURL : data.url + \"/thumbnail.jpg\"\n\n // Homepage\n //data.homepage = !post.noHomepage;\n data.journal = data.journal || {};\n\n // Dates\n if (data.publishedDate){//} && data.journal) {\n data.volume = data.publishedDate.getFullYear() - 2015;\n data.issue = data.publishedDate.getMonth() + 1;\n }\n\n data.publishedDate = data.publishedDate ? data.publishedDate : new Date(\"Invalid\");\n data.updatedDate = data.updatedDate ? data.updatedDate : new Date(\"Invalid\");\n\n data.publishedDateRFC\n let RFC = timeFormat(\"%a, %d %b %Y %H:%M:%S %Z\");\n let months = [\"Jan\", \"Feb\", \"March\", \"April\", \"May\", \"June\", \"July\", \"Aug\", \"Sept\", \"Oct\", \"Nov\", \"Dec\"];\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n data.publishedDateRFC = RFC(data.publishedDate);\n data.publishedYear = data.publishedDate.getFullYear();\n data.publishedMonth = months[data.publishedDate.getMonth()];\n data.publishedDay = data.publishedDate.getDate();\n data.publishedMonthPadded = zeroPad(data.publishedDate.getMonth() + 1);\n data.publishedDayPadded = zeroPad(data.publishedDate.getDate());\n data.updatedDateRFC = RFC(data.updatedDate);\n\n if (data.authors.length > 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \", et al.\";\n } else if (data.authors.length === 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \" & \" + data.authors[1].lastName;\n } else if (data.authors.length === 1) {\n data.concatenatedAuthors = data.authors[0].lastName\n }\n\n data.bibtexAuthors = data.authors.map(function(author){\n return author.lastName + \", \" + author.firstName;\n }).join(\" and \");\n\n data.slug = data.authors.length ? data.authors[0].lastName.toLowerCase() + data.publishedYear + data.title.split(\" \")[0].toLowerCase() : \"Untitled\";\n\n}\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","import favicon from './distill-favicon.base64';\nimport escape from 'escape-html';\n\nexport default function(dom, data) {\n let head = dom.querySelector(\"head\");\n let appendHead = html => appendHtml(head, html);\n\n function meta(name, content, force) {\n if (content || force)\n appendHead(` \\n`);\n }\n\n appendHead(`\n \n \n \n \n ${data.title}\n `);\n\n appendHead(`\n \n \n \n `);\n data.authors.forEach((a) => {\n appendHtml(head, `\n `)\n });\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n // if this is a proprer article, generate Google Scholar meta data\n if (data.doiSuffix){\n appendHead(`\n \\n`);\n\n meta(\"citation_title\", data.title);\n //meta(\"citation_fulltext_html_url\", data.url);\n meta(\"citation_volume\", data.volume);\n meta(\"citation_issue\", data.issue);\n meta(\"citation_firstpage\", data.doiSuffix? `e${data.doiSuffix}` : undefined);\n meta(\"citation_doi\", data.doi);\n\n let journal = data.journal || {};\n meta(\"citation_journal_title\", journal.full_title || journal.title);\n meta(\"citation_journal_abbrev\", journal.abbrev_title);\n meta(\"citation_issn\", journal.issn);\n meta(\"citation_publisher\", journal.publisher);\n meta(\"citation_fulltext_world_readable\", \"\", true);\n\n if (data.publishedDate){\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n meta(\"citation_online_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n // Should we do something different here?\n meta(\"citation_publication_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n }\n\n (data.authors || []).forEach((a) => {\n meta(\"citation_author\", `${a.lastName}, ${a.firstName}`);\n meta(\"citation_author_institution\", a.affiliation);\n });\n\n if (data.citations) {\n data.citations.forEach(key => {\n let d = data.bibliography[key];\n if(!d) {\n console.warn(\"No bibliography data fround for \" + key)\n } else {\n meta(\"citation_reference\", citation_meta_content(data.bibliography[key]) )\n };\n });\n }\n }\n}\n\nfunction appendHtml(el, html) {\n el.innerHTML += html;\n}\n\nfunction citation_meta_content(ref){\n // Special test for arxiv\n var content = `citation_title=${ref.title};`;\n\n let name_strings = ref.author.split(\" and \").forEach(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1].trim();\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n content += `citation_author=${firsts} ${last};`;\n });\n\n if (\"year\" in ref) {\n content += `citation_publication_date=${ref.year};`;\n }\n\n var arxiv_id_search = /https?:\\/\\/arxiv\\.org\\/pdf\\/([0-9]*\\.[0-9]*)\\.pdf/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /https?:\\/\\/arxiv\\.org\\/abs\\/([0-9]*\\.[0-9]*)/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /arXiv preprint arXiv:([0-9]*\\.[0-9]*)/.exec(ref.journal);\n if (arxiv_id_search && arxiv_id_search[1]){\n content += `citation_arxiv_id=${arxiv_id_search[1]};`;\n return content;\n }\n if (\"journal\" in ref){\n content += `citation_journal_title=${ref.journal};`;\n }\n if (\"volume\" in ref) {\n content += `citation_volume=${ref.volume};`;\n }\n if (\"issue\" in ref || \"number\" in ref){\n content += `citation_number=${ref.issue || ref.number};`;\n }\n /*content += `citation_first_page=${};`;\n content += `citation_publication_date=${};`;*/\n return content;\n}\n","const html = `\n\n
    This article is a draft, awaiting review for publication in Distill
    \n`;\n\nexport default function(dom, data) {\n let banner = dom.createElement(\"dt-banner\");\n banner.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(banner, b.firstChild);\n banner.addEventListener(\"click\", function() {\n banner.style.display = \"none\";\n });\n}\n","/*!\n * mustache.js - Logic-less {{mustache}} templates with JavaScript\n * http://github.com/janl/mustache.js\n */\n\n/*global define: false Mustache: true*/\n\n(function defineMustache (global, factory) {\n if (typeof exports === 'object' && exports && typeof exports.nodeName !== 'string') {\n factory(exports); // CommonJS\n } else if (typeof define === 'function' && define.amd) {\n define(['exports'], factory); // AMD\n } else {\n global.Mustache = {};\n factory(global.Mustache); // script, wsh, asp\n }\n}(this, function mustacheFactory (mustache) {\n\n var objectToString = Object.prototype.toString;\n var isArray = Array.isArray || function isArrayPolyfill (object) {\n return objectToString.call(object) === '[object Array]';\n };\n\n function isFunction (object) {\n return typeof object === 'function';\n }\n\n /**\n * More correct typeof string handling array\n * which normally returns typeof 'object'\n */\n function typeStr (obj) {\n return isArray(obj) ? 'array' : typeof obj;\n }\n\n function escapeRegExp (string) {\n return string.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n }\n\n /**\n * Null safe way of checking whether or not an object,\n * including its prototype, has a given property\n */\n function hasProperty (obj, propName) {\n return obj != null && typeof obj === 'object' && (propName in obj);\n }\n\n // Workaround for https://issues.apache.org/jira/browse/COUCHDB-577\n // See https://github.com/janl/mustache.js/issues/189\n var regExpTest = RegExp.prototype.test;\n function testRegExp (re, string) {\n return regExpTest.call(re, string);\n }\n\n var nonSpaceRe = /\\S/;\n function isWhitespace (string) {\n return !testRegExp(nonSpaceRe, string);\n }\n\n var entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n function escapeHtml (string) {\n return String(string).replace(/[&<>\"'`=\\/]/g, function fromEntityMap (s) {\n return entityMap[s];\n });\n }\n\n var whiteRe = /\\s*/;\n var spaceRe = /\\s+/;\n var equalsRe = /\\s*=/;\n var curlyRe = /\\s*\\}/;\n var tagRe = /#|\\^|\\/|>|\\{|&|=|!/;\n\n /**\n * Breaks up the given `template` string into a tree of tokens. If the `tags`\n * argument is given here it must be an array with two string values: the\n * opening and closing tags used in the template (e.g. [ \"<%\", \"%>\" ]). Of\n * course, the default is to use mustaches (i.e. mustache.tags).\n *\n * A token is an array with at least 4 elements. The first element is the\n * mustache symbol that was used inside the tag, e.g. \"#\" or \"&\". If the tag\n * did not contain a symbol (i.e. {{myValue}}) this element is \"name\". For\n * all text that appears outside a symbol this element is \"text\".\n *\n * The second element of a token is its \"value\". For mustache tags this is\n * whatever else was inside the tag besides the opening symbol. For text tokens\n * this is the text itself.\n *\n * The third and fourth elements of the token are the start and end indices,\n * respectively, of the token in the original template.\n *\n * Tokens that are the root node of a subtree contain two more elements: 1) an\n * array of tokens in the subtree and 2) the index in the original template at\n * which the closing tag for that section begins.\n */\n function parseTemplate (template, tags) {\n if (!template)\n return [];\n\n var sections = []; // Stack to hold section tokens\n var tokens = []; // Buffer to hold the tokens\n var spaces = []; // Indices of whitespace tokens on the current line\n var hasTag = false; // Is there a {{tag}} on the current line?\n var nonSpace = false; // Is there a non-space char on the current line?\n\n // Strips all whitespace tokens array for the current line\n // if there was a {{#tag}} on it and otherwise only space.\n function stripSpace () {\n if (hasTag && !nonSpace) {\n while (spaces.length)\n delete tokens[spaces.pop()];\n } else {\n spaces = [];\n }\n\n hasTag = false;\n nonSpace = false;\n }\n\n var openingTagRe, closingTagRe, closingCurlyRe;\n function compileTags (tagsToCompile) {\n if (typeof tagsToCompile === 'string')\n tagsToCompile = tagsToCompile.split(spaceRe, 2);\n\n if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)\n throw new Error('Invalid tags: ' + tagsToCompile);\n\n openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\\\s*');\n closingTagRe = new RegExp('\\\\s*' + escapeRegExp(tagsToCompile[1]));\n closingCurlyRe = new RegExp('\\\\s*' + escapeRegExp('}' + tagsToCompile[1]));\n }\n\n compileTags(tags || mustache.tags);\n\n var scanner = new Scanner(template);\n\n var start, type, value, chr, token, openSection;\n while (!scanner.eos()) {\n start = scanner.pos;\n\n // Match any text between tags.\n value = scanner.scanUntil(openingTagRe);\n\n if (value) {\n for (var i = 0, valueLength = value.length; i < valueLength; ++i) {\n chr = value.charAt(i);\n\n if (isWhitespace(chr)) {\n spaces.push(tokens.length);\n } else {\n nonSpace = true;\n }\n\n tokens.push([ 'text', chr, start, start + 1 ]);\n start += 1;\n\n // Check for whitespace on the current line.\n if (chr === '\\n')\n stripSpace();\n }\n }\n\n // Match the opening tag.\n if (!scanner.scan(openingTagRe))\n break;\n\n hasTag = true;\n\n // Get the tag type.\n type = scanner.scan(tagRe) || 'name';\n scanner.scan(whiteRe);\n\n // Get the tag value.\n if (type === '=') {\n value = scanner.scanUntil(equalsRe);\n scanner.scan(equalsRe);\n scanner.scanUntil(closingTagRe);\n } else if (type === '{') {\n value = scanner.scanUntil(closingCurlyRe);\n scanner.scan(curlyRe);\n scanner.scanUntil(closingTagRe);\n type = '&';\n } else {\n value = scanner.scanUntil(closingTagRe);\n }\n\n // Match the closing tag.\n if (!scanner.scan(closingTagRe))\n throw new Error('Unclosed tag at ' + scanner.pos);\n\n token = [ type, value, start, scanner.pos ];\n tokens.push(token);\n\n if (type === '#' || type === '^') {\n sections.push(token);\n } else if (type === '/') {\n // Check section nesting.\n openSection = sections.pop();\n\n if (!openSection)\n throw new Error('Unopened section \"' + value + '\" at ' + start);\n\n if (openSection[1] !== value)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + start);\n } else if (type === 'name' || type === '{' || type === '&') {\n nonSpace = true;\n } else if (type === '=') {\n // Set the tags for the next time around.\n compileTags(value);\n }\n }\n\n // Make sure there are no open sections when we're done.\n openSection = sections.pop();\n\n if (openSection)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + scanner.pos);\n\n return nestTokens(squashTokens(tokens));\n }\n\n /**\n * Combines the values of consecutive text tokens in the given `tokens` array\n * to a single token.\n */\n function squashTokens (tokens) {\n var squashedTokens = [];\n\n var token, lastToken;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n if (token) {\n if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {\n lastToken[1] += token[1];\n lastToken[3] = token[3];\n } else {\n squashedTokens.push(token);\n lastToken = token;\n }\n }\n }\n\n return squashedTokens;\n }\n\n /**\n * Forms the given array of `tokens` into a nested tree structure where\n * tokens that represent a section have two additional items: 1) an array of\n * all tokens that appear in that section and 2) the index in the original\n * template that represents the end of that section.\n */\n function nestTokens (tokens) {\n var nestedTokens = [];\n var collector = nestedTokens;\n var sections = [];\n\n var token, section;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n switch (token[0]) {\n case '#':\n case '^':\n collector.push(token);\n sections.push(token);\n collector = token[4] = [];\n break;\n case '/':\n section = sections.pop();\n section[5] = token[2];\n collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;\n break;\n default:\n collector.push(token);\n }\n }\n\n return nestedTokens;\n }\n\n /**\n * A simple string scanner that is used by the template parser to find\n * tokens in template strings.\n */\n function Scanner (string) {\n this.string = string;\n this.tail = string;\n this.pos = 0;\n }\n\n /**\n * Returns `true` if the tail is empty (end of string).\n */\n Scanner.prototype.eos = function eos () {\n return this.tail === '';\n };\n\n /**\n * Tries to match the given regular expression at the current position.\n * Returns the matched text if it can match, the empty string otherwise.\n */\n Scanner.prototype.scan = function scan (re) {\n var match = this.tail.match(re);\n\n if (!match || match.index !== 0)\n return '';\n\n var string = match[0];\n\n this.tail = this.tail.substring(string.length);\n this.pos += string.length;\n\n return string;\n };\n\n /**\n * Skips all text until the given regular expression can be matched. Returns\n * the skipped string, which is the entire tail if no match can be made.\n */\n Scanner.prototype.scanUntil = function scanUntil (re) {\n var index = this.tail.search(re), match;\n\n switch (index) {\n case -1:\n match = this.tail;\n this.tail = '';\n break;\n case 0:\n match = '';\n break;\n default:\n match = this.tail.substring(0, index);\n this.tail = this.tail.substring(index);\n }\n\n this.pos += match.length;\n\n return match;\n };\n\n /**\n * Represents a rendering context by wrapping a view object and\n * maintaining a reference to the parent context.\n */\n function Context (view, parentContext) {\n this.view = view;\n this.cache = { '.': this.view };\n this.parent = parentContext;\n }\n\n /**\n * Creates a new context using the given view with this context\n * as the parent.\n */\n Context.prototype.push = function push (view) {\n return new Context(view, this);\n };\n\n /**\n * Returns the value of the given name in this context, traversing\n * up the context hierarchy if the value is absent in this context's view.\n */\n Context.prototype.lookup = function lookup (name) {\n var cache = this.cache;\n\n var value;\n if (cache.hasOwnProperty(name)) {\n value = cache[name];\n } else {\n var context = this, names, index, lookupHit = false;\n\n while (context) {\n if (name.indexOf('.') > 0) {\n value = context.view;\n names = name.split('.');\n index = 0;\n\n /**\n * Using the dot notion path in `name`, we descend through the\n * nested objects.\n *\n * To be certain that the lookup has been successful, we have to\n * check if the last object in the path actually has the property\n * we are looking for. We store the result in `lookupHit`.\n *\n * This is specially necessary for when the value has been set to\n * `undefined` and we want to avoid looking up parent contexts.\n **/\n while (value != null && index < names.length) {\n if (index === names.length - 1)\n lookupHit = hasProperty(value, names[index]);\n\n value = value[names[index++]];\n }\n } else {\n value = context.view[name];\n lookupHit = hasProperty(context.view, name);\n }\n\n if (lookupHit)\n break;\n\n context = context.parent;\n }\n\n cache[name] = value;\n }\n\n if (isFunction(value))\n value = value.call(this.view);\n\n return value;\n };\n\n /**\n * A Writer knows how to take a stream of tokens and render them to a\n * string, given a context. It also maintains a cache of templates to\n * avoid the need to parse the same template twice.\n */\n function Writer () {\n this.cache = {};\n }\n\n /**\n * Clears all cached templates in this writer.\n */\n Writer.prototype.clearCache = function clearCache () {\n this.cache = {};\n };\n\n /**\n * Parses and caches the given `template` and returns the array of tokens\n * that is generated from the parse.\n */\n Writer.prototype.parse = function parse (template, tags) {\n var cache = this.cache;\n var tokens = cache[template];\n\n if (tokens == null)\n tokens = cache[template] = parseTemplate(template, tags);\n\n return tokens;\n };\n\n /**\n * High-level method that is used to render the given `template` with\n * the given `view`.\n *\n * The optional `partials` argument may be an object that contains the\n * names and templates of partials that are used in the template. It may\n * also be a function that is used to load partial templates on the fly\n * that takes a single argument: the name of the partial.\n */\n Writer.prototype.render = function render (template, view, partials) {\n var tokens = this.parse(template);\n var context = (view instanceof Context) ? view : new Context(view);\n return this.renderTokens(tokens, context, partials, template);\n };\n\n /**\n * Low-level method that renders the given array of `tokens` using\n * the given `context` and `partials`.\n *\n * Note: The `originalTemplate` is only ever used to extract the portion\n * of the original template that was contained in a higher-order section.\n * If the template doesn't use higher-order sections, this argument may\n * be omitted.\n */\n Writer.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate) {\n var buffer = '';\n\n var token, symbol, value;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n value = undefined;\n token = tokens[i];\n symbol = token[0];\n\n if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate);\n else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate);\n else if (symbol === '>') value = this.renderPartial(token, context, partials, originalTemplate);\n else if (symbol === '&') value = this.unescapedValue(token, context);\n else if (symbol === 'name') value = this.escapedValue(token, context);\n else if (symbol === 'text') value = this.rawValue(token);\n\n if (value !== undefined)\n buffer += value;\n }\n\n return buffer;\n };\n\n Writer.prototype.renderSection = function renderSection (token, context, partials, originalTemplate) {\n var self = this;\n var buffer = '';\n var value = context.lookup(token[1]);\n\n // This function is used to render an arbitrary template\n // in the current context by higher-order sections.\n function subRender (template) {\n return self.render(template, context, partials);\n }\n\n if (!value) return;\n\n if (isArray(value)) {\n for (var j = 0, valueLength = value.length; j < valueLength; ++j) {\n buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate);\n }\n } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {\n buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate);\n } else if (isFunction(value)) {\n if (typeof originalTemplate !== 'string')\n throw new Error('Cannot use higher-order sections without the original template');\n\n // Extract the portion of the original template that the section contains.\n value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);\n\n if (value != null)\n buffer += value;\n } else {\n buffer += this.renderTokens(token[4], context, partials, originalTemplate);\n }\n return buffer;\n };\n\n Writer.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate) {\n var value = context.lookup(token[1]);\n\n // Use JavaScript's definition of falsy. Include empty arrays.\n // See https://github.com/janl/mustache.js/issues/186\n if (!value || (isArray(value) && value.length === 0))\n return this.renderTokens(token[4], context, partials, originalTemplate);\n };\n\n Writer.prototype.renderPartial = function renderPartial (token, context, partials) {\n if (!partials) return;\n\n var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\n if (value != null)\n return this.renderTokens(this.parse(value), context, partials, value);\n };\n\n Writer.prototype.unescapedValue = function unescapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return value;\n };\n\n Writer.prototype.escapedValue = function escapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return mustache.escape(value);\n };\n\n Writer.prototype.rawValue = function rawValue (token) {\n return token[1];\n };\n\n mustache.name = 'mustache.js';\n mustache.version = '2.3.0';\n mustache.tags = [ '{{', '}}' ];\n\n // All high-level mustache.* functions use this writer.\n var defaultWriter = new Writer();\n\n /**\n * Clears all cached templates in the default writer.\n */\n mustache.clearCache = function clearCache () {\n return defaultWriter.clearCache();\n };\n\n /**\n * Parses and caches the given template in the default writer and returns the\n * array of tokens it contains. Doing this ahead of time avoids the need to\n * parse templates on the fly as they are rendered.\n */\n mustache.parse = function parse (template, tags) {\n return defaultWriter.parse(template, tags);\n };\n\n /**\n * Renders the `template` with the given `view` and `partials` using the\n * default writer.\n */\n mustache.render = function render (template, view, partials) {\n if (typeof template !== 'string') {\n throw new TypeError('Invalid template! Template should be a \"string\" ' +\n 'but \"' + typeStr(template) + '\" was given as the first ' +\n 'argument for mustache#render(template, view, partials)');\n }\n\n return defaultWriter.render(template, view, partials);\n };\n\n // This is here for backwards compatibility with 0.4.x.,\n /*eslint-disable */ // eslint wants camel cased function name\n mustache.to_html = function to_html (template, view, partials, send) {\n /*eslint-enable*/\n\n var result = mustache.render(template, view, partials);\n\n if (isFunction(send)) {\n send(result);\n } else {\n return result;\n }\n };\n\n // Export the escaping function so that the user may override it.\n // See https://github.com/janl/mustache.js/issues/244\n mustache.escape = escapeHtml;\n\n // Export these mainly for testing, but also for advanced usage.\n mustache.Scanner = Scanner;\n mustache.Context = Context;\n mustache.Writer = Writer;\n\n return mustache;\n}));\n","import mustache from \"mustache\";\n\nconst html = `\n\n\n`;\n\nconst template = `\n
    \n
    \n {{#authors}}\n
    \n {{#personalURL}}\n {{name}}\n {{/personalURL}}\n {{^personalURL}}\n
    {{name}}
    \n {{/personalURL}}\n {{#affiliation}}\n {{#affiliationURL}}\n {{affiliation}}\n {{/affiliationURL}}\n {{^affiliationURL}}\n
    {{affiliation}}
    \n {{/affiliationURL}}\n {{/affiliation}}\n
    \n {{/authors}}\n
    \n
    \n
    {{publishedMonth}}. {{publishedDay}}
    \n
    {{publishedYear}}
    \n
    \n \n
    Citation:
    \n
    {{concatenatedAuthors}}, {{publishedYear}}
    \n
    \n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-byline');\n if (el) {\n el.innerHTML = html + mustache.render(template, data);\n }\n}\n","const html = `\n\n\n
    \n

    References

    \n \n

    Errors, Reuse, and Citation

    \n

    If you see mistakes or want to suggest changes, please create an issue on GitHub.

    \n

    Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on GitHub. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: “Figure from …”.

    \n

    For attribution in academic contexts, please cite this work as

    \n
    \n  

    BibTeX citation

    \n
    \n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-appendix')\n if (el) {\n let oldHtml = el.innerHTML;\n el.innerHTML = html;\n let div = el.querySelector(\"div.l-body\")\n\n if (dom.querySelector(\"dt-fn\")) {\n div.innerHTML = `

    Footnotes

    ` + div.innerHTML;\n }\n\n div.innerHTML = oldHtml + div.innerHTML;\n if (data.githubCompareUpdatesUrl) {\n div.innerHTML = `

    Updates

    View all changes to this article since it was first published.

    ` + div.innerHTML;\n }\n\n el.querySelector(\"a.github\").setAttribute(\"href\", data.githubUrl);\n el.querySelector(\"a.github-issue\").setAttribute(\"href\", data.githubUrl + \"/issues/new\");\n el.querySelector(\".citation.short\").textContent = data.concatenatedAuthors + \", \" + '\"' + data.title + '\", Distill, ' + data.publishedYear + \".\";\n var bibtex = \"@article{\" + data.slug + \",\\n\";\n bibtex += \" author = {\" + data.bibtexAuthors + \"},\\n\";\n bibtex += \" title = {\" + data.title + \"},\\n\";\n bibtex += \" journal = {Distill},\\n\";\n bibtex += \" year = {\" + data.publishedYear + \"},\\n\";\n bibtex += \" note = {\" + data.url + \"}\\n\";\n bibtex += \"}\";\n el.querySelector(\".citation.long\").textContent = bibtex;\n }\n\n}\n","export default function(dom, data) {\n let css = `\n dt-cite {\n color: hsla(206, 90%, 20%, 0.7);\n }\n dt-cite .citation-number {\n cursor: default;\n white-space: nowrap;\n font-family: -apple-system, BlinkMacSystemFont, \"Roboto\", Helvetica, sans-serif;\n font-size: 75%;\n color: hsla(206, 90%, 20%, 0.7);\n display: inline-block;\n line-height: 1.1em;\n text-align: center;\n position: relative;\n top: -2px;\n margin: 0 2px;\n }\n figcaption dt-cite .citation-number {\n font-size: 11px;\n font-weight: normal;\n top: -2px;\n line-height: 1em;\n }\n `;\n\n let style = dom.createElement(\"style\");\n style.textContent = css;\n dom.querySelector(\"body\").appendChild(style);\n\n let citations = data.citations;\n /*if (data.citations) {\n citations = Object.keys(data.citations).map(c => data.citations[c]);\n citations.sort((a, b) => {\n return a.author.localeCompare(b.author);\n });\n }*/\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach((el,n) => {\n var key = el.getAttribute(\"key\");\n if (key) {\n var keys = key.split(\",\");\n var cite_string = inline_cite_short(keys);\n var cite_hover_str = \"\";\n keys.map((key,n) => {\n if (n>0) cite_hover_str += \"

    \";\n cite_hover_str += hover_cite(data.bibliography[key]);\n });\n cite_hover_str = cite_hover_str.replace(/\"/g, \"'\")\n var orig_string = el.innerHTML;\n if (orig_string != \"\") orig_string += \" \";\n el.innerHTML = `${orig_string}${cite_string}`;\n }\n });\n\n let bibEl = dom.querySelector(\"dt-bibliography\");\n if (bibEl) {\n let ol = dom.createElement(\"ol\");\n citations.forEach(key => {\n let el = dom.createElement(\"li\");\n el.innerHTML = bibliography_cite(data.bibliography[key]);\n ol.appendChild(el);\n })\n bibEl.appendChild(ol);\n }\n\n function inline_cite_short(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var n = data.citations.indexOf(key)+1;\n return \"\"+n;\n } else {\n return \"?\";\n }\n }\n return \"[\"+keys.map(cite_string).join(\", \")+\"]\";\n }\n\n function inline_cite_long(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var ent = data.bibliography[key];\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var year = ent.year;\n if (names.length == 1) return names[0] + \", \" + year;\n if (names.length == 2) return names[0] + \" & \" + names[1] + \", \" + year;\n if (names.length > 2) return names[0] + \", et al., \" + year;\n } else {\n return \"?\";\n }\n }\n return keys.map(cite_string).join(\", \");\n }\n\n function author_string(ent, template, sep, finalSep){\n var names = ent.author.split(\" and \");\n let name_strings = names.map(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1];\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n var initials = \"\";\n if (firsts != undefined) {\n initials = firsts.trim().split(\" \").map(s => s.trim()[0]);\n initials = initials.join(\".\")+\".\";\n }\n return template.replace(\"${F}\", firsts)\n .replace(\"${L}\", last)\n .replace(\"${I}\", initials);\n });\n if (names.length > 1) {\n var str = name_strings.slice(0, names.length-1).join(sep);\n str += (finalSep || sep) + name_strings[names.length-1];\n return str;\n } else {\n return name_strings[0];\n }\n }\n\n function venue_string(ent) {\n var cite = (ent.journal || ent.booktitle || \"\")\n if (\"volume\" in ent){\n var issue = ent.issue || ent.number;\n issue = (issue != undefined)? \"(\"+issue+\")\" : \"\";\n cite += \", Vol \" + ent.volume + issue;\n }\n if (\"pages\" in ent){\n cite += \", pp. \" + ent.pages\n }\n if (cite != \"\") cite += \". \"\n if (\"publisher\" in ent){\n cite += ent.publisher;\n if (cite[cite.length-1] != \".\") cite += \".\";\n }\n return cite;\n }\n\n function link_string(ent){\n if (\"url\" in ent){\n var url = ent.url;\n var arxiv_match = (/arxiv\\.org\\/abs\\/([0-9\\.]*)/).exec(url);\n if (arxiv_match != null){\n url = `http://arxiv.org/pdf/${arxiv_match[1]}.pdf`;\n }\n\n if (url.slice(-4) == \".pdf\"){\n var label = \"PDF\";\n } else if (url.slice(-5) == \".html\") {\n var label = \"HTML\";\n }\n return `  [${label||\"link\"}]`;\n }/* else if (\"doi\" in ent){\n return `  [DOI]`;\n }*/ else {\n return \"\";\n }\n }\n function doi_string(ent, new_line){\n if (\"doi\" in ent) {\n return `${new_line?\"
    \":\"\"} DOI: ${ent.doi}`;\n } else {\n return \"\";\n }\n }\n\n function bibliography_cite(ent, fancy){\n if (ent){\n var cite = \"\" + ent.title + \" \"\n cite += link_string(ent) + \"
    \";\n cite += author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += venue_string(ent);\n cite += doi_string(ent);\n return cite\n /*var cite = author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += \"\" + ent.title + \". \";\n cite += venue_string(ent);\n cite += doi_string(ent);\n cite += link_string(ent);\n return cite*/\n } else {\n return \"?\";\n }\n }\n\n function hover_cite(ent){\n if (ent){\n var cite = \"\";\n cite += \"\" + ent.title + \"\";\n cite += link_string(ent);\n cite += \"
    \"\n\n var a_str = author_string(ent, \"${I} ${L}\", \", \") + \".\";\n var v_str = venue_string(ent).trim() + \" \" + ent.year + \". \" + doi_string(ent, true);\n\n if ((a_str+v_str).length < Math.min(40, ent.title.length)) {\n cite += a_str + \" \" + v_str;\n } else {\n cite += a_str + \"
    \" + v_str;\n }\n return cite;\n } else {\n return \"?\";\n }\n }\n\n\n //https://scholar.google.com/scholar?q=allintitle%3ADocument+author%3Aolah\n function get_GS_URL(ent){\n if (ent){\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var title = ent.title.split(\" \")//.replace(/[,:]/, \"\")\n var url = \"http://search.labs.crossref.org/dois?\"//\"\"https://scholar.google.com/scholar?\"\n url += uris({q: names.join(\" \") + \" \" + title.join(\" \")})\n }\n\n }\n}\n","export default function(dom, data) {\n\n var fnTags = [].slice.apply(dom.querySelectorAll(\"dt-fn\"));\n var fnContent = [];\n fnTags.forEach((el,n) => {\n var content = el.innerHTML;\n fnContent.push(content);\n n = (n+1)+\"\";\n var key = \"fn-\"+n;\n var escaped_content = content.replace(/\"/g, \"'\");\n el.innerHTML = `${n}`;\n });\n\n let fnList = dom.querySelector(\"dt-fn-list\");\n if (fnList) {\n let ol = dom.createElement(\"ol\");\n fnContent.forEach(content => {\n let el = dom.createElement(\"li\");\n el.innerHTML = content;\n ol.appendChild(el);\n })\n fnList.appendChild(ol);\n }\n\n}\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n */\n\n;(function() {\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^( *[-*_]){3,} *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,\n nptable: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n blockquote: /^( *>[^\\n]+(\\n(?!def)[^\\n]+)*\\n*)+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n table: noop,\n paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,\n text: /^[^\\n]+/\n};\n\nblock.bullet = /(?:[*+-]|\\d+\\.)/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = replace(block.item, 'gm')\n (/bull/g, block.bullet)\n ();\n\nblock.list = replace(block.list)\n (/bull/g, block.bullet)\n ('hr', '\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))')\n ('def', '\\\\n+(?=' + block.def.source + ')')\n ();\n\nblock.blockquote = replace(block.blockquote)\n ('def', block.def)\n ();\n\nblock._tag = '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'\n + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'\n + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|[^\\\\w\\\\s@]*@)\\\\b';\n\nblock.html = replace(block.html)\n ('comment', //)\n ('closed', /<(tag)[\\s\\S]+?<\\/\\1>/)\n ('closing', /])*?>/)\n (/tag/g, block._tag)\n ();\n\nblock.paragraph = replace(block.paragraph)\n ('hr', block.hr)\n ('heading', block.heading)\n ('lheading', block.lheading)\n ('blockquote', block.blockquote)\n ('tag', '<' + block._tag)\n ('def', block.def)\n ();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]*?)\\s*\\1 *(?:\\n+|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = replace(block.paragraph)\n ('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n ();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top, bq) {\n var src = src.replace(/^ +$/gm, '')\n , next\n , loose\n , cap\n , bull\n , b\n , item\n , space\n , i\n , l;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic\n ? cap.replace(/\\n+$/, '')\n : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top, true);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n\n this.tokens.push({\n type: 'list_start',\n ordered: bull.length > 1\n });\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n this.tokens.push({\n type: loose\n ? 'loose_item_start'\n : 'list_item_start'\n });\n\n // Recurse.\n this.token(item, false, bq);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if ((!bq && top) && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.links[cap[1].toLowerCase()] = {\n href: cap[2],\n title: cap[3]\n };\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i]\n .replace(/^ *\\| *| *\\| *$/g, '')\n .split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n autolink: /^<([^ >]+(@|:\\/)[^ >]+)>/,\n url: noop,\n tag: /^|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^\\b_((?:[^_]|__)+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n code: /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n text: /^[\\s\\S]+?(?=[\\\\?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\ninline.link = replace(inline.link)\n ('inside', inline._inside)\n ('href', inline._href)\n ();\n\ninline.reflink = replace(inline.reflink)\n ('inside', inline._inside)\n ();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: replace(inline.escape)('])', '~|])')(),\n url: /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n text: replace(inline.text)\n (']|', '~]|')\n ('|', '|https?://|')\n ()\n});\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: replace(inline.br)('{2,}', '*')(),\n text: replace(inline.gfm.text)('{2,}', '*')()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer;\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new\n Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n var out = ''\n , link\n , text\n , href\n , cap;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += cap[1];\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = cap[1].charAt(6) === ':'\n ? this.mangle(cap[1].substring(7))\n : this.mangle(cap[1]);\n href = this.mangle('mailto:') + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n src = src.substring(cap[0].length);\n text = escape(cap[1]);\n href = text;\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^/i.test(cap[0])) {\n this.inLink = false;\n }\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0]\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out += this.outputLink(cap, {\n href: cap[2],\n title: cap[3]\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2], true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = escape(link.href)\n , title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = ''\n , l = text.length\n , i = 0\n , ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || {};\n}\n\nRenderer.prototype.code = function(code, lang, escaped) {\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '\\n
    ';\n }\n\n return '
    '\n    + (escaped ? code : escape(code, true))\n    + '\\n
    \\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '
    \\n' + quote + '
    \\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw) {\n return ''\n + text\n + '\\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n};\n\nRenderer.prototype.list = function(body, ordered) {\n var type = ordered ? 'ol' : 'ul';\n return '<' + type + '>\\n' + body + '\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '
  • ' + text + '
  • \\n';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '

    ' + text + '

    \\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + '\\n'\n + body\n + '\\n'\n + '
    \\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '\\n' + content + '\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' style=\"text-align:' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.em = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? '
    ' : '
    ';\n};\n\nRenderer.prototype.del = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n if (this.options.sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return '';\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0) {\n return '';\n }\n }\n var out = '
    ';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n var out = '\"'' : '>';\n return out;\n};\n\nRenderer.prototype.text = function(text) {\n return text;\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer;\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options, renderer) {\n var parser = new Parser(options, renderer);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options, this.renderer);\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n this.token.text);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = ''\n , body = ''\n , i\n , row\n , cell\n , flags\n , j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n flags = { header: true, align: this.token.align[i] };\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n var body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n var body = ''\n , ordered = this.token.ordered;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered);\n }\n case 'list_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'loose_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'html': {\n var html = !this.token.pre && !this.options.pedantic\n ? this.inline.output(this.token.text)\n : this.token.text;\n return this.renderer.html(html);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n }\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n return html\n .replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\nfunction unescape(html) {\n\t// explicitly match decimal, hex, and named HTML entities \n return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/g, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction replace(regex, opt) {\n regex = regex.source;\n opt = opt || '';\n return function self(name, val) {\n if (!name) return new RegExp(regex, opt);\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return self;\n };\n}\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1\n , target\n , key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n\n var highlight = opt.highlight\n , tokens\n , pending\n , i = 0;\n\n try {\n tokens = Lexer.lex(src, opt)\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/chjj/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occured:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n sanitizer: null,\n mangle: true,\n smartLists: false,\n silent: false,\n highlight: null,\n langPrefix: 'lang-',\n smartypants: false,\n headerPrefix: '',\n renderer: new Renderer,\n xhtml: false\n};\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.parse = marked;\n\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n this.marked = marked;\n}\n\n}).call(function() {\n return this || (typeof window !== 'undefined' ? window : global);\n}());\n","import marked from 'marked';\n\nmarked.setOptions({\n gfm: true,\n smartypants: true\n});\n\nexport default function(dom, data) {\n let markdownElements = [].slice.call(dom.querySelectorAll('[markdown]'));\n markdownElements.forEach(el => {\n let content = el.innerHTML;\n // Set default indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n\n el.innerHTML = marked(content);\n });\n}\n","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = _self.Prism = {\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/ text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\tbreak tokenloop;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t delNum = 1;\n\n\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t to = match.index + match[0].length,\n\t\t\t\t\t\t k = i,\n\t\t\t\t\t\t p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && p < to; ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t match = match[0].slice(lookbehindLength),\n\t\t\t\t\t to = from + match.length,\n\t\t\t\t\t before = str.slice(0, from),\n\t\t\t\t\t after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (env.type == 'comment') {\n\t\tenv.attributes['spellcheck'] = 'true';\n\t}\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n \t// In worker\n\t_self.addEventListener('message', function(evt) {\n\t\tvar message = JSON.parse(evt.data),\n\t\t lang = message.language,\n\t\t code = message.code,\n\t\t immediateClose = message.immediateClose;\n\n\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\tif (immediateClose) {\n\t\t\t_self.close();\n\t\t}\n\t}, false);\n\n\treturn _self.Prism;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (document.addEventListener && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': //,\n\t'prolog': /<\\?[\\w\\W]+?\\?>/,\n\t'doctype': //i,\n\t'cdata': //i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\w\\W])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:('|\")[\\w\\W]*?(\\1)|[^\\s>]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /[=>\"']/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\w\\W]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^\\{\\}\\s][^\\{\\};]*?(?=\\s*\\{)/,\n\t'string': {\n\t\tpattern: /(\"|')(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'property': /(\\b|\\B)[\\w-]+(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|').*?\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\w\\W]*?\\*\\//,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[a-z0-9_\\.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /(\\.|\\\\)/\n\t\t}\n\t},\n\t'keyword': /\\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(0x[\\dA-Fa-f]+|0b[01]+|0o[0-7]+|\\d*\\.?\\d+([Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*(?=\\()/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*\\*?|\\/|~|\\^|%|\\.{3}/\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[.+?]|\\\\.|[^/\\\\\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\\\\\|\\\\?[^\\\\])*?`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript'\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tif(Array.prototype.forEach) { // Check to prevent error in IE8\n\t\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\t\tvar language, parent = pre;\n\t\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\t\tparent = parent.parentNode;\n\t\t\t\t}\n\n\t\t\t\tif (parent) {\n\t\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t\t}\n\n\t\t\t\tif (!language) {\n\t\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t\t}\n\n\t\t\t\tvar code = document.createElement('code');\n\t\t\t\tcode.className = 'language-' + language;\n\n\t\t\t\tpre.textContent = '';\n\n\t\t\t\tcode.textContent = 'Loading…';\n\n\t\t\t\tpre.appendChild(code);\n\n\t\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\t\txhr.open('GET', src, true);\n\n\t\t\t\txhr.onreadystatechange = function () {\n\t\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\txhr.send(null);\n\t\t\t});\n\t\t}\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\n})();\n","import Prism from \"prismjs\";\n\nexport default function(dom, data) {\n let codeElements = [].slice.call(dom.querySelectorAll(\"dt-code\"));\n codeElements.forEach(el => {\n let content = el.textContent;\n el.innerHTML = \"\";\n let language = el.getAttribute(\"language\");\n let c = dom.createElement(\"code\");\n if (el.getAttribute(\"block\") === \"\") {\n // Let's normalize the tab indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n let p = dom.createElement(\"pre\");\n p.appendChild(c);\n el.appendChild(p);\n } else {\n el.appendChild(c);\n }\n let highlighted = content;\n if (Prism.languages[language]) {\n c.setAttribute(\"class\", \"language-\" + language);\n highlighted = Prism.highlight(content, Prism.languages[language]);\n }\n c.innerHTML = highlighted;\n });\n}\n","export default function(dom, data) {\n\n var textNodes = dom.createTreeWalker(\n dom.body,\n dom.defaultView.NodeFilter.SHOW_TEXT\n );\n while (textNodes.nextNode()) {\n var n = textNodes.currentNode,\n text = n.nodeValue;\n if (text && acceptNode(n)) {\n text = quotes(text);\n text = punctuation(text);\n n.nodeValue = text;\n }\n }\n}\n\nfunction acceptNode(node) {\n var parent = node.parentElement;\n var isMath = (parent && parent.getAttribute && parent.getAttribute(\"class\")) ? parent.getAttribute(\"class\").includes(\"katex\") || parent.getAttribute(\"class\").includes(\"MathJax\") : false;\n return parent &&\n parent.nodeName !== \"SCRIPT\" &&\n parent.nodeName !== \"STYLE\" &&\n parent.nodeName !== \"CODE\" &&\n parent.nodeName !== \"PRE\" &&\n parent.nodeName !== \"SPAN\" &&\n parent.nodeName !== \"DT-HEADER\" &&\n parent.nodeName !== \"DT-BYLINE\" &&\n parent.nodeName !== \"DT-MATH\" &&\n parent.nodeName !== \"DT-CODE\" &&\n parent.nodeName !== \"DT-BIBLIOGRAPHY\" &&\n parent.nodeName !== \"DT-FOOTER\" &&\n parent.nodeType !== 8 && //comment nodes\n !isMath;\n}\n\n\n/*!\n * typeset - Typesetting for the web\n * @version v0.1.6\n * @link https://github.com/davidmerfield/Typeset.js\n * @author David Merfield\n */\n // which has a CC0 license\n // http://creativecommons.org/publicdomain/zero/1.0/\n\n\nfunction punctuation(text){\n\n // Dashes\n text = text.replace(/--/g, '\\u2014');\n text = text.replace(/ \\u2014 /g,\"\\u2009\\u2014\\u2009\"); //this has thin spaces\n\n // Elipses\n text = text.replace(/\\.\\.\\./g,'…');\n\n // Nbsp for punc with spaces\n var NBSP = \"\\u00a0\";\n var NBSP_PUNCTUATION_START = /([«¿¡]) /g;\n var NBSP_PUNCTUATION_END = / ([\\!\\?:;\\.,‽»])/g;\n\n text = text.replace(NBSP_PUNCTUATION_START, '$1' + NBSP);\n text = text.replace(NBSP_PUNCTUATION_END, NBSP + '$1');\n\n return text;\n}\n\nfunction quotes(text) {\n\n text = text\n .replace(/(\\W|^)\"([^\\s\\!\\?:;\\.,‽»])/g, '$1\\u201c$2') // beginning \"\n .replace(/(\\u201c[^\"]*)\"([^\"]*$|[^\\u201c\"]*\\u201c)/g, '$1\\u201d$2') // ending \"\n .replace(/([^0-9])\"/g,'$1\\u201d') // remaining \" at end of word\n .replace(/(\\W|^)'(\\S)/g, '$1\\u2018$2') // beginning '\n .replace(/([a-z])'([a-z])/ig, '$1\\u2019$2') // conjunction's possession\n .replace(/((\\u2018[^']*)|[a-z])'([^0-9]|$)/ig, '$1\\u2019$3') // ending '\n .replace(/(\\u2018)([0-9]{2}[^\\u2019]*)(\\u2018([^0-9]|$)|$|\\u2019[a-z])/ig, '\\u2019$2$3') // abbrev. years like '93\n .replace(/(\\B|^)\\u2018(?=([^\\u2019]*\\u2019\\b)*([^\\u2019\\u2018]*\\W[\\u2019\\u2018]\\b|[^\\u2019\\u2018]*$))/ig, '$1\\u2019') // backwards apostrophe\n .replace(/'''/g, '\\u2034') // triple prime\n .replace(/(\"|'')/g, '\\u2033') // double prime\n .replace(/'/g, '\\u2032');\n\n // Allow escaped quotes\n text = text.replace(/\\\\“/, '\\\"');\n text = text.replace(/\\\\”/, '\\\"');\n text = text.replace(/\\\\’/, '\\'');\n text = text.replace(/\\\\‘/, '\\'');\n\n return text;\n}\n\nfunction ligatures(text){\n\n text = text.replace(/fi/g, 'fi');\n text = text.replace(/fl/g, 'fl');\n\n return text;\n};\n","import code from './hover-box.txt';\n\nexport default function(dom) {\n let s = dom.createElement(\"script\");\n s.textContent = code;\n dom.querySelector(\"body\").appendChild(s);\n}\n","//import xml from \"xml\";\n\nexport default function(data) {\n\n\n var date = data.publishedDate;\n\n var batch_timestamp = Math.floor(Date.now() / 1000);\n var batch_id = data.authors.length ? data.authors[0].lastName.toLowerCase().slice(0,20) : \"Anonymous\";\n batch_id += \"_\" + date.getFullYear();\n batch_id += \"_\" + data.title.split(\" \")[0].toLowerCase().slice(0,20) + \"_\" + batch_timestamp;\n // generate XML\n var crf_data =\n {doi_batch : [\n\n { _attr: {\n version: \"4.3.7\",\n xmlns: \"http://www.crossref.org/schema/4.3.7\",\n \"xmlns:xsi\": \"http://www.w3.org/2001/XMLSchema-instance\",\n \"xsi:schemaLocation\": \"http://www.crossref.org/schema/4.3.7 http://www.crossref.org/schemas/crossref4.3.7.xsd\",\n }},\n\n { head: [\n {doi_batch_id: batch_id},\n {timestamp: batch_timestamp},\n {depositor: [\n {depositor_name: data.journal.publisherName},\n {email_address: data.journal.publisherEmail},\n ]},\n {registrant: data.journal.publisherName},\n ]},\n\n {body: [\n {journal: [\n\n {journal_metadata: [\n {full_title: data.journal.full_title || data.journal.title},\n {abbrev_title: data.journal.abbrev_title || data.journal.title || data.journal.full_title},\n {issn: data.journal.issn},\n {doi_data: [\n {doi: data.journal.doi},\n {resource: data.journal.url},\n ]},\n ]},\n\n {journal_issue: [\n {publication_date: [\n {month: date.getMonth()+1},\n {year: date.getFullYear()},\n ]},\n {journal_volume: [\n {volume: data.volume},\n ]},\n {issue: data.issue},\n ]},\n\n {journal_article: [\n {titles: [\n {title: data.title},\n ]},\n { contributors:\n data.authors.map((author, ind) => (\n {person_name: [\n { _attr: {\n contributor_role: \"author\",\n sequence: (ind == 0)? \"first\" : \"additional\"\n }},\n {given_name: author.firstName},\n {surname: author.lastName},\n {affiliation: author.affiliation}\n // TODO: ORCID?\n ]}\n ))\n },\n {publication_date: [\n {month: date.getMonth()+1},\n {day: date.getDate()},\n {year: date.getFullYear()}\n ]},\n { publisher_item: [\n {item_number: data.doi}\n ]},\n {doi_data: [\n {doi: data.doi},\n //{timestamp: \"\"},\n {resource: data.url},\n ]},\n {citation_list:\n data.citations.map(key =>\n citation_xml(key, data.bibliography[key]))\n }\n\n ]},\n\n ]},\n ]},\n ]};\n\n return xml(crf_data);\n}\n\nfunction citation_xml(key, ent){\n if (ent == undefined) return {};\n var info = [];\n info.push({_attr: {key: key}});\n if (\"title\" in ent)\n info.push({article_title: ent.title});\n if (\"author\" in ent)\n info.push({author: ent.author.split(\" and \")[0].split(\",\")[0].trim()});\n if (\"journal\" in ent)\n info.push({journal_title: ent.journal});\n if (\"booktitle\" in ent)\n info.push({volume_title: ent.booktitle});\n if (\"volume\" in ent)\n info.push({volume: ent.volume});\n if (\"issue\" in ent)\n info.push({issue: ent.issue});\n if (\"doi\" in ent)\n info.push({doi: ent.doi});\n return {citation: info}\n}\n\nfunction xml(obj) {\n //console.log(typeof(obj), obj)\n if (typeof obj === 'string') return obj;\n if (typeof obj === 'number') return \"\"+obj;\n let keys = Object.keys(obj);\n if (keys.length != 1) console.error(\"can't interpret \", obj, \"as xml\");\n let name = keys[0];\n var full_content = obj[name];\n var attr = {};\n if (Array.isArray(full_content)){\n var content = [];\n for (var i in full_content) {\n var obj = full_content[i];\n var obj_name = Object.keys(obj)[0];\n if (\"_attr\" == obj_name) {\n attr = obj[\"_attr\"];\n } else {\n //console.log(Object.keys(obj)[0])\n content.push(obj);\n }\n }\n } else {\n content = full_content;\n }\n if (content == undefined){\n content = \"undefined\"\n }\n\n let attr_string = \"\";\n for (var k in attr) {\n attr_string += ` ${k}=\\\"${attr[k]}\\\"`\n }\n\n //console.log(typeof content, Array.isArray(content), content instanceof String, content)\n if (Array.isArray(content)){\n content = content.map(xml);\n content = content.join(\"\\n\").split(\"\\n\");\n content = content.map(s => \" \" + s).join(\"\\n\")\n var result = `<${name}${attr_string}>\\n${content}\\n`;\n } else {\n content = xml(content);\n var result = `<${name}${attr_string}>${content}`;\n }\n return result;\n}\n","import logo from \"./distill-logo.svg\";\n\nconst html = `\n\n\n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-header\");\n if(el) {\n el.innerHTML = html;\n } else {\n let header = dom.createElement(\"dt-header\");\n header.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(header, b.firstChild);\n }\n}\n","import logo from \"./distill-logo.svg\";\n\nlet html = `\n\n\n
    \n
    \n \n ${logo}\n Distill\n \n is dedicated to clear explanations of machine learning\n
    \n
    \n About\n Submit\n Prize\n RSS\n Twitter\n
    \n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-footer\");\n if(el) {\n el.innerHTML = html;\n } else {\n let footer = dom.createElement(\"dt-footer\");\n footer.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.appendChild(footer);\n }\n}\n","import html from \"./components/html\";\nimport styles from \"./components/styles\";\nimport frontMatter from \"./components/front-matter\";\nimport bibliography from \"./components/bibliography\";\nimport expandData from \"./components/expand-data\";\nimport meta from \"./components/meta\";\nimport banner from \"./components/banner\";\nimport byline from \"./components/byline\";\nimport appendix from \"./components/appendix\";\nimport citation from \"./components/citation\";\nimport footnote from \"./components/footnote\";\nimport markdown from \"./components/markdown\";\nimport code from \"./components/code\";\nimport typeset from \"./components/typeset\";\nimport hoverBox from \"./components/hover-box-include\";\nimport generateCrossref from \"./components/generate-crossref\";\nimport header from \"./components/header\";\nimport footer from \"./components/footer\";\n\nfunction renderImmediately(dom) {\n html(dom);\n styles(dom);\n}\n\nfunction renderOnLoad(dom, data) {\n frontMatter(dom, data);\n bibliography(dom, data);\n expandData(dom, data);\n meta(dom, data);\n byline(dom, data);\n appendix(dom, data);\n markdown(dom, data);\n code(dom, data);\n citation(dom, data);\n footnote(dom, data);\n typeset(dom, data);\n hoverBox(dom, data);\n}\n\n// If we are in a browser, render automatically...\nif(window && window.document) {\n let data = {};\n renderImmediately(window.document);\n window.document.addEventListener(\"DOMContentLoaded\", (event) => {\n renderOnLoad(window.document, data);\n // Add a banner if we're not on localhost.\n if (window.location.hostname !== \"localhost\" && window.location.origin !== \"file://\") {\n banner(window.document, data);\n }\n generateCrossref(data);\n });\n}\n\n// If we are in node...\nfunction render(dom, data) {\n renderImmediately(dom);\n renderOnLoad(dom, data);\n // Remove script tag so it doesn't run again in the client\n let s = dom.querySelector('script[src*=\"distill.pub/template\"]');\n if (s) { s.parentElement.removeChild(s); };\n}\n\n// Distill specific rendering\nfunction distillify(dom, data) {\n header(dom, data);\n footer(dom, data);\n}\n\nexport {render as render};\nexport {distillify as distillify};\nexport {generateCrossref as generateCrossref};\n"],"names":["let","meta","YAMLException","common","require$$0","Mark","this","Type","require$$1","require$$2","type","arguments","Schema","require$$3","require$$4","require$$5","require","_hasOwnProperty","_toString","require$$6","require$$7","_require","DEFAULT_SAFE_SCHEMA","DEFAULT_FULL_SCHEMA","loadAll","load","safeLoadAll","safeLoad","State","dump","safeDump","require$$8","require$$9","ymlParse","interval","day","timeDay","timeYear","timeSunday","timeMonday","locale","escape","const","html","define","global","Prism","code","render"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":null,"sources":["../components/html.js","../components/styles.js","../node_modules/js-yaml/lib/js-yaml/common.js","../node_modules/js-yaml/lib/js-yaml/exception.js","../node_modules/js-yaml/lib/js-yaml/mark.js","../node_modules/js-yaml/lib/js-yaml/type.js","../node_modules/js-yaml/lib/js-yaml/schema.js","../node_modules/js-yaml/lib/js-yaml/type/str.js","../node_modules/js-yaml/lib/js-yaml/type/seq.js","../node_modules/js-yaml/lib/js-yaml/type/map.js","../node_modules/js-yaml/lib/js-yaml/schema/failsafe.js","../node_modules/js-yaml/lib/js-yaml/type/null.js","../node_modules/js-yaml/lib/js-yaml/type/bool.js","../node_modules/js-yaml/lib/js-yaml/type/int.js","../node_modules/js-yaml/lib/js-yaml/type/float.js","../node_modules/js-yaml/lib/js-yaml/schema/json.js","../node_modules/js-yaml/lib/js-yaml/schema/core.js","../node_modules/js-yaml/lib/js-yaml/type/timestamp.js","../node_modules/js-yaml/lib/js-yaml/type/merge.js","../node_modules/js-yaml/lib/js-yaml/type/binary.js","../node_modules/js-yaml/lib/js-yaml/type/omap.js","../node_modules/js-yaml/lib/js-yaml/type/pairs.js","../node_modules/js-yaml/lib/js-yaml/type/set.js","../node_modules/js-yaml/lib/js-yaml/schema/default_safe.js","../node_modules/js-yaml/lib/js-yaml/type/js/undefined.js","../node_modules/js-yaml/lib/js-yaml/type/js/regexp.js","../node_modules/js-yaml/lib/js-yaml/type/js/function.js","../node_modules/js-yaml/lib/js-yaml/schema/default_full.js","../node_modules/js-yaml/lib/js-yaml/loader.js","../node_modules/js-yaml/lib/js-yaml/dumper.js","../node_modules/js-yaml/lib/js-yaml.js","../node_modules/js-yaml/index.js","../components/front-matter.js","../node_modules/bibtex-parse-js/bibtexParse.js","../components/bibliography.js","../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/utcMinute.js","../node_modules/d3-time/src/utcHour.js","../node_modules/d3-time/src/utcDay.js","../node_modules/d3-time/src/utcWeek.js","../node_modules/d3-time/src/utcMonth.js","../node_modules/d3-time/src/utcYear.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-time-format/src/isoFormat.js","../node_modules/d3-time-format/src/isoParse.js","../components/expand-data.js","../../node_modules/escape-html/index.js","../components/meta.js","../components/banner.js","../node_modules/mustache/mustache.js","../components/byline.js","../components/appendix.js","../components/citation.js","../components/footnote.js","../node_modules/marked/lib/marked.js","../components/markdown.js","../node_modules/prismjs/prism.js","../components/code.js","../components/typeset.js","../components/hover-box-include.js","../components/generate-crossref.js","../components/header.js","../components/footer.js","../index.js"],"sourcesContent":["export default function(dom) {\n if (!dom.querySelector(\"html\").getAttribute(\"lang\")) {\n dom.querySelector(\"html\").setAttribute(\"lang\", \"en\")\n }\n\n let head = dom.querySelector(\"head\");\n\n if (!dom.querySelector(\"meta[charset]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"charset\", \"utf-8\");\n head.appendChild(meta);\n }\n if (!dom.querySelector(\"meta[name=viewport]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"name\", \"viewport\");\n meta.setAttribute(\"content\", \"width=device-width, initial-scale=1\");\n head.appendChild(meta);\n }\n}\n","import base from './styles-base.css';\nimport layout from './styles-layout.css';\nimport article from './styles-article.css';\nimport code from './styles-code.css';\nimport print from './styles-print.css';\n\nexport default function(dom) {\n let s = dom.createElement(\"style\");\n s.textContent = base + layout + article + code + print;\n dom.querySelector(\"head\").appendChild(s);\n}\n","'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n var result = this.name + ': ';\n\n result += this.reason || '(unknown reason)';\n\n if (!compact && this.mark) {\n result += ' ' + this.mark.toString();\n }\n\n return result;\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n\nvar common = require('./common');\n\n\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\n\n\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head, start, tail, end, snippet;\n\n if (!this.buffer) return null;\n\n indent = indent || 4;\n maxLength = maxLength || 75;\n\n head = '';\n start = this.position;\n\n while (start > 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n\n tail = '';\n end = this.position;\n\n while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n\n snippet = this.buffer.slice(start, end);\n\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' +\n common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\n\nMark.prototype.toString = function toString(compact) {\n var snippet, where = '';\n\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n if (!compact) {\n snippet = this.getSnippet();\n\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n\n return where;\n};\n\n\nmodule.exports = Mark;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name, result) {\n var exclude = [];\n\n schema.include.forEach(function (includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n\n schema[name].forEach(function (currentType) {\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n exclude.push(previousIndex);\n }\n });\n\n result.push(currentType);\n });\n\n return result.filter(function (type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {}\n }, index, length;\n\n function collectType(type) {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n\n this.implicit.forEach(function (type) {\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n });\n\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\n\nSchema.DEFAULT = null;\n\n\nSchema.create = function createSchema() {\n var schemas, types;\n\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n\n if (!schemas.every(function (schema) { return schema instanceof Schema; })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n\n if (!types.every(function (type) { return type instanceof Type; })) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n return new Schema({\n include: schemas,\n explicit: types\n });\n};\n\n\nmodule.exports = Schema;\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 8\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 10 (except 0) or base 60\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch === ':') break;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n if (!hasDigits) return false;\n\n // if !base60 - done;\n if (ch !== ':') return true;\n\n // base60 almost not used, no needs to optimize\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch, base, digits = [];\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value, 16);\n return sign * parseInt(value, 8);\n }\n\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseInt(v, 10));\n });\n\n value = 0;\n base = 1;\n\n digits.forEach(function (d) {\n value += (d * base);\n base *= 60;\n });\n\n return sign * value;\n\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (object) { return '0b' + object.toString(2); },\n octal: function (object) { return '0' + object.toString(8); },\n decimal: function (object) { return object.toString(10); },\n hexadecimal: function (object) { return '0x' + object.toString(16).toUpperCase(); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n '^(?:[-+]?(?:[0-9][0-9_]*)\\\\.[0-9_]*(?:[eE][-+][0-9]+)?' +\n '|\\\\.[0-9_]+(?:[eE][-+][0-9]+)?' +\n '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' +\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data)) return false;\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign, base, digits;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n\n } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n\n value = 0.0;\n base = 1;\n\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n\n return sign * value;\n\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./failsafe')\n ],\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./json')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\nvar NodeBuffer;\n\ntry {\n // A trick for browserified version, to not include `Buffer` shim\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n // Wrap into Buffer for NodeJS and leave Array for browser\n if (NodeBuffer) return new NodeBuffer(result);\n\n return result;\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./core')\n ],\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n return true;\n}\n\nfunction constructJavascriptUndefined() {\n /*eslint-disable no-undefined*/\n return undefined;\n}\n\nfunction representJavascriptUndefined() {\n return '';\n}\n\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n if (data === null) return false;\n if (data.length === 0) return false;\n\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // if regexp starts with '/' it can have modifiers and must be properly closed\n // `/foo/gim` - modifiers tail can be maximum 3 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n\n if (modifiers.length > 3) return false;\n // if expression starts with /, is should be properly terminated\n if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n }\n\n return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // `/foo/gim` - tail can be maximum 4 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n\n return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object /*, style*/) {\n var result = '/' + object.source + '/';\n\n if (object.global) result += 'g';\n if (object.multiline) result += 'm';\n if (object.ignoreCase) result += 'i';\n\n return result;\n}\n\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n","'use strict';\n\nvar esprima;\n\n// Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n// If not found - try to fallback to window.esprima. If not\n// found too - then fail to parse.\n//\ntry {\n // workaround to exclude package from browserify list.\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n /*global window */\n if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n if (data === null) return false;\n\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true });\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction constructJavascriptFunction(data) {\n /*jslint evil:true*/\n\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true }),\n params = [],\n body;\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n throw new Error('Failed to resolve function');\n }\n\n ast.body[0].expression.params.forEach(function (param) {\n params.push(param.name);\n });\n\n body = ast.body[0].expression.body.range;\n\n // Esprima's ranges include the first '{' and the last '}' characters on\n // function expressions. So cut them out.\n /*eslint-disable no-new-func*/\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n}\n\nfunction representJavascriptFunction(object /*, style*/) {\n return object.toString();\n}\n\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n","// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [\n require('./default_safe')\n ],\n explicit: [\n require('../type/js/undefined'),\n require('../type/js/regexp'),\n require('../type/js/function')\n ]\n});\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00);\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n return new YAMLException(\n message,\n new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length;\n _position < _length;\n _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode) {\n var index, quantity;\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n throwError(state, 'duplicated mapping key');\n }\n _result[keyNode] = valueNode;\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else {\n break; // Reading is done. Go to the epilogue.\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if (state.lineIndent > nodeIndent && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!state.anchorMap.hasOwnProperty(alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag !== null && state.tag !== '!') {\n if (state.tag === '?') {\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length;\n typeIndex < typeQuantity;\n typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only assigned to plain scalars. So, it isn't\n // needed to check for 'kind' conformity.\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = {};\n state.anchorMap = {};\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n var documents = loadDocuments(input, options), index, length;\n\n for (index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nfunction safeLoadAll(input, output, options) {\n loadAll(input, output, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nfunction safeLoad(input, options) {\n return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// Simplified test for values allowed after the first character in plain style.\nfunction isPlainSafe(c) {\n // Uses a subset of nb-char - c-flow-indicator - \":\" - \"#\"\n // where nb-char ::= c-printable - b-char - c-byte-order-mark.\n return isPrintable(c) && c !== 0xFEFF\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // - \":\" - \"#\"\n && c !== CHAR_COLON\n && c !== CHAR_SHARP;\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n return isPrintable(c) && c !== 0xFEFF\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {\n var i;\n var char;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(string.charCodeAt(0))\n && !isWhitespace(string.charCodeAt(string.length - 1));\n\n if (singleLineOnly) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n return plain && !testAmbiguousType(string)\n ? STYLE_PLAIN : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (string[0] === ' ' && indentPerLevel > 9) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey) {\n state.dump = (function () {\n if (string.length === 0) {\n return \"''\";\n }\n if (!state.noCompatMode &&\n DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n return \"'\" + string + \"'\";\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = (string[0] === ' ') ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char;\n var escapeSeq;\n\n for (var i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n result += !escapeSeq && isPrintable(char)\n ? string[i]\n : escapeSeq || encodeHex(char);\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level, object[index], false, false)) {\n if (index !== 0) _result += ', ';\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || index !== 0) {\n _result += generateNextLine(state, level);\n }\n _result += '- ' + state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (index !== 0) pairBuffer += ', ';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + ': ';\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || index !== 0) {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n state.tag = explicit ? type.tag : '?';\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n writeBlockSequence(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey);\n }\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n state.dump = '!<' + state.tag + '> ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n if (writeNode(state, 0, input, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nfunction safeDump(input, options) {\n return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n","'use strict';\n\n\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\n\n\nfunction deprecated(name) {\n return function () {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\n\n\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\n\n// Deprecated schema names from JS-YAML 2.0.x\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\n\n// Deprecated functions from JS-YAML 1.x.x\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","'use strict';\n\n\nvar yaml = require('./lib/js-yaml.js');\n\n\nmodule.exports = yaml;\n","import ymlParse from \"js-yaml\";\n\nexport default function(dom, data) {\n let localData = {};\n let el = dom.querySelector('script[type=\"text/front-matter\"]');\n if (el) {\n let text = el.textContent;\n localData = ymlParse.safeLoad(text);\n }\n\n data.title = localData.title ? localData.title : \"Untitled\";\n data.description = localData.description ? localData.description : \"No description.\";\n\n data.authors = localData.authors ? localData.authors : [];\n\n data.authors = data.authors.map((author, i) =>{\n let a = {};\n let name = Object.keys(author)[0];\n if ((typeof author) === \"string\") {\n name = author;\n } else {\n a.personalURL = author[name];\n }\n let names = name.split(\" \");\n a.name = name;\n a.firstName = names.slice(0, names.length - 1).join(\" \");\n a.lastName = names[names.length -1];\n if(localData.affiliations[i]) {\n let affiliation = Object.keys(localData.affiliations[i])[0];\n if ((typeof localData.affiliations[i]) === \"string\") {\n affiliation = localData.affiliations[i]\n } else {\n a.affiliationURL = localData.affiliations[i][affiliation];\n }\n a.affiliation = affiliation;\n }\n return a;\n });\n \n\n}\n","/* start bibtexParse 0.0.22 */\n\n//Original work by Henrik Muehe (c) 2010\n//\n//CommonJS port by Mikola Lysenko 2013\n//\n//Port to Browser lib by ORCID / RCPETERS\n//\n//Issues:\n//no comment handling within strings\n//no string concatenation\n//no variable values yet\n//Grammar implemented here:\n//bibtex -> (string | preamble | comment | entry)*;\n//string -> '@STRING' '{' key_equals_value '}';\n//preamble -> '@PREAMBLE' '{' value '}';\n//comment -> '@COMMENT' '{' value '}';\n//entry -> '@' key '{' key ',' key_value_list '}';\n//key_value_list -> key_equals_value (',' key_equals_value)*;\n//key_equals_value -> key '=' value;\n//value -> value_quotes | value_braces | key;\n//value_quotes -> '\"' .*? '\"'; // not quite\n//value_braces -> '{' .*? '\"'; // not quite\n(function(exports) {\n\n function BibtexParser() {\n \n this.months = [\"jan\", \"feb\", \"mar\", \"apr\", \"may\", \"jun\", \"jul\", \"aug\", \"sep\", \"oct\", \"nov\", \"dec\"];\n this.notKey = [',','{','}',' ','='];\n this.pos = 0;\n this.input = \"\";\n this.entries = new Array();\n\n this.currentEntry = \"\";\n\n this.setInput = function(t) {\n this.input = t;\n };\n\n this.getEntries = function() {\n return this.entries;\n };\n\n this.isWhitespace = function(s) {\n return (s == ' ' || s == '\\r' || s == '\\t' || s == '\\n');\n };\n\n this.match = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n this.pos += s.length;\n } else {\n throw \"Token mismatch, expected \" + s + \", found \"\n + this.input.substring(this.pos);\n };\n this.skipWhitespace(canCommentOut);\n };\n\n this.tryMatch = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n return true;\n } else {\n return false;\n };\n this.skipWhitespace(canCommentOut);\n };\n\n /* when search for a match all text can be ignored, not just white space */\n this.matchAt = function() {\n while (this.input.length > this.pos && this.input[this.pos] != '@') {\n this.pos++;\n };\n\n if (this.input[this.pos] == '@') {\n return true;\n };\n return false;\n };\n\n this.skipWhitespace = function(canCommentOut) {\n while (this.isWhitespace(this.input[this.pos])) {\n this.pos++;\n };\n if (this.input[this.pos] == \"%\" && canCommentOut == true) {\n while (this.input[this.pos] != \"\\n\") {\n this.pos++;\n };\n this.skipWhitespace(canCommentOut);\n };\n };\n\n this.value_braces = function() {\n var bracecount = 0;\n this.match(\"{\", false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '}') {\n if (bracecount > 0) {\n bracecount--;\n } else {\n var end = this.pos;\n this.match(\"}\", false);\n return this.input.substring(start, end);\n };\n } else if (this.input[this.pos] == '{') {\n bracecount++;\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value\";\n };\n };\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.value_comment = function() {\n var str = '';\n var brcktCnt = 0;\n while (!(this.tryMatch(\"}\", false) && brcktCnt == 0)) {\n str = str + this.input[this.pos];\n if (this.input[this.pos] == '{')\n brcktCnt++;\n if (this.input[this.pos] == '}')\n brcktCnt--;\n if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n this.pos++;\n };\n return str;\n };\n\n this.value_quotes = function() {\n this.match('\"', false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '\"') {\n var end = this.pos;\n this.match('\"', false);\n return this.input.substring(start, end);\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n }\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.single_value = function() {\n var start = this.pos;\n if (this.tryMatch(\"{\")) {\n return this.value_braces();\n } else if (this.tryMatch('\"')) {\n return this.value_quotes();\n } else {\n var k = this.key();\n if (k.match(\"^[0-9]+$\"))\n return k;\n else if (this.months.indexOf(k.toLowerCase()) >= 0)\n return k.toLowerCase();\n else\n throw \"Value expected:\" + this.input.substring(start) + ' for key: ' + k;\n \n };\n };\n\n this.value = function() {\n var values = [];\n values.push(this.single_value());\n while (this.tryMatch(\"#\")) {\n this.match(\"#\");\n values.push(this.single_value());\n };\n return values.join(\"\");\n };\n\n this.key = function() {\n var start = this.pos;\n while (true) {\n if (this.pos >= this.input.length) {\n throw \"Runaway key\";\n };\n // а-яА-Я is Cyrillic\n //console.log(this.input[this.pos]);\n if (this.notKey.indexOf(this.input[this.pos]) >= 0) {\n return this.input.substring(start, this.pos);\n } else {\n this.pos++;\n \n };\n };\n };\n\n this.key_equals_value = function() {\n var key = this.key();\n if (this.tryMatch(\"=\")) {\n this.match(\"=\");\n var val = this.value();\n return [ key, val ];\n } else {\n throw \"... = value expected, equals sign missing:\"\n + this.input.substring(this.pos);\n };\n };\n\n this.key_value_list = function() {\n var kv = this.key_equals_value();\n this.currentEntry['entryTags'] = {};\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n while (this.tryMatch(\",\")) {\n this.match(\",\");\n // fixes problems with commas at the end of a list\n if (this.tryMatch(\"}\")) {\n break;\n }\n ;\n kv = this.key_equals_value();\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n };\n };\n\n this.entry_body = function(d) {\n this.currentEntry = {};\n this.currentEntry['citationKey'] = this.key();\n this.currentEntry['entryType'] = d.substring(1);\n this.match(\",\");\n this.key_value_list();\n this.entries.push(this.currentEntry);\n };\n\n this.directive = function() {\n this.match(\"@\");\n return \"@\" + this.key();\n };\n\n this.preamble = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'PREAMBLE';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.comment = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'COMMENT';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.entry = function(d) {\n this.entry_body(d);\n };\n\n this.bibtex = function() {\n while (this.matchAt()) {\n var d = this.directive();\n this.match(\"{\");\n if (d == \"@STRING\") {\n this.string();\n } else if (d == \"@PREAMBLE\") {\n this.preamble();\n } else if (d == \"@COMMENT\") {\n this.comment();\n } else {\n this.entry(d);\n }\n this.match(\"}\");\n };\n };\n };\n \n exports.toJSON = function(bibtex) {\n var b = new BibtexParser();\n b.setInput(bibtex);\n b.bibtex();\n return b.entries;\n };\n\n /* added during hackathon don't hate on me */\n exports.toBibtex = function(json) {\n var out = '';\n for ( var i in json) {\n out += \"@\" + json[i].entryType;\n out += '{';\n if (json[i].citationKey)\n out += json[i].citationKey + ', ';\n if (json[i].entry)\n out += json[i].entry ;\n if (json[i].entryTags) {\n var tags = '';\n for (var jdx in json[i].entryTags) {\n if (tags.length != 0)\n tags += ', ';\n tags += jdx + '= {' + json[i].entryTags[jdx] + '}';\n }\n out += tags;\n }\n out += '}\\n\\n';\n }\n return out;\n \n };\n\n})(typeof exports === 'undefined' ? this['bibtexParse'] = {} : exports);\n\n/* end bibtexParse */\n","import bibtexParse from \"bibtex-parse-js\";\n\nexport default function(dom, data) {\n let el = dom.querySelector('script[type=\"text/bibliography\"]');\n let citations = [];\n let bibliography = {};\n //TODO If we don't have a local element, make a request for the document.\n if (el) {\n let rawBib = el.textContent;\n let parsed = bibtexParse.toJSON(rawBib);\n if(parsed) {\n parsed.forEach(e => {\n for (var k in e.entryTags){\n var val = e.entryTags[k];\n val = val.replace(/[\\t\\n ]+/g, \" \");\n val = val.replace(/{\\\\[\"^`\\.'acu~Hvs]( )?([a-zA-Z])}/g,\n (full, x, char) => char);\n val = val.replace(/{\\\\([a-zA-Z])}/g,\n (full, char) => char);\n e.entryTags[k] = val;\n }\n bibliography[e.citationKey] = e.entryTags;\n bibliography[e.citationKey].type = e.entryType;\n });\n }\n\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach(el => {\n let key = el.getAttribute(\"key\");\n if (key) {\n let citationKeys = key.split(\",\");\n citationKeys.forEach(key => {\n if (citations.indexOf(key) == -1){\n citations.push(key);\n if (!(key in bibliography)){\n console.warn(\"No bibliography entry found for: \" + key);\n }\n }\n });\n }\n });\n }\n data.bibliography = bibliography;\n data.citations = citations;\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(new Date(+start)); while (offseti(start, step), floori(start), start < stop)\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) while (--step >= 0) while (offseti(date, 1), !test(date)) {} // eslint-disable-line no-empty\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(Math.floor(date / durationSecond) * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(Math.floor(date / durationMinute) * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute} from \"./duration\";\n\nvar hour = interval(function(date) {\n var offset = date.getTimezoneOffset() * durationMinute % durationHour;\n if (offset < 0) offset += durationHour;\n date.setTime(Math.floor((+date - offset) / durationHour) * durationHour + offset);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval\";\nimport {durationWeek} from \"./duration\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {timeDay, timeSunday, timeMonday, timeYear, utcDay, utcSunday, utcMonday, utcYear} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"S\": formatSeconds,\n \"U\": formatWeekNumberSunday,\n \"w\": formatWeekdayNumber,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"S\": formatUTCSeconds,\n \"U\": formatUTCWeekNumberSunday,\n \"w\": formatUTCWeekdayNumber,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"S\": parseSeconds,\n \"U\": parseWeekNumberSunday,\n \"w\": parseWeekdayNumber,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0);\n if (i != string.length) return null;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n var day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?:\\:?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekdayNumber(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekdayNumber(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {timeFormat} from \"d3-time-format\";\n\nexport default function(dom, data) {\n\n data.authors = data.authors || [];\n\n // paths\n if (!data.distillPath && !data.url) {\n data.url = \"http://distill.pub/\";\n } else if (!data.url) {\n data.url = \"http://distill.pub/\" + data.distillPath;\n }\n data.githubUrl = \"https://github.com/\" + data.githubPath;\n\n data.previewURL = data.previewURL ? data.previewURL : data.url + \"/thumbnail.jpg\"\n\n // Homepage\n //data.homepage = !post.noHomepage;\n data.journal = data.journal || {};\n\n // Dates\n if (data.publishedDate){//} && data.journal) {\n data.volume = data.publishedDate.getFullYear() - 2015;\n data.issue = data.publishedDate.getMonth() + 1;\n }\n\n data.publishedDate = data.publishedDate ? data.publishedDate : new Date(\"Invalid\");\n data.updatedDate = data.updatedDate ? data.updatedDate : new Date(\"Invalid\");\n\n data.publishedDateRFC\n let RFC = timeFormat(\"%a, %d %b %Y %H:%M:%S %Z\");\n let months = [\"Jan\", \"Feb\", \"March\", \"April\", \"May\", \"June\", \"July\", \"Aug\", \"Sept\", \"Oct\", \"Nov\", \"Dec\"];\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n data.publishedDateRFC = RFC(data.publishedDate);\n data.publishedYear = data.publishedDate.getFullYear();\n data.publishedMonth = months[data.publishedDate.getMonth()];\n data.publishedDay = data.publishedDate.getDate();\n data.publishedMonthPadded = zeroPad(data.publishedDate.getMonth() + 1);\n data.publishedDayPadded = zeroPad(data.publishedDate.getDate());\n data.updatedDateRFC = RFC(data.updatedDate);\n\n if (data.authors.length > 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \", et al.\";\n } else if (data.authors.length === 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \" & \" + data.authors[1].lastName;\n } else if (data.authors.length === 1) {\n data.concatenatedAuthors = data.authors[0].lastName\n }\n\n data.bibtexAuthors = data.authors.map(function(author){\n return author.lastName + \", \" + author.firstName;\n }).join(\" and \");\n\n data.slug = data.authors.length ? data.authors[0].lastName.toLowerCase() + data.publishedYear + data.title.split(\" \")[0].toLowerCase() : \"Untitled\";\n\n}\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","import favicon from './distill-favicon.base64';\nimport escape from 'escape-html';\n\nexport default function(dom, data) {\n let head = dom.querySelector(\"head\");\n let appendHead = html => appendHtml(head, html);\n\n function meta(name, content, force) {\n if (content || force)\n appendHead(` \\n`);\n }\n\n appendHead(`\n \n \n \n \n ${data.title}\n `);\n\n appendHead(`\n \n \n \n `);\n data.authors.forEach((a) => {\n appendHtml(head, `\n `)\n });\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n // if this is a proprer article, generate Google Scholar meta data\n if (data.doiSuffix){\n appendHead(`\n \\n`);\n\n meta(\"citation_title\", data.title);\n //meta(\"citation_fulltext_html_url\", data.url);\n meta(\"citation_volume\", data.volume);\n meta(\"citation_issue\", data.issue);\n meta(\"citation_firstpage\", data.doiSuffix? `e${data.doiSuffix}` : undefined);\n meta(\"citation_doi\", data.doi);\n\n let journal = data.journal || {};\n meta(\"citation_journal_title\", journal.full_title || journal.title);\n meta(\"citation_journal_abbrev\", journal.abbrev_title);\n meta(\"citation_issn\", journal.issn);\n meta(\"citation_publisher\", journal.publisher);\n meta(\"citation_fulltext_world_readable\", \"\", true);\n\n if (data.publishedDate){\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n meta(\"citation_online_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n // Should we do something different here?\n meta(\"citation_publication_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n }\n\n (data.authors || []).forEach((a) => {\n meta(\"citation_author\", `${a.lastName}, ${a.firstName}`);\n meta(\"citation_author_institution\", a.affiliation);\n });\n\n if (data.citations) {\n data.citations.forEach(key => {\n let d = data.bibliography[key];\n if(!d) {\n console.warn(\"No bibliography data fround for \" + key)\n } else {\n meta(\"citation_reference\", citation_meta_content(data.bibliography[key]) )\n };\n });\n }\n }\n}\n\nfunction appendHtml(el, html) {\n el.innerHTML += html;\n}\n\nfunction citation_meta_content(ref){\n // Special test for arxiv\n var content = `citation_title=${ref.title};`;\n\n let name_strings = ref.author.split(\" and \").forEach(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1].trim();\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n content += `citation_author=${firsts} ${last};`;\n });\n\n if (\"year\" in ref) {\n content += `citation_publication_date=${ref.year};`;\n }\n\n var arxiv_id_search = /https?:\\/\\/arxiv\\.org\\/pdf\\/([0-9]*\\.[0-9]*)\\.pdf/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /https?:\\/\\/arxiv\\.org\\/abs\\/([0-9]*\\.[0-9]*)/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /arXiv preprint arXiv:([0-9]*\\.[0-9]*)/.exec(ref.journal);\n if (arxiv_id_search && arxiv_id_search[1]){\n content += `citation_arxiv_id=${arxiv_id_search[1]};`;\n return content;\n }\n if (\"journal\" in ref){\n content += `citation_journal_title=${ref.journal};`;\n }\n if (\"volume\" in ref) {\n content += `citation_volume=${ref.volume};`;\n }\n if (\"issue\" in ref || \"number\" in ref){\n content += `citation_number=${ref.issue || ref.number};`;\n }\n /*content += `citation_first_page=${};`;\n content += `citation_publication_date=${};`;*/\n return content;\n}\n","const html = `\n\n
    This article is a draft, awaiting review for publication in Distill
    \n`;\n\nexport default function(dom, data) {\n let banner = dom.createElement(\"dt-banner\");\n banner.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(banner, b.firstChild);\n banner.addEventListener(\"click\", function() {\n banner.style.display = \"none\";\n });\n}\n","/*!\n * mustache.js - Logic-less {{mustache}} templates with JavaScript\n * http://github.com/janl/mustache.js\n */\n\n/*global define: false Mustache: true*/\n\n(function defineMustache (global, factory) {\n if (typeof exports === 'object' && exports && typeof exports.nodeName !== 'string') {\n factory(exports); // CommonJS\n } else if (typeof define === 'function' && define.amd) {\n define(['exports'], factory); // AMD\n } else {\n global.Mustache = {};\n factory(global.Mustache); // script, wsh, asp\n }\n}(this, function mustacheFactory (mustache) {\n\n var objectToString = Object.prototype.toString;\n var isArray = Array.isArray || function isArrayPolyfill (object) {\n return objectToString.call(object) === '[object Array]';\n };\n\n function isFunction (object) {\n return typeof object === 'function';\n }\n\n /**\n * More correct typeof string handling array\n * which normally returns typeof 'object'\n */\n function typeStr (obj) {\n return isArray(obj) ? 'array' : typeof obj;\n }\n\n function escapeRegExp (string) {\n return string.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n }\n\n /**\n * Null safe way of checking whether or not an object,\n * including its prototype, has a given property\n */\n function hasProperty (obj, propName) {\n return obj != null && typeof obj === 'object' && (propName in obj);\n }\n\n // Workaround for https://issues.apache.org/jira/browse/COUCHDB-577\n // See https://github.com/janl/mustache.js/issues/189\n var regExpTest = RegExp.prototype.test;\n function testRegExp (re, string) {\n return regExpTest.call(re, string);\n }\n\n var nonSpaceRe = /\\S/;\n function isWhitespace (string) {\n return !testRegExp(nonSpaceRe, string);\n }\n\n var entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n function escapeHtml (string) {\n return String(string).replace(/[&<>\"'`=\\/]/g, function fromEntityMap (s) {\n return entityMap[s];\n });\n }\n\n var whiteRe = /\\s*/;\n var spaceRe = /\\s+/;\n var equalsRe = /\\s*=/;\n var curlyRe = /\\s*\\}/;\n var tagRe = /#|\\^|\\/|>|\\{|&|=|!/;\n\n /**\n * Breaks up the given `template` string into a tree of tokens. If the `tags`\n * argument is given here it must be an array with two string values: the\n * opening and closing tags used in the template (e.g. [ \"<%\", \"%>\" ]). Of\n * course, the default is to use mustaches (i.e. mustache.tags).\n *\n * A token is an array with at least 4 elements. The first element is the\n * mustache symbol that was used inside the tag, e.g. \"#\" or \"&\". If the tag\n * did not contain a symbol (i.e. {{myValue}}) this element is \"name\". For\n * all text that appears outside a symbol this element is \"text\".\n *\n * The second element of a token is its \"value\". For mustache tags this is\n * whatever else was inside the tag besides the opening symbol. For text tokens\n * this is the text itself.\n *\n * The third and fourth elements of the token are the start and end indices,\n * respectively, of the token in the original template.\n *\n * Tokens that are the root node of a subtree contain two more elements: 1) an\n * array of tokens in the subtree and 2) the index in the original template at\n * which the closing tag for that section begins.\n */\n function parseTemplate (template, tags) {\n if (!template)\n return [];\n\n var sections = []; // Stack to hold section tokens\n var tokens = []; // Buffer to hold the tokens\n var spaces = []; // Indices of whitespace tokens on the current line\n var hasTag = false; // Is there a {{tag}} on the current line?\n var nonSpace = false; // Is there a non-space char on the current line?\n\n // Strips all whitespace tokens array for the current line\n // if there was a {{#tag}} on it and otherwise only space.\n function stripSpace () {\n if (hasTag && !nonSpace) {\n while (spaces.length)\n delete tokens[spaces.pop()];\n } else {\n spaces = [];\n }\n\n hasTag = false;\n nonSpace = false;\n }\n\n var openingTagRe, closingTagRe, closingCurlyRe;\n function compileTags (tagsToCompile) {\n if (typeof tagsToCompile === 'string')\n tagsToCompile = tagsToCompile.split(spaceRe, 2);\n\n if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)\n throw new Error('Invalid tags: ' + tagsToCompile);\n\n openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\\\s*');\n closingTagRe = new RegExp('\\\\s*' + escapeRegExp(tagsToCompile[1]));\n closingCurlyRe = new RegExp('\\\\s*' + escapeRegExp('}' + tagsToCompile[1]));\n }\n\n compileTags(tags || mustache.tags);\n\n var scanner = new Scanner(template);\n\n var start, type, value, chr, token, openSection;\n while (!scanner.eos()) {\n start = scanner.pos;\n\n // Match any text between tags.\n value = scanner.scanUntil(openingTagRe);\n\n if (value) {\n for (var i = 0, valueLength = value.length; i < valueLength; ++i) {\n chr = value.charAt(i);\n\n if (isWhitespace(chr)) {\n spaces.push(tokens.length);\n } else {\n nonSpace = true;\n }\n\n tokens.push([ 'text', chr, start, start + 1 ]);\n start += 1;\n\n // Check for whitespace on the current line.\n if (chr === '\\n')\n stripSpace();\n }\n }\n\n // Match the opening tag.\n if (!scanner.scan(openingTagRe))\n break;\n\n hasTag = true;\n\n // Get the tag type.\n type = scanner.scan(tagRe) || 'name';\n scanner.scan(whiteRe);\n\n // Get the tag value.\n if (type === '=') {\n value = scanner.scanUntil(equalsRe);\n scanner.scan(equalsRe);\n scanner.scanUntil(closingTagRe);\n } else if (type === '{') {\n value = scanner.scanUntil(closingCurlyRe);\n scanner.scan(curlyRe);\n scanner.scanUntil(closingTagRe);\n type = '&';\n } else {\n value = scanner.scanUntil(closingTagRe);\n }\n\n // Match the closing tag.\n if (!scanner.scan(closingTagRe))\n throw new Error('Unclosed tag at ' + scanner.pos);\n\n token = [ type, value, start, scanner.pos ];\n tokens.push(token);\n\n if (type === '#' || type === '^') {\n sections.push(token);\n } else if (type === '/') {\n // Check section nesting.\n openSection = sections.pop();\n\n if (!openSection)\n throw new Error('Unopened section \"' + value + '\" at ' + start);\n\n if (openSection[1] !== value)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + start);\n } else if (type === 'name' || type === '{' || type === '&') {\n nonSpace = true;\n } else if (type === '=') {\n // Set the tags for the next time around.\n compileTags(value);\n }\n }\n\n // Make sure there are no open sections when we're done.\n openSection = sections.pop();\n\n if (openSection)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + scanner.pos);\n\n return nestTokens(squashTokens(tokens));\n }\n\n /**\n * Combines the values of consecutive text tokens in the given `tokens` array\n * to a single token.\n */\n function squashTokens (tokens) {\n var squashedTokens = [];\n\n var token, lastToken;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n if (token) {\n if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {\n lastToken[1] += token[1];\n lastToken[3] = token[3];\n } else {\n squashedTokens.push(token);\n lastToken = token;\n }\n }\n }\n\n return squashedTokens;\n }\n\n /**\n * Forms the given array of `tokens` into a nested tree structure where\n * tokens that represent a section have two additional items: 1) an array of\n * all tokens that appear in that section and 2) the index in the original\n * template that represents the end of that section.\n */\n function nestTokens (tokens) {\n var nestedTokens = [];\n var collector = nestedTokens;\n var sections = [];\n\n var token, section;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n switch (token[0]) {\n case '#':\n case '^':\n collector.push(token);\n sections.push(token);\n collector = token[4] = [];\n break;\n case '/':\n section = sections.pop();\n section[5] = token[2];\n collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;\n break;\n default:\n collector.push(token);\n }\n }\n\n return nestedTokens;\n }\n\n /**\n * A simple string scanner that is used by the template parser to find\n * tokens in template strings.\n */\n function Scanner (string) {\n this.string = string;\n this.tail = string;\n this.pos = 0;\n }\n\n /**\n * Returns `true` if the tail is empty (end of string).\n */\n Scanner.prototype.eos = function eos () {\n return this.tail === '';\n };\n\n /**\n * Tries to match the given regular expression at the current position.\n * Returns the matched text if it can match, the empty string otherwise.\n */\n Scanner.prototype.scan = function scan (re) {\n var match = this.tail.match(re);\n\n if (!match || match.index !== 0)\n return '';\n\n var string = match[0];\n\n this.tail = this.tail.substring(string.length);\n this.pos += string.length;\n\n return string;\n };\n\n /**\n * Skips all text until the given regular expression can be matched. Returns\n * the skipped string, which is the entire tail if no match can be made.\n */\n Scanner.prototype.scanUntil = function scanUntil (re) {\n var index = this.tail.search(re), match;\n\n switch (index) {\n case -1:\n match = this.tail;\n this.tail = '';\n break;\n case 0:\n match = '';\n break;\n default:\n match = this.tail.substring(0, index);\n this.tail = this.tail.substring(index);\n }\n\n this.pos += match.length;\n\n return match;\n };\n\n /**\n * Represents a rendering context by wrapping a view object and\n * maintaining a reference to the parent context.\n */\n function Context (view, parentContext) {\n this.view = view;\n this.cache = { '.': this.view };\n this.parent = parentContext;\n }\n\n /**\n * Creates a new context using the given view with this context\n * as the parent.\n */\n Context.prototype.push = function push (view) {\n return new Context(view, this);\n };\n\n /**\n * Returns the value of the given name in this context, traversing\n * up the context hierarchy if the value is absent in this context's view.\n */\n Context.prototype.lookup = function lookup (name) {\n var cache = this.cache;\n\n var value;\n if (cache.hasOwnProperty(name)) {\n value = cache[name];\n } else {\n var context = this, names, index, lookupHit = false;\n\n while (context) {\n if (name.indexOf('.') > 0) {\n value = context.view;\n names = name.split('.');\n index = 0;\n\n /**\n * Using the dot notion path in `name`, we descend through the\n * nested objects.\n *\n * To be certain that the lookup has been successful, we have to\n * check if the last object in the path actually has the property\n * we are looking for. We store the result in `lookupHit`.\n *\n * This is specially necessary for when the value has been set to\n * `undefined` and we want to avoid looking up parent contexts.\n **/\n while (value != null && index < names.length) {\n if (index === names.length - 1)\n lookupHit = hasProperty(value, names[index]);\n\n value = value[names[index++]];\n }\n } else {\n value = context.view[name];\n lookupHit = hasProperty(context.view, name);\n }\n\n if (lookupHit)\n break;\n\n context = context.parent;\n }\n\n cache[name] = value;\n }\n\n if (isFunction(value))\n value = value.call(this.view);\n\n return value;\n };\n\n /**\n * A Writer knows how to take a stream of tokens and render them to a\n * string, given a context. It also maintains a cache of templates to\n * avoid the need to parse the same template twice.\n */\n function Writer () {\n this.cache = {};\n }\n\n /**\n * Clears all cached templates in this writer.\n */\n Writer.prototype.clearCache = function clearCache () {\n this.cache = {};\n };\n\n /**\n * Parses and caches the given `template` and returns the array of tokens\n * that is generated from the parse.\n */\n Writer.prototype.parse = function parse (template, tags) {\n var cache = this.cache;\n var tokens = cache[template];\n\n if (tokens == null)\n tokens = cache[template] = parseTemplate(template, tags);\n\n return tokens;\n };\n\n /**\n * High-level method that is used to render the given `template` with\n * the given `view`.\n *\n * The optional `partials` argument may be an object that contains the\n * names and templates of partials that are used in the template. It may\n * also be a function that is used to load partial templates on the fly\n * that takes a single argument: the name of the partial.\n */\n Writer.prototype.render = function render (template, view, partials) {\n var tokens = this.parse(template);\n var context = (view instanceof Context) ? view : new Context(view);\n return this.renderTokens(tokens, context, partials, template);\n };\n\n /**\n * Low-level method that renders the given array of `tokens` using\n * the given `context` and `partials`.\n *\n * Note: The `originalTemplate` is only ever used to extract the portion\n * of the original template that was contained in a higher-order section.\n * If the template doesn't use higher-order sections, this argument may\n * be omitted.\n */\n Writer.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate) {\n var buffer = '';\n\n var token, symbol, value;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n value = undefined;\n token = tokens[i];\n symbol = token[0];\n\n if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate);\n else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate);\n else if (symbol === '>') value = this.renderPartial(token, context, partials, originalTemplate);\n else if (symbol === '&') value = this.unescapedValue(token, context);\n else if (symbol === 'name') value = this.escapedValue(token, context);\n else if (symbol === 'text') value = this.rawValue(token);\n\n if (value !== undefined)\n buffer += value;\n }\n\n return buffer;\n };\n\n Writer.prototype.renderSection = function renderSection (token, context, partials, originalTemplate) {\n var self = this;\n var buffer = '';\n var value = context.lookup(token[1]);\n\n // This function is used to render an arbitrary template\n // in the current context by higher-order sections.\n function subRender (template) {\n return self.render(template, context, partials);\n }\n\n if (!value) return;\n\n if (isArray(value)) {\n for (var j = 0, valueLength = value.length; j < valueLength; ++j) {\n buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate);\n }\n } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {\n buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate);\n } else if (isFunction(value)) {\n if (typeof originalTemplate !== 'string')\n throw new Error('Cannot use higher-order sections without the original template');\n\n // Extract the portion of the original template that the section contains.\n value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);\n\n if (value != null)\n buffer += value;\n } else {\n buffer += this.renderTokens(token[4], context, partials, originalTemplate);\n }\n return buffer;\n };\n\n Writer.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate) {\n var value = context.lookup(token[1]);\n\n // Use JavaScript's definition of falsy. Include empty arrays.\n // See https://github.com/janl/mustache.js/issues/186\n if (!value || (isArray(value) && value.length === 0))\n return this.renderTokens(token[4], context, partials, originalTemplate);\n };\n\n Writer.prototype.renderPartial = function renderPartial (token, context, partials) {\n if (!partials) return;\n\n var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\n if (value != null)\n return this.renderTokens(this.parse(value), context, partials, value);\n };\n\n Writer.prototype.unescapedValue = function unescapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return value;\n };\n\n Writer.prototype.escapedValue = function escapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return mustache.escape(value);\n };\n\n Writer.prototype.rawValue = function rawValue (token) {\n return token[1];\n };\n\n mustache.name = 'mustache.js';\n mustache.version = '2.3.0';\n mustache.tags = [ '{{', '}}' ];\n\n // All high-level mustache.* functions use this writer.\n var defaultWriter = new Writer();\n\n /**\n * Clears all cached templates in the default writer.\n */\n mustache.clearCache = function clearCache () {\n return defaultWriter.clearCache();\n };\n\n /**\n * Parses and caches the given template in the default writer and returns the\n * array of tokens it contains. Doing this ahead of time avoids the need to\n * parse templates on the fly as they are rendered.\n */\n mustache.parse = function parse (template, tags) {\n return defaultWriter.parse(template, tags);\n };\n\n /**\n * Renders the `template` with the given `view` and `partials` using the\n * default writer.\n */\n mustache.render = function render (template, view, partials) {\n if (typeof template !== 'string') {\n throw new TypeError('Invalid template! Template should be a \"string\" ' +\n 'but \"' + typeStr(template) + '\" was given as the first ' +\n 'argument for mustache#render(template, view, partials)');\n }\n\n return defaultWriter.render(template, view, partials);\n };\n\n // This is here for backwards compatibility with 0.4.x.,\n /*eslint-disable */ // eslint wants camel cased function name\n mustache.to_html = function to_html (template, view, partials, send) {\n /*eslint-enable*/\n\n var result = mustache.render(template, view, partials);\n\n if (isFunction(send)) {\n send(result);\n } else {\n return result;\n }\n };\n\n // Export the escaping function so that the user may override it.\n // See https://github.com/janl/mustache.js/issues/244\n mustache.escape = escapeHtml;\n\n // Export these mainly for testing, but also for advanced usage.\n mustache.Scanner = Scanner;\n mustache.Context = Context;\n mustache.Writer = Writer;\n\n return mustache;\n}));\n","import mustache from \"mustache\";\n\nconst html = `\n\n\n`;\n\nconst template = `\n
    \n
    \n {{#authors}}\n
    \n {{#personalURL}}\n {{name}}\n {{/personalURL}}\n {{^personalURL}}\n
    {{name}}
    \n {{/personalURL}}\n {{#affiliation}}\n {{#affiliationURL}}\n {{affiliation}}\n {{/affiliationURL}}\n {{^affiliationURL}}\n
    {{affiliation}}
    \n {{/affiliationURL}}\n {{/affiliation}}\n
    \n {{/authors}}\n
    \n
    \n
    {{publishedMonth}}. {{publishedDay}}
    \n
    {{publishedYear}}
    \n
    \n \n
    Citation:
    \n
    {{concatenatedAuthors}}, {{publishedYear}}
    \n
    \n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-byline');\n if (el) {\n el.innerHTML = html + mustache.render(template, data);\n }\n}\n","const html = `\n\n\n
    \n

    References

    \n \n

    Errors, Reuse, and Citation

    \n

    If you see mistakes or want to suggest changes, please create an issue on GitHub.

    \n

    Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on GitHub. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: “Figure from …”.

    \n

    For attribution in academic contexts, please cite this work as

    \n
    \n  

    BibTeX citation

    \n
    \n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-appendix')\n if (el) {\n let oldHtml = el.innerHTML;\n el.innerHTML = html;\n let div = el.querySelector(\"div.l-body\")\n\n if (dom.querySelector(\"dt-fn\")) {\n div.innerHTML = `

    Footnotes

    ` + div.innerHTML;\n }\n\n div.innerHTML = oldHtml + div.innerHTML;\n if (data.githubCompareUpdatesUrl) {\n div.innerHTML = `

    Updates

    View all changes to this article since it was first published.

    ` + div.innerHTML;\n }\n\n el.querySelector(\"a.github\").setAttribute(\"href\", data.githubUrl);\n el.querySelector(\"a.github-issue\").setAttribute(\"href\", data.githubUrl + \"/issues/new\");\n el.querySelector(\".citation.short\").textContent = data.concatenatedAuthors + \", \" + '\"' + data.title + '\", Distill, ' + data.publishedYear + \".\";\n var bibtex = \"@article{\" + data.slug + \",\\n\";\n bibtex += \" author = {\" + data.bibtexAuthors + \"},\\n\";\n bibtex += \" title = {\" + data.title + \"},\\n\";\n bibtex += \" journal = {Distill},\\n\";\n bibtex += \" year = {\" + data.publishedYear + \"},\\n\";\n bibtex += \" note = {\" + data.url + \"}\\n\";\n bibtex += \"}\";\n el.querySelector(\".citation.long\").textContent = bibtex;\n }\n\n}\n","export default function(dom, data) {\n let css = `\n dt-cite {\n color: hsla(206, 90%, 20%, 0.7);\n }\n dt-cite .citation-number {\n cursor: default;\n white-space: nowrap;\n font-family: -apple-system, BlinkMacSystemFont, \"Roboto\", Helvetica, sans-serif;\n font-size: 75%;\n color: hsla(206, 90%, 20%, 0.7);\n display: inline-block;\n line-height: 1.1em;\n text-align: center;\n position: relative;\n top: -2px;\n margin: 0 2px;\n }\n figcaption dt-cite .citation-number {\n font-size: 11px;\n font-weight: normal;\n top: -2px;\n line-height: 1em;\n }\n `;\n\n let style = dom.createElement(\"style\");\n style.textContent = css;\n dom.querySelector(\"body\").appendChild(style);\n\n let citations = data.citations;\n /*if (data.citations) {\n citations = Object.keys(data.citations).map(c => data.citations[c]);\n citations.sort((a, b) => {\n return a.author.localeCompare(b.author);\n });\n }*/\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach((el,n) => {\n var key = el.getAttribute(\"key\");\n if (key) {\n var keys = key.split(\",\");\n var cite_string = inline_cite_short(keys);\n var cite_hover_str = \"\";\n keys.map((key,n) => {\n if (n>0) cite_hover_str += \"

    \";\n cite_hover_str += hover_cite(data.bibliography[key]);\n });\n cite_hover_str = cite_hover_str.replace(/\"/g, \"'\")\n var orig_string = el.innerHTML;\n if (orig_string != \"\") orig_string += \" \";\n el.innerHTML = `${orig_string}${cite_string}`;\n }\n });\n\n let bibEl = dom.querySelector(\"dt-bibliography\");\n if (bibEl) {\n let ol = dom.createElement(\"ol\");\n citations.forEach(key => {\n let el = dom.createElement(\"li\");\n el.innerHTML = bibliography_cite(data.bibliography[key]);\n ol.appendChild(el);\n })\n bibEl.appendChild(ol);\n }\n\n function inline_cite_short(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var n = data.citations.indexOf(key)+1;\n return \"\"+n;\n } else {\n return \"?\";\n }\n }\n return \"[\"+keys.map(cite_string).join(\", \")+\"]\";\n }\n\n function inline_cite_long(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var ent = data.bibliography[key];\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var year = ent.year;\n if (names.length == 1) return names[0] + \", \" + year;\n if (names.length == 2) return names[0] + \" & \" + names[1] + \", \" + year;\n if (names.length > 2) return names[0] + \", et al., \" + year;\n } else {\n return \"?\";\n }\n }\n return keys.map(cite_string).join(\", \");\n }\n\n function author_string(ent, template, sep, finalSep){\n var names = ent.author.split(\" and \");\n let name_strings = names.map(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1];\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n var initials = \"\";\n if (firsts != undefined) {\n initials = firsts.trim().split(\" \").map(s => s.trim()[0]);\n initials = initials.join(\".\")+\".\";\n }\n return template.replace(\"${F}\", firsts)\n .replace(\"${L}\", last)\n .replace(\"${I}\", initials);\n });\n if (names.length > 1) {\n var str = name_strings.slice(0, names.length-1).join(sep);\n str += (finalSep || sep) + name_strings[names.length-1];\n return str;\n } else {\n return name_strings[0];\n }\n }\n\n function venue_string(ent) {\n var cite = (ent.journal || ent.booktitle || \"\")\n if (\"volume\" in ent){\n var issue = ent.issue || ent.number;\n issue = (issue != undefined)? \"(\"+issue+\")\" : \"\";\n cite += \", Vol \" + ent.volume + issue;\n }\n if (\"pages\" in ent){\n cite += \", pp. \" + ent.pages\n }\n if (cite != \"\") cite += \". \"\n if (\"publisher\" in ent){\n cite += ent.publisher;\n if (cite[cite.length-1] != \".\") cite += \".\";\n }\n return cite;\n }\n\n function link_string(ent){\n if (\"url\" in ent){\n var url = ent.url;\n var arxiv_match = (/arxiv\\.org\\/abs\\/([0-9\\.]*)/).exec(url);\n if (arxiv_match != null){\n url = `http://arxiv.org/pdf/${arxiv_match[1]}.pdf`;\n }\n\n if (url.slice(-4) == \".pdf\"){\n var label = \"PDF\";\n } else if (url.slice(-5) == \".html\") {\n var label = \"HTML\";\n }\n return `  [${label||\"link\"}]`;\n }/* else if (\"doi\" in ent){\n return `  [DOI]`;\n }*/ else {\n return \"\";\n }\n }\n function doi_string(ent, new_line){\n if (\"doi\" in ent) {\n return `${new_line?\"
    \":\"\"} DOI: ${ent.doi}`;\n } else {\n return \"\";\n }\n }\n\n function bibliography_cite(ent, fancy){\n if (ent){\n var cite = \"\" + ent.title + \" \"\n cite += link_string(ent) + \"
    \";\n cite += author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += venue_string(ent);\n cite += doi_string(ent);\n return cite\n /*var cite = author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += \"\" + ent.title + \". \";\n cite += venue_string(ent);\n cite += doi_string(ent);\n cite += link_string(ent);\n return cite*/\n } else {\n return \"?\";\n }\n }\n\n function hover_cite(ent){\n if (ent){\n var cite = \"\";\n cite += \"\" + ent.title + \"\";\n cite += link_string(ent);\n cite += \"
    \"\n\n var a_str = author_string(ent, \"${I} ${L}\", \", \") + \".\";\n var v_str = venue_string(ent).trim() + \" \" + ent.year + \". \" + doi_string(ent, true);\n\n if ((a_str+v_str).length < Math.min(40, ent.title.length)) {\n cite += a_str + \" \" + v_str;\n } else {\n cite += a_str + \"
    \" + v_str;\n }\n return cite;\n } else {\n return \"?\";\n }\n }\n\n\n //https://scholar.google.com/scholar?q=allintitle%3ADocument+author%3Aolah\n function get_GS_URL(ent){\n if (ent){\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var title = ent.title.split(\" \")//.replace(/[,:]/, \"\")\n var url = \"http://search.labs.crossref.org/dois?\"//\"\"https://scholar.google.com/scholar?\"\n url += uris({q: names.join(\" \") + \" \" + title.join(\" \")})\n }\n\n }\n}\n","export default function(dom, data) {\n\n var fnTags = [].slice.apply(dom.querySelectorAll(\"dt-fn\"));\n var fnContent = [];\n fnTags.forEach((el,n) => {\n var content = el.innerHTML;\n fnContent.push(content);\n n = (n+1)+\"\";\n var key = \"fn-\"+n;\n var escaped_content = content.replace(/\"/g, \"'\");\n el.innerHTML = `${n}`;\n });\n\n let fnList = dom.querySelector(\"dt-fn-list\");\n if (fnList) {\n let ol = dom.createElement(\"ol\");\n fnContent.forEach(content => {\n let el = dom.createElement(\"li\");\n el.innerHTML = content;\n ol.appendChild(el);\n })\n fnList.appendChild(ol);\n }\n\n}\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n */\n\n;(function() {\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^( *[-*_]){3,} *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,\n nptable: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n blockquote: /^( *>[^\\n]+(\\n(?!def)[^\\n]+)*\\n*)+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n table: noop,\n paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,\n text: /^[^\\n]+/\n};\n\nblock.bullet = /(?:[*+-]|\\d+\\.)/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = replace(block.item, 'gm')\n (/bull/g, block.bullet)\n ();\n\nblock.list = replace(block.list)\n (/bull/g, block.bullet)\n ('hr', '\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))')\n ('def', '\\\\n+(?=' + block.def.source + ')')\n ();\n\nblock.blockquote = replace(block.blockquote)\n ('def', block.def)\n ();\n\nblock._tag = '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'\n + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'\n + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|[^\\\\w\\\\s@]*@)\\\\b';\n\nblock.html = replace(block.html)\n ('comment', //)\n ('closed', /<(tag)[\\s\\S]+?<\\/\\1>/)\n ('closing', /])*?>/)\n (/tag/g, block._tag)\n ();\n\nblock.paragraph = replace(block.paragraph)\n ('hr', block.hr)\n ('heading', block.heading)\n ('lheading', block.lheading)\n ('blockquote', block.blockquote)\n ('tag', '<' + block._tag)\n ('def', block.def)\n ();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]*?)\\s*\\1 *(?:\\n+|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = replace(block.paragraph)\n ('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n ();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top, bq) {\n var src = src.replace(/^ +$/gm, '')\n , next\n , loose\n , cap\n , bull\n , b\n , item\n , space\n , i\n , l;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic\n ? cap.replace(/\\n+$/, '')\n : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top, true);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n\n this.tokens.push({\n type: 'list_start',\n ordered: bull.length > 1\n });\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n this.tokens.push({\n type: loose\n ? 'loose_item_start'\n : 'list_item_start'\n });\n\n // Recurse.\n this.token(item, false, bq);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if ((!bq && top) && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.links[cap[1].toLowerCase()] = {\n href: cap[2],\n title: cap[3]\n };\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i]\n .replace(/^ *\\| *| *\\| *$/g, '')\n .split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n autolink: /^<([^ >]+(@|:\\/)[^ >]+)>/,\n url: noop,\n tag: /^|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^\\b_((?:[^_]|__)+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n code: /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n text: /^[\\s\\S]+?(?=[\\\\?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\ninline.link = replace(inline.link)\n ('inside', inline._inside)\n ('href', inline._href)\n ();\n\ninline.reflink = replace(inline.reflink)\n ('inside', inline._inside)\n ();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: replace(inline.escape)('])', '~|])')(),\n url: /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n text: replace(inline.text)\n (']|', '~]|')\n ('|', '|https?://|')\n ()\n});\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: replace(inline.br)('{2,}', '*')(),\n text: replace(inline.gfm.text)('{2,}', '*')()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer;\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new\n Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n var out = ''\n , link\n , text\n , href\n , cap;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += cap[1];\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = cap[1].charAt(6) === ':'\n ? this.mangle(cap[1].substring(7))\n : this.mangle(cap[1]);\n href = this.mangle('mailto:') + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n src = src.substring(cap[0].length);\n text = escape(cap[1]);\n href = text;\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^/i.test(cap[0])) {\n this.inLink = false;\n }\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0]\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out += this.outputLink(cap, {\n href: cap[2],\n title: cap[3]\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2], true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = escape(link.href)\n , title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = ''\n , l = text.length\n , i = 0\n , ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || {};\n}\n\nRenderer.prototype.code = function(code, lang, escaped) {\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '\\n
    ';\n }\n\n return '
    '\n    + (escaped ? code : escape(code, true))\n    + '\\n
    \\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '
    \\n' + quote + '
    \\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw) {\n return ''\n + text\n + '\\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n};\n\nRenderer.prototype.list = function(body, ordered) {\n var type = ordered ? 'ol' : 'ul';\n return '<' + type + '>\\n' + body + '\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '
  • ' + text + '
  • \\n';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '

    ' + text + '

    \\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + '\\n'\n + body\n + '\\n'\n + '
    \\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '\\n' + content + '\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' style=\"text-align:' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.em = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? '
    ' : '
    ';\n};\n\nRenderer.prototype.del = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n if (this.options.sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return '';\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0) {\n return '';\n }\n }\n var out = '
    ';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n var out = '\"'' : '>';\n return out;\n};\n\nRenderer.prototype.text = function(text) {\n return text;\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer;\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options, renderer) {\n var parser = new Parser(options, renderer);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options, this.renderer);\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n this.token.text);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = ''\n , body = ''\n , i\n , row\n , cell\n , flags\n , j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n flags = { header: true, align: this.token.align[i] };\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n var body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n var body = ''\n , ordered = this.token.ordered;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered);\n }\n case 'list_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'loose_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'html': {\n var html = !this.token.pre && !this.options.pedantic\n ? this.inline.output(this.token.text)\n : this.token.text;\n return this.renderer.html(html);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n }\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n return html\n .replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\nfunction unescape(html) {\n\t// explicitly match decimal, hex, and named HTML entities \n return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/g, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction replace(regex, opt) {\n regex = regex.source;\n opt = opt || '';\n return function self(name, val) {\n if (!name) return new RegExp(regex, opt);\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return self;\n };\n}\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1\n , target\n , key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n\n var highlight = opt.highlight\n , tokens\n , pending\n , i = 0;\n\n try {\n tokens = Lexer.lex(src, opt)\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/chjj/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occured:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n sanitizer: null,\n mangle: true,\n smartLists: false,\n silent: false,\n highlight: null,\n langPrefix: 'lang-',\n smartypants: false,\n headerPrefix: '',\n renderer: new Renderer,\n xhtml: false\n};\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.parse = marked;\n\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n this.marked = marked;\n}\n\n}).call(function() {\n return this || (typeof window !== 'undefined' ? window : global);\n}());\n","import marked from 'marked';\n\nmarked.setOptions({\n gfm: true,\n smartypants: true\n});\n\nexport default function(dom, data) {\n let markdownElements = [].slice.call(dom.querySelectorAll('[markdown]'));\n markdownElements.forEach(el => {\n let content = el.innerHTML;\n // Set default indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n\n el.innerHTML = marked(content);\n });\n}\n","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = _self.Prism = {\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/ text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\tbreak tokenloop;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t delNum = 1;\n\n\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t to = match.index + match[0].length,\n\t\t\t\t\t\t k = i,\n\t\t\t\t\t\t p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && p < to; ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t match = match[0].slice(lookbehindLength),\n\t\t\t\t\t to = from + match.length,\n\t\t\t\t\t before = str.slice(0, from),\n\t\t\t\t\t after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (env.type == 'comment') {\n\t\tenv.attributes['spellcheck'] = 'true';\n\t}\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n \t// In worker\n\t_self.addEventListener('message', function(evt) {\n\t\tvar message = JSON.parse(evt.data),\n\t\t lang = message.language,\n\t\t code = message.code,\n\t\t immediateClose = message.immediateClose;\n\n\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\tif (immediateClose) {\n\t\t\t_self.close();\n\t\t}\n\t}, false);\n\n\treturn _self.Prism;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (document.addEventListener && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': //,\n\t'prolog': /<\\?[\\w\\W]+?\\?>/,\n\t'doctype': //i,\n\t'cdata': //i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\w\\W])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:('|\")[\\w\\W]*?(\\1)|[^\\s>]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /[=>\"']/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\w\\W]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^\\{\\}\\s][^\\{\\};]*?(?=\\s*\\{)/,\n\t'string': {\n\t\tpattern: /(\"|')(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'property': /(\\b|\\B)[\\w-]+(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|').*?\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\w\\W]*?\\*\\//,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[a-z0-9_\\.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /(\\.|\\\\)/\n\t\t}\n\t},\n\t'keyword': /\\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(0x[\\dA-Fa-f]+|0b[01]+|0o[0-7]+|\\d*\\.?\\d+([Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*(?=\\()/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*\\*?|\\/|~|\\^|%|\\.{3}/\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[.+?]|\\\\.|[^/\\\\\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\\\\\|\\\\?[^\\\\])*?`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript'\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tif(Array.prototype.forEach) { // Check to prevent error in IE8\n\t\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\t\tvar language, parent = pre;\n\t\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\t\tparent = parent.parentNode;\n\t\t\t\t}\n\n\t\t\t\tif (parent) {\n\t\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t\t}\n\n\t\t\t\tif (!language) {\n\t\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t\t}\n\n\t\t\t\tvar code = document.createElement('code');\n\t\t\t\tcode.className = 'language-' + language;\n\n\t\t\t\tpre.textContent = '';\n\n\t\t\t\tcode.textContent = 'Loading…';\n\n\t\t\t\tpre.appendChild(code);\n\n\t\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\t\txhr.open('GET', src, true);\n\n\t\t\t\txhr.onreadystatechange = function () {\n\t\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\txhr.send(null);\n\t\t\t});\n\t\t}\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\n})();\n","import Prism from \"prismjs\";\n\nexport default function(dom, data) {\n let codeElements = [].slice.call(dom.querySelectorAll(\"dt-code\"));\n codeElements.forEach(el => {\n let content = el.textContent;\n el.innerHTML = \"\";\n let language = el.getAttribute(\"language\");\n let c = dom.createElement(\"code\");\n if (el.getAttribute(\"block\") === \"\") {\n // Let's normalize the tab indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n let p = dom.createElement(\"pre\");\n p.appendChild(c);\n el.appendChild(p);\n } else {\n el.appendChild(c);\n }\n let highlighted = content;\n if (Prism.languages[language]) {\n c.setAttribute(\"class\", \"language-\" + language);\n highlighted = Prism.highlight(content, Prism.languages[language]);\n }\n c.innerHTML = highlighted;\n });\n}\n","export default function(dom, data) {\n\n var textNodes = dom.createTreeWalker(\n dom.body,\n dom.defaultView.NodeFilter.SHOW_TEXT\n );\n while (textNodes.nextNode()) {\n var n = textNodes.currentNode,\n text = n.nodeValue;\n if (text && acceptNode(n)) {\n text = quotes(text);\n text = punctuation(text);\n n.nodeValue = text;\n }\n }\n}\n\nfunction acceptNode(node) {\n var parent = node.parentElement;\n var isMath = (parent && parent.getAttribute && parent.getAttribute(\"class\")) ? parent.getAttribute(\"class\").includes(\"katex\") || parent.getAttribute(\"class\").includes(\"MathJax\") : false;\n return parent &&\n parent.nodeName !== \"SCRIPT\" &&\n parent.nodeName !== \"STYLE\" &&\n parent.nodeName !== \"CODE\" &&\n parent.nodeName !== \"PRE\" &&\n parent.nodeName !== \"SPAN\" &&\n parent.nodeName !== \"DT-HEADER\" &&\n parent.nodeName !== \"DT-BYLINE\" &&\n parent.nodeName !== \"DT-MATH\" &&\n parent.nodeName !== \"DT-CODE\" &&\n parent.nodeName !== \"DT-BIBLIOGRAPHY\" &&\n parent.nodeName !== \"DT-FOOTER\" &&\n parent.nodeType !== 8 && //comment nodes\n !isMath;\n}\n\n\n/*!\n * typeset - Typesetting for the web\n * @version v0.1.6\n * @link https://github.com/davidmerfield/Typeset.js\n * @author David Merfield\n */\n // which has a CC0 license\n // http://creativecommons.org/publicdomain/zero/1.0/\n\n\nfunction punctuation(text){\n\n // Dashes\n text = text.replace(/--/g, '\\u2014');\n text = text.replace(/ \\u2014 /g,\"\\u2009\\u2014\\u2009\"); //this has thin spaces\n\n // Elipses\n text = text.replace(/\\.\\.\\./g,'…');\n\n // Nbsp for punc with spaces\n var NBSP = \"\\u00a0\";\n var NBSP_PUNCTUATION_START = /([«¿¡]) /g;\n var NBSP_PUNCTUATION_END = / ([\\!\\?:;\\.,‽»])/g;\n\n text = text.replace(NBSP_PUNCTUATION_START, '$1' + NBSP);\n text = text.replace(NBSP_PUNCTUATION_END, NBSP + '$1');\n\n return text;\n}\n\nfunction quotes(text) {\n\n text = text\n .replace(/(\\W|^)\"([^\\s\\!\\?:;\\.,‽»])/g, '$1\\u201c$2') // beginning \"\n .replace(/(\\u201c[^\"]*)\"([^\"]*$|[^\\u201c\"]*\\u201c)/g, '$1\\u201d$2') // ending \"\n .replace(/([^0-9])\"/g,'$1\\u201d') // remaining \" at end of word\n .replace(/(\\W|^)'(\\S)/g, '$1\\u2018$2') // beginning '\n .replace(/([a-z])'([a-z])/ig, '$1\\u2019$2') // conjunction's possession\n .replace(/((\\u2018[^']*)|[a-z])'([^0-9]|$)/ig, '$1\\u2019$3') // ending '\n .replace(/(\\u2018)([0-9]{2}[^\\u2019]*)(\\u2018([^0-9]|$)|$|\\u2019[a-z])/ig, '\\u2019$2$3') // abbrev. years like '93\n .replace(/(\\B|^)\\u2018(?=([^\\u2019]*\\u2019\\b)*([^\\u2019\\u2018]*\\W[\\u2019\\u2018]\\b|[^\\u2019\\u2018]*$))/ig, '$1\\u2019') // backwards apostrophe\n .replace(/'''/g, '\\u2034') // triple prime\n .replace(/(\"|'')/g, '\\u2033') // double prime\n .replace(/'/g, '\\u2032');\n\n // Allow escaped quotes\n text = text.replace(/\\\\“/, '\\\"');\n text = text.replace(/\\\\”/, '\\\"');\n text = text.replace(/\\\\’/, '\\'');\n text = text.replace(/\\\\‘/, '\\'');\n\n return text;\n}\n\nfunction ligatures(text){\n\n text = text.replace(/fi/g, 'fi');\n text = text.replace(/fl/g, 'fl');\n\n return text;\n};\n","import code from './hover-box.txt';\n\nexport default function(dom) {\n let s = dom.createElement(\"script\");\n s.textContent = code;\n dom.querySelector(\"body\").appendChild(s);\n}\n","//import xml from \"xml\";\n\nexport default function(data) {\n\n\n var date = data.publishedDate;\n\n var batch_timestamp = Math.floor(Date.now() / 1000);\n var batch_id = data.authors.length ? data.authors[0].lastName.toLowerCase().slice(0,20) : \"Anonymous\";\n batch_id += \"_\" + date.getFullYear();\n batch_id += \"_\" + data.title.split(\" \")[0].toLowerCase().slice(0,20) + \"_\" + batch_timestamp;\n // generate XML\n var crf_data =\n {doi_batch : [\n\n { _attr: {\n version: \"4.3.7\",\n xmlns: \"http://www.crossref.org/schema/4.3.7\",\n \"xmlns:xsi\": \"http://www.w3.org/2001/XMLSchema-instance\",\n \"xsi:schemaLocation\": \"http://www.crossref.org/schema/4.3.7 http://www.crossref.org/schemas/crossref4.3.7.xsd\",\n }},\n\n { head: [\n {doi_batch_id: batch_id},\n {timestamp: batch_timestamp},\n {depositor: [\n {depositor_name: data.journal.publisherName},\n {email_address: data.journal.publisherEmail},\n ]},\n {registrant: data.journal.publisherName},\n ]},\n\n {body: [\n {journal: [\n\n {journal_metadata: [\n {full_title: data.journal.full_title || data.journal.title},\n {abbrev_title: data.journal.abbrev_title || data.journal.title || data.journal.full_title},\n {issn: data.journal.issn},\n {doi_data: [\n {doi: data.journal.doi},\n {resource: data.journal.url},\n ]},\n ]},\n\n {journal_issue: [\n {publication_date: [\n {month: date.getMonth()+1},\n {year: date.getFullYear()},\n ]},\n {journal_volume: [\n {volume: data.volume},\n ]},\n {issue: data.issue},\n ]},\n\n {journal_article: [\n {titles: [\n {title: data.title},\n ]},\n { contributors:\n data.authors.map((author, ind) => (\n {person_name: [\n { _attr: {\n contributor_role: \"author\",\n sequence: (ind == 0)? \"first\" : \"additional\"\n }},\n {given_name: author.firstName},\n {surname: author.lastName},\n {affiliation: author.affiliation}\n // TODO: ORCID?\n ]}\n ))\n },\n {publication_date: [\n {month: date.getMonth()+1},\n {day: date.getDate()},\n {year: date.getFullYear()}\n ]},\n { publisher_item: [\n {item_number: data.doi}\n ]},\n {doi_data: [\n {doi: data.doi},\n //{timestamp: \"\"},\n {resource: data.url},\n ]},\n {citation_list:\n data.citations.map(key =>\n citation_xml(key, data.bibliography[key]))\n }\n\n ]},\n\n ]},\n ]},\n ]};\n\n return xml(crf_data);\n}\n\nfunction citation_xml(key, ent){\n if (ent == undefined) return {};\n var info = [];\n info.push({_attr: {key: key}});\n if (\"title\" in ent)\n info.push({article_title: ent.title});\n if (\"author\" in ent)\n info.push({author: ent.author.split(\" and \")[0].split(\",\")[0].trim()});\n if (\"journal\" in ent)\n info.push({journal_title: ent.journal});\n if (\"booktitle\" in ent)\n info.push({volume_title: ent.booktitle});\n if (\"volume\" in ent)\n info.push({volume: ent.volume});\n if (\"issue\" in ent)\n info.push({issue: ent.issue});\n if (\"doi\" in ent)\n info.push({doi: ent.doi});\n return {citation: info}\n}\n\nfunction xml(obj) {\n //console.log(typeof(obj), obj)\n if (typeof obj === 'string') return obj;\n if (typeof obj === 'number') return \"\"+obj;\n let keys = Object.keys(obj);\n if (keys.length != 1) console.error(\"can't interpret \", obj, \"as xml\");\n let name = keys[0];\n var full_content = obj[name];\n var attr = {};\n if (Array.isArray(full_content)){\n var content = [];\n for (var i in full_content) {\n var obj = full_content[i];\n var obj_name = Object.keys(obj)[0];\n if (\"_attr\" == obj_name) {\n attr = obj[\"_attr\"];\n } else {\n //console.log(Object.keys(obj)[0])\n content.push(obj);\n }\n }\n } else {\n content = full_content;\n }\n if (content == undefined){\n content = \"undefined\"\n }\n\n let attr_string = \"\";\n for (var k in attr) {\n attr_string += ` ${k}=\\\"${attr[k]}\\\"`\n }\n\n //console.log(typeof content, Array.isArray(content), content instanceof String, content)\n if (Array.isArray(content)){\n content = content.map(xml);\n content = content.join(\"\\n\").split(\"\\n\");\n content = content.map(s => \" \" + s).join(\"\\n\")\n var result = `<${name}${attr_string}>\\n${content}\\n`;\n } else {\n content = xml(content);\n var result = `<${name}${attr_string}>${content}`;\n }\n return result;\n}\n","import logo from \"./distill-logo.svg\";\n\nconst html = `\n\n\n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-header\");\n if(el) {\n el.innerHTML = html;\n } else {\n let header = dom.createElement(\"dt-header\");\n header.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(header, b.firstChild);\n }\n}\n","import logo from \"./distill-logo.svg\";\n\nlet html = `\n\n\n
    \n
    \n \n ${logo}\n Distill\n \n is dedicated to clear explanations of machine learning\n
    \n
    \n About\n Submit\n Prize\n RSS\n Twitter\n
    \n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-footer\");\n if(el) {\n el.innerHTML = html;\n } else {\n let footer = dom.createElement(\"dt-footer\");\n footer.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.appendChild(footer);\n }\n}\n","import html from \"./components/html\";\nimport styles from \"./components/styles\";\nimport frontMatter from \"./components/front-matter\";\nimport bibliography from \"./components/bibliography\";\nimport expandData from \"./components/expand-data\";\nimport meta from \"./components/meta\";\nimport banner from \"./components/banner\";\nimport byline from \"./components/byline\";\nimport appendix from \"./components/appendix\";\nimport citation from \"./components/citation\";\nimport footnote from \"./components/footnote\";\nimport markdown from \"./components/markdown\";\nimport code from \"./components/code\";\nimport typeset from \"./components/typeset\";\nimport hoverBox from \"./components/hover-box-include\";\nimport generateCrossref from \"./components/generate-crossref\";\nimport header from \"./components/header\";\nimport footer from \"./components/footer\";\n\nfunction renderImmediately(dom) {\n html(dom);\n styles(dom);\n}\n\nfunction renderOnLoad(dom, data) {\n frontMatter(dom, data);\n bibliography(dom, data);\n expandData(dom, data);\n meta(dom, data);\n byline(dom, data);\n appendix(dom, data);\n markdown(dom, data);\n code(dom, data);\n citation(dom, data);\n footnote(dom, data);\n typeset(dom, data);\n hoverBox(dom, data);\n}\n\n// If we are in a browser, render automatically...\nif(window && window.document) {\n let data = {};\n renderImmediately(window.document);\n window.document.addEventListener(\"DOMContentLoaded\", (event) => {\n renderOnLoad(window.document, data);\n // Add a banner if we're not on localhost.\n if (window.location.hostname !== \"localhost\" && window.location.origin !== \"file://\") {\n banner(window.document, data);\n }\n generateCrossref(data);\n });\n}\n\n// If we are in node...\nfunction render(dom, data) {\n renderImmediately(dom);\n renderOnLoad(dom, data);\n // Remove script tag so it doesn't run again in the client\n let s = dom.querySelector('script[src*=\"distill.pub/template\"]');\n if (s) { s.parentElement.removeChild(s); };\n}\n\n// Distill specific rendering\nfunction distillify(dom, data) {\n header(dom, data);\n footer(dom, data);\n}\n\nexport {render as render};\nexport {distillify as distillify};\nexport {generateCrossref as generateCrossref};\n"],"names":["let","meta","YAMLException","common","require$$0","Mark","this","Type","require$$1","require$$2","type","arguments","Schema","require$$3","require$$4","require$$5","require","_hasOwnProperty","_toString","require$$6","require$$7","_require","DEFAULT_SAFE_SCHEMA","DEFAULT_FULL_SCHEMA","loadAll","load","safeLoadAll","safeLoad","State","dump","safeDump","require$$8","require$$9","ymlParse","interval","day","timeDay","timeYear","timeSunday","timeMonday","locale","escape","const","html","define","global","Prism","code","render"],"mappings":"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"} \ No newline at end of file From 9e14a84149600c3b9cd8e4bff62596d53f690de2 Mon Sep 17 00:00:00 2001 From: Shan Carter Date: Wed, 22 Mar 2017 10:54:38 -0700 Subject: [PATCH 13/42] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d2bc97c..6fa9df7 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,10 @@ # Distill Templates +This is the repository for the distill web framework. If you're interesting in just using the framework to write an article, visit http://distill.pub/guide/. If you're interested in submitting pull requests or developing on the framework itself, read on. + ## Development -Run `yarn start` to start a watching build rollup server. +Run `yarn start` to start a watching build rollup server. To view the sample pages in the repo, you can run `yarn serve` as a separate process which starts a static server. `yarn build` will run a one-time build. ## Testing From cdb426348701d2c6accfd511a040cc9166f2aa9e Mon Sep 17 00:00:00 2001 From: Shan Carter Date: Wed, 22 Mar 2017 10:55:32 -0700 Subject: [PATCH 14/42] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6fa9df7..8b8ed52 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Distill Templates -This is the repository for the distill web framework. If you're interesting in just using the framework to write an article, visit http://distill.pub/guide/. If you're interested in submitting pull requests or developing on the framework itself, read on. +This is the repository for the distill web framework. If you're interesting in just using the framework to write an article for [Distill journal](http://distill.pub), visit http://distill.pub/guide/. If you're interested in submitting pull requests or developing on the framework itself, read on. ## Development From e622bd0caa420274a409f610cc889c395cd843e8 Mon Sep 17 00:00:00 2001 From: Shan Carter Date: Wed, 22 Mar 2017 10:55:42 -0700 Subject: [PATCH 15/42] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8b8ed52..566ca3a 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Distill Templates -This is the repository for the distill web framework. If you're interesting in just using the framework to write an article for [Distill journal](http://distill.pub), visit http://distill.pub/guide/. If you're interested in submitting pull requests or developing on the framework itself, read on. +This is the repository for the distill web framework. If you're interesting in just using the framework to write an article for the [Distill journal](http://distill.pub), visit http://distill.pub/guide/. If you're interested in submitting pull requests or developing on the framework itself, read on. ## Development From ac37a19124f0a456ea4af93a051fca40a0bb9019 Mon Sep 17 00:00:00 2001 From: Shan Carter Date: Wed, 22 Mar 2017 10:56:41 -0700 Subject: [PATCH 16/42] 1.0.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 756e162..bf7af64 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "distill-template", - "version": "0.0.21", + "version": "1.0.0", "description": "Template for creating Distill articles.", "main": "dist/template.js", "scripts": { From a770e93ec9c6c744aa44c7c46336925674557636 Mon Sep 17 00:00:00 2001 From: Shan Carter Date: Wed, 22 Mar 2017 11:00:46 -0700 Subject: [PATCH 17/42] Update README.md --- README.md | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 566ca3a..b4c237e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,20 @@ # Distill Templates -This is the repository for the distill web framework. If you're interesting in just using the framework to write an article for the [Distill journal](http://distill.pub), visit http://distill.pub/guide/. If you're interested in submitting pull requests or developing on the framework itself, read on. +This is the repository for the distill web framework. If you're interesting in just using the framework to write an article for the [Distill journal](http://distill.pub), visit http://distill.pub/guide/. + +The general process for using this framework is to hotlink the compiled code in your dev environment. + +```html + +``` + +You can also install it as a local dependency through npm or with yarn. + +``` +npm install --D distill-template +``` + +If you're interested in submitting pull requests or developing on the framework itself, read on. ## Development From 56e8de28c4513f640a1cae8ff1fa0da22534c2af Mon Sep 17 00:00:00 2001 From: Shan Carter Date: Wed, 22 Mar 2017 11:01:47 -0700 Subject: [PATCH 18/42] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b4c237e..5b4cd92 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ The general process for using this framework is to hotlink the compiled code in ``` -You can also install it as a local dependency through npm or with yarn. +You can also install it as a local dependency through npm or with [yarn](https://yarnpkg.com). ``` npm install --D distill-template From f3578fbf1563c3a8c72a0e6e872c96014b49c7d6 Mon Sep 17 00:00:00 2001 From: Christopher Olah Date: Wed, 22 Mar 2017 16:07:01 -0700 Subject: [PATCH 19/42] fix bibtex field case issue --- components/bibliography.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/bibliography.js b/components/bibliography.js index 8e49693..e45c7a1 100644 --- a/components/bibliography.js +++ b/components/bibliography.js @@ -17,7 +17,7 @@ export default function(dom, data) { (full, x, char) => char); val = val.replace(/{\\([a-zA-Z])}/g, (full, char) => char); - e.entryTags[k] = val; + e.entryTags[k.toLowerCase()] = val; } bibliography[e.citationKey] = e.entryTags; bibliography[e.citationKey].type = e.entryType; From 1b7964f626e3f3a81d64a32b64a027e0807e7f8a Mon Sep 17 00:00:00 2001 From: Shan Carter Date: Wed, 22 Mar 2017 16:26:45 -0700 Subject: [PATCH 20/42] Extracting distill specific sections from the template --- components/appendix-distill.js | 28 ++++++++++++++ components/appendix.js | 39 ++++++------------- components/byline.js | 4 ++ components/styles-article.css | 1 - dist/template.js | 68 ++++++++++++++++++++-------------- dist/template.js.map | 2 +- examples/article.html | 1 + index.js | 3 ++ 8 files changed, 88 insertions(+), 58 deletions(-) create mode 100644 components/appendix-distill.js diff --git a/components/appendix-distill.js b/components/appendix-distill.js new file mode 100644 index 0000000..b1de806 --- /dev/null +++ b/components/appendix-distill.js @@ -0,0 +1,28 @@ +export default function(dom, data) { + let el = dom.querySelector('dt-appendix > div'); + if (el) { + let existingHTML = el.innerHTML; + let newHTML = ""; + +newHTML += `

    Updates and Corrections

    +

    View all changes to this article since it was first published. If you see a mistake or want to suggest a change, please create an issue on GitHub.

    `; + +newHTML += `

    Citations and Reuse

    +

    Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on GitHub. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: “Figure from …”.

    `; + +newHTML += `

    For attribution in academic contexts, please cite this work as

    +
    ${data.concatenatedAuthors}, "${data.title}", ${data.journal.title}, ${data.publishedYear}. http://doi.org/${data.doi}
    `; + +newHTML += `

    BibTeX citation

    +
    @article{${data.slug},
    +  author = {${data.bibtexAuthors}},
    +  title = {${data.title}},
    +  journal = {${data.journal.title}},
    +  year = {${data.publishedYear}},
    +  url = {${data.url}},
    +  doi = {${data.doi}}
    +}
    `; + + el.innerHTML = existingHTML + newHTML; + } +} \ No newline at end of file diff --git a/components/appendix.js b/components/appendix.js index 219b4ff..8f4a631 100644 --- a/components/appendix.js +++ b/components/appendix.js @@ -1,4 +1,4 @@ -const html = ` +const templateHTML = `
    -

    References

    - -

    Errors, Reuse, and Citation

    -

    If you see mistakes or want to suggest changes, please create an issue on GitHub.

    -

    Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on GitHub. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: “Figure from …”.

    -

    For attribution in academic contexts, please cite this work as

    -
    
    -  

    BibTeX citation

    -
    
     
    `; export default function(dom, data) { let el = dom.querySelector('dt-appendix') if (el) { - let oldHtml = el.innerHTML; - el.innerHTML = html; - let div = el.querySelector("div.l-body") + let userHTML = el.innerHTML; + el.innerHTML = templateHTML; + let newHTML = ""; + // If we have some footnotes on the page, render a container for the footnote list. if (dom.querySelector("dt-fn")) { - div.innerHTML = `

    Footnotes

    ` + div.innerHTML; + newHTML = newHTML + `

    Footnotes

    `; } - div.innerHTML = oldHtml + div.innerHTML; - if (data.githubCompareUpdatesUrl) { - div.innerHTML = `

    Updates

    View all changes to this article since it was first published.

    ` + div.innerHTML; + // If we have any citations on the page, render a container for the bibliography. + if (dom.querySelector("dt-cite")) { + newHTML = newHTML + `

    References

    `; } - el.querySelector("a.github").setAttribute("href", data.githubUrl); - el.querySelector("a.github-issue").setAttribute("href", data.githubUrl + "/issues/new"); - el.querySelector(".citation.short").textContent = data.concatenatedAuthors + ", " + '"' + data.title + '", Distill, ' + data.publishedYear + "."; - var bibtex = "@article{" + data.slug + ",\n"; - bibtex += " author = {" + data.bibtexAuthors + "},\n"; - bibtex += " title = {" + data.title + "},\n"; - bibtex += " journal = {Distill},\n"; - bibtex += " year = {" + data.publishedYear + "},\n"; - bibtex += " note = {" + data.url + "}\n"; - bibtex += "}"; - el.querySelector(".citation.long").textContent = bibtex; + let div = el.querySelector("div.l-body") + div.innerHTML = userHTML + newHTML; } } diff --git a/components/byline.js b/components/byline.js index c091191..424620c 100644 --- a/components/byline.js +++ b/components/byline.js @@ -134,14 +134,18 @@ const template = `
    {{/authors}} + {{#publishedYear}}
    {{publishedMonth}}. {{publishedDay}}
    {{publishedYear}}
    + {{/publishedYear}} + {{#publishedYear}}
    Citation:
    {{concatenatedAuthors}}, {{publishedYear}}
    + {{/publishedYear}} ` diff --git a/components/styles-article.css b/components/styles-article.css index 379f46d..a3ac55a 100644 --- a/components/styles-article.css +++ b/components/styles-article.css @@ -5,7 +5,6 @@ dt-article { padding-bottom: 72px; overflow: hidden; background: white; - min-height: calc(100vh - 70px - 182px); } @media(min-width: 1024px) { diff --git a/dist/template.js b/dist/template.js index d9d716b..872a13f 100644 --- a/dist/template.js +++ b/dist/template.js @@ -28,7 +28,7 @@ var base = "html {\n font: 400 16px/1.55em -apple-system, BlinkMacSystemFont, \ var layout = "/*\n Column: 60px\n Gutter: 24px\n\n Body: 648px\n - 8 columns\n - 7 gutters\n Middle: 816px\n Page: 984px\n - 12 columns\n - 11 gutters\n*/\n\n.l-body,\n.l-body-outset,\n.l-page,\n.l-page-outset,\n.l-middle,\n.l-middle-outset,\ndt-article > div,\ndt-article > p,\ndt-article > h1,\ndt-article > h2,\ndt-article > h3,\ndt-article > h4,\ndt-article > figure,\ndt-article > ul,\ndt-article > dt-byline,\ndt-article > dt-code,\ndt-article section > div,\ndt-article section > p,\ndt-article section > h1,\ndt-article section > h2,\ndt-article section > h3,\ndt-article section > h4,\ndt-article section > figure,\ndt-article section > ul,\ndt-article section > dt-byline,\ndt-article section > dt-code {\n width: auto;\n margin-left: 24px;\n margin-right: 24px;\n box-sizing: border-box;\n}\n\n@media(min-width: 768px) {\n .l-body,\n .l-body-outset,\n .l-page,\n .l-page-outset,\n .l-middle,\n .l-middle-outset,\n dt-article > div,\n dt-article > p,\n dt-article > h1,\n dt-article > h2,\n dt-article > h3,\n dt-article > h4,\n dt-article > figure,\n dt-article > ul,\n dt-article > dt-byline,\n dt-article > dt-code,\n dt-article section > div,\n dt-article section > p,\n dt-article section > h1,\n dt-article section > h2,\n dt-article section > h3,\n dt-article section > h4,\n dt-article section > figure,\n dt-article section > ul,\n dt-article section > dt-byline,\n dt-article section > dt-code {\n margin-left: 72px;\n margin-right: 72px;\n }\n}\n\n@media(min-width: 1080px) {\n .l-body,\n dt-article > div,\n dt-article > p,\n dt-article > h2,\n dt-article > h3,\n dt-article > h4,\n dt-article > figure,\n dt-article > ul,\n dt-article > dt-byline,\n dt-article > dt-code,\n dt-article section > div,\n dt-article section > p,\n dt-article section > h2,\n dt-article section > h3,\n dt-article section > h4,\n dt-article section > figure,\n dt-article section > ul,\n dt-article section > dt-byline,\n dt-article section > dt-code {\n margin-left: calc(50% - 984px / 2);\n width: 648px;\n }\n .l-body-outset,\n dt-article .l-body-outset {\n margin-left: calc(50% - 984px / 2 - 96px/2);\n width: calc(648px + 96px);\n }\n .l-middle,\n dt-article .l-middle {\n width: 816px;\n margin-left: calc(50% - 984px / 2);\n margin-right: auto;\n }\n .l-middle-outset,\n dt-article .l-middle-outset {\n width: calc(816px + 96px);\n margin-left: calc(50% - 984px / 2 - 48px);\n margin-right: auto;\n }\n dt-article > h1,\n dt-article section > h1,\n .l-page,\n dt-article .l-page,\n dt-article.centered .l-page {\n width: 984px;\n margin-left: auto;\n margin-right: auto;\n }\n .l-page-outset,\n dt-article .l-page-outset,\n dt-article.centered .l-page-outset {\n width: 1080px;\n margin-left: auto;\n margin-right: auto;\n }\n .l-screen,\n dt-article .l-screen,\n dt-article.centered .l-screen {\n margin-left: auto;\n margin-right: auto;\n width: auto;\n }\n .l-screen-inset,\n dt-article .l-screen-inset,\n dt-article.centered .l-screen-inset {\n margin-left: 24px;\n margin-right: 24px;\n width: auto;\n }\n .l-gutter,\n dt-article .l-gutter {\n clear: both;\n float: right;\n margin-top: 0;\n margin-left: 24px;\n margin-right: calc((100vw - 984px) / 2 + 168px);\n width: calc((984px - 648px) / 2 - 24px);\n }\n\n /* Side */\n .side.l-body,\n dt-article .side.l-body {\n clear: both;\n float: right;\n margin-top: 0;\n margin-left: 48px;\n margin-right: calc((100vw - 984px + 648px) / 2);\n width: calc(648px / 2 - 24px - 84px);\n }\n .side.l-body-outset,\n dt-article .side.l-body-outset {\n clear: both;\n float: right;\n margin-top: 0;\n margin-left: 48px;\n margin-right: calc((100vw - 984px + 648px - 48px) / 2);\n width: calc(648px / 2 - 48px + 24px);\n }\n .side.l-middle,\n dt-article .side.l-middle {\n clear: both;\n float: right;\n width: calc(456px - 84px);\n margin-left: 48px;\n margin-right: calc((100vw - 984px) / 2 + 168px);\n }\n .side.l-middle-outset,\n dt-article .side.l-middle-outset {\n clear: both;\n float: right;\n width: 456px;\n margin-left: 48px;\n margin-right: calc((100vw - 984px) / 2 + 168px);\n }\n .side.l-page,\n dt-article .side.l-page {\n clear: both;\n float: right;\n margin-left: 48px;\n width: calc(624px - 84px);\n margin-right: calc((100vw - 984px) / 2);\n }\n .side.l-page-outset,\n dt-article .side.l-page-outset {\n clear: both;\n float: right;\n width: 624px;\n margin-right: calc((100vw - 984px) / 2);\n }\n}\n\n/* Centered */\n\n@media(min-width: 1080px) {\n .centered .l-body,\n .centered.l-body,\n dt-article.centered > div,\n dt-article.centered > p,\n dt-article.centered > h2,\n dt-article.centered > h3,\n dt-article.centered > h4,\n dt-article.centered > figure,\n dt-article.centered > ul,\n dt-article.centered > dt-byline,\n dt-article.centered > dt-code,\n dt-article.centered section > div,\n dt-article.centered section > p,\n dt-article.centered section > h2,\n dt-article.centered section > h3,\n dt-article.centered section > h4,\n dt-article.centered section > figure,\n dt-article.centered section > ul,\n dt-article.centered section > dt-byline,\n dt-article.centered section > dt-code,\n dt-article section.centered > div,\n dt-article section.centered > p,\n dt-article section.centered > h2,\n dt-article section.centered > h3,\n dt-article section.centered > h4,\n dt-article section.centered > figure,\n dt-article section.centered > ul,\n dt-article section.centered > dt-byline,\n dt-article section.centered > dt-code {\n margin-left: auto;\n margin-right: auto;\n width: 648px;\n }\n .centered .l-body-outset,\n .centered.l-body-outset,\n dt-article.centered .l-body-outset {\n margin-left: auto;\n margin-right: auto;\n width: calc(648px + 96px);\n }\n dt-article.centered > h1,\n dt-article.centered section > h1,\n dt-article section.centered > h1,\n .centered .l-middle,\n .centered.l-middle,\n dt-article.centered .l-middle {\n width: 816px;\n margin-left: auto;\n margin-right: auto;\n }\n\n .centered .l-middle-outset,\n .centered.l-middle-outset,\n dt-article.centered .l-middle-outset {\n width: calc(816px + 96px);\n margin-left: auto;\n margin-right: auto;\n }\n\n /* page and screen are already centered */\n\n /* Side */\n\n .centered .side.l-body,\n .centered dt-article .side.l-body {\n clear: both;\n float: right;\n margin-top: 0;\n margin-left: 48px;\n margin-right: calc((100vw - 648px) / 2);\n width: calc(4 * 60px + 3 * 24px);\n }\n .centered .side.l-body-outset,\n .centered dt-article .side.l-body-outset {\n clear: both;\n float: right;\n margin-top: 0;\n margin-left: 48px;\n margin-right: calc((100vw - 648px) / 2);\n width: calc(4 * 60px + 3 * 24px);\n }\n .centered .side.l-middle,\n .centered dt-article .side.l-middle {\n clear: both;\n float: right;\n width: 396px;\n margin-left: 48px;\n margin-right: calc((100vw - 984px) / 2 + 168px / 2);\n }\n .centered .side.l-middle-outset,\n .centered dt-article .side.l-middle-outset {\n clear: both;\n float: right;\n width: 456px;\n margin-left: 48px;\n margin-right: calc((100vw - 984px) / 2 + 168px);\n }\n .centered .side.l-page,\n .centered dt-article .side.l-page {\n clear: both;\n float: right;\n width: 480px;\n margin-right: calc((100vw - 984px) / 2);\n }\n .centered .side.l-page-outset,\n .centered dt-article .side.l-page-outset {\n clear: both;\n float: right;\n width: 480px;\n margin-right: calc((100vw - 984px) / 2);\n }\n .centered .l-gutter,\n .centered.l-gutter,\n dt-article.centered .l-gutter {\n clear: both;\n float: right;\n margin-top: 0;\n margin-left: 24px;\n margin-right: calc((100vw - 984px) / 2);\n width: calc((984px - 648px) / 2 - 24px);\n }\n\n}\n\n/* Rows and Columns */\n\n.row {\n display: flex;\n}\n.column {\n flex: 1;\n box-sizing: border-box;\n margin-right: 24px;\n margin-left: 24px;\n}\n.row > .column:first-of-type {\n margin-left: 0;\n}\n.row > .column:last-of-type {\n margin-right: 0;\n}\n"; -var article = "dt-article {\n display: block;\n color: rgba(0, 0, 0, 0.8);\n font: 17px/1.55em -apple-system, BlinkMacSystemFont, \"Roboto\", sans-serif;\n padding-bottom: 72px;\n overflow: hidden;\n background: white;\n min-height: calc(100vh - 70px - 182px);\n}\n\n@media(min-width: 1024px) {\n dt-article {\n font-size: 20px;\n }\n}\n\n/* H1 */\n\ndt-article h1 {\n margin-top: 18px;\n font-weight: 400;\n font-size: 40px;\n line-height: 1em;\n font-family: HoeflerText-Regular, Cochin, Georgia, serif;\n}\n@media(min-width: 768px) {\n dt-article h1 {\n font-size: 46px;\n margin-top: 48px;\n margin-bottom: 12px;\n }\n}\n\n@media(min-width: 1080px) {\n .centered h1 {\n text-align: center;\n }\n\n dt-article h1 {\n font-size: 50px;\n letter-spacing: -0.02em;\n }\n\n dt-article > h1:first-of-type,\n dt-article section > h1:first-of-type {\n margin-top: 80px;\n }\n}\n\n\n@media(min-width: 1200px) {\n dt-article h1 {\n font-size: 56px;\n }\n\n dt-article > h1:first-of-type {\n margin-top: 100px;\n }\n}\n\n/* H2 */\n\ndt-article h2 {\n font-family: HoeflerText-Regular, Cochin, Georgia, serif;\n font-weight: 400;\n font-size: 26px;\n line-height: 1.25em;\n margin-top: 36px;\n margin-bottom: 24px;\n}\n\n@media(min-width: 1024px) {\n dt-article h2 {\n margin-top: 48px;\n font-size: 30px;\n }\n}\n\ndt-article h1 + h2 {\n font-weight: 300;\n font-size: 20px;\n line-height: 1.4em;\n margin-top: 8px;\n font-style: normal;\n}\n\n\n@media(min-width: 1080px) {\n .centered h1 + h2 {\n text-align: center;\n }\n dt-article h1 + h2 {\n margin-top: 12px;\n font-size: 24px;\n }\n}\n\n/* H3 */\n\ndt-article h3 {\n font-family: HoeflerText-Regular, Georgia, serif;\n font-weight: 400;\n font-size: 20px;\n line-height: 1.4em;\n margin-top: 36px;\n margin-bottom: 18px;\n font-style: italic;\n}\n\ndt-article h1 + h3 {\n margin-top: 48px;\n}\n\n@media(min-width: 1024px) {\n dt-article h3 {\n font-size: 26px;\n }\n}\n\n/* H4 */\n\ndt-article h4 {\n font-weight: 600;\n text-transform: uppercase;\n font-size: 14px;\n line-height: 1.4em;\n}\n\ndt-article a {\n color: inherit;\n}\n\ndt-article p,\ndt-article ul,\ndt-article ol {\n margin-bottom: 24px;\n font-family: Georgia, serif;\n}\n\ndt-article p b,\ndt-article ul b,\ndt-article ol b {\n -webkit-font-smoothing: antialiased;\n}\n\ndt-article a {\n border-bottom: 1px solid rgba(0, 0, 0, 0.4);\n text-decoration: none;\n}\n\ndt-article a:hover {\n border-bottom: 1px solid rgba(0, 0, 0, 0.8);\n}\n\ndt-article .link {\n text-decoration: underline;\n cursor: pointer;\n}\n\ndt-article ul,\ndt-article ol {\n padding-left: 24px;\n}\n\ndt-article li {\n margin-bottom: 24px;\n margin-left: 0;\n padding-left: 0;\n}\n\ndt-article pre {\n font-size: 14px;\n margin-bottom: 20px;\n}\n\n\ndt-article hr {\n border: none;\n border-bottom: 1px solid rgba(0, 0, 0, 0.2);\n margin-top: 60px;\n margin-bottom: 60px;\n}\n\ndt-article section {\n margin-top: 60px;\n margin-bottom: 60px;\n}\n\n\n/* Figure */\n\ndt-article figure {\n position: relative;\n margin-top: 30px;\n margin-bottom: 30px;\n}\n\n@media(min-width: 1024px) {\n dt-article figure {\n margin-top: 48px;\n margin-bottom: 48px;\n }\n}\n\ndt-article figure img {\n width: 100%;\n}\n\ndt-article figure svg text,\ndt-article figure svg tspan {\n}\n\ndt-article figure figcaption {\n color: rgba(0, 0, 0, 0.6);\n font-size: 12px;\n line-height: 1.5em;\n}\n@media(min-width: 1024px) {\n dt-article figure figcaption {\n font-size: 13px;\n }\n}\n\ndt-article figure.external img {\n background: white;\n border: 1px solid rgba(0, 0, 0, 0.1);\n box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1);\n padding: 18px;\n box-sizing: border-box;\n}\n\ndt-article figure figcaption a {\n color: rgba(0, 0, 0, 0.6);\n}\n\n/*dt-article figure figcaption::before {\n position: relative;\n display: block;\n top: -20px;\n content: \"\";\n width: 25px;\n border-top: 1px solid rgba(0, 0, 0, 0.3);\n}*/\n\ndt-article span.equation-mimic {\n font-family: georgia;\n font-size: 115%;\n font-style: italic;\n}\n\ndt-article figure figcaption b {\n font-weight: 600;\n color: rgba(0, 0, 0, 1.0);\n}\n\ndt-article > dt-code,\ndt-article section > dt-code {\n display: block;\n}\n\ndt-article .citation {\n color: #668;\n cursor: pointer;\n}\n\ndt-include {\n width: auto;\n display: block;\n}\n"; +var article = "dt-article {\n display: block;\n color: rgba(0, 0, 0, 0.8);\n font: 17px/1.55em -apple-system, BlinkMacSystemFont, \"Roboto\", sans-serif;\n padding-bottom: 72px;\n overflow: hidden;\n background: white;\n}\n\n@media(min-width: 1024px) {\n dt-article {\n font-size: 20px;\n }\n}\n\n/* H1 */\n\ndt-article h1 {\n margin-top: 18px;\n font-weight: 400;\n font-size: 40px;\n line-height: 1em;\n font-family: HoeflerText-Regular, Cochin, Georgia, serif;\n}\n@media(min-width: 768px) {\n dt-article h1 {\n font-size: 46px;\n margin-top: 48px;\n margin-bottom: 12px;\n }\n}\n\n@media(min-width: 1080px) {\n .centered h1 {\n text-align: center;\n }\n\n dt-article h1 {\n font-size: 50px;\n letter-spacing: -0.02em;\n }\n\n dt-article > h1:first-of-type,\n dt-article section > h1:first-of-type {\n margin-top: 80px;\n }\n}\n\n\n@media(min-width: 1200px) {\n dt-article h1 {\n font-size: 56px;\n }\n\n dt-article > h1:first-of-type {\n margin-top: 100px;\n }\n}\n\n/* H2 */\n\ndt-article h2 {\n font-family: HoeflerText-Regular, Cochin, Georgia, serif;\n font-weight: 400;\n font-size: 26px;\n line-height: 1.25em;\n margin-top: 36px;\n margin-bottom: 24px;\n}\n\n@media(min-width: 1024px) {\n dt-article h2 {\n margin-top: 48px;\n font-size: 30px;\n }\n}\n\ndt-article h1 + h2 {\n font-weight: 300;\n font-size: 20px;\n line-height: 1.4em;\n margin-top: 8px;\n font-style: normal;\n}\n\n\n@media(min-width: 1080px) {\n .centered h1 + h2 {\n text-align: center;\n }\n dt-article h1 + h2 {\n margin-top: 12px;\n font-size: 24px;\n }\n}\n\n/* H3 */\n\ndt-article h3 {\n font-family: HoeflerText-Regular, Georgia, serif;\n font-weight: 400;\n font-size: 20px;\n line-height: 1.4em;\n margin-top: 36px;\n margin-bottom: 18px;\n font-style: italic;\n}\n\ndt-article h1 + h3 {\n margin-top: 48px;\n}\n\n@media(min-width: 1024px) {\n dt-article h3 {\n font-size: 26px;\n }\n}\n\n/* H4 */\n\ndt-article h4 {\n font-weight: 600;\n text-transform: uppercase;\n font-size: 14px;\n line-height: 1.4em;\n}\n\ndt-article a {\n color: inherit;\n}\n\ndt-article p,\ndt-article ul,\ndt-article ol {\n margin-bottom: 24px;\n font-family: Georgia, serif;\n}\n\ndt-article p b,\ndt-article ul b,\ndt-article ol b {\n -webkit-font-smoothing: antialiased;\n}\n\ndt-article a {\n border-bottom: 1px solid rgba(0, 0, 0, 0.4);\n text-decoration: none;\n}\n\ndt-article a:hover {\n border-bottom: 1px solid rgba(0, 0, 0, 0.8);\n}\n\ndt-article .link {\n text-decoration: underline;\n cursor: pointer;\n}\n\ndt-article ul,\ndt-article ol {\n padding-left: 24px;\n}\n\ndt-article li {\n margin-bottom: 24px;\n margin-left: 0;\n padding-left: 0;\n}\n\ndt-article pre {\n font-size: 14px;\n margin-bottom: 20px;\n}\n\n\ndt-article hr {\n border: none;\n border-bottom: 1px solid rgba(0, 0, 0, 0.2);\n margin-top: 60px;\n margin-bottom: 60px;\n}\n\ndt-article section {\n margin-top: 60px;\n margin-bottom: 60px;\n}\n\n\n/* Figure */\n\ndt-article figure {\n position: relative;\n margin-top: 30px;\n margin-bottom: 30px;\n}\n\n@media(min-width: 1024px) {\n dt-article figure {\n margin-top: 48px;\n margin-bottom: 48px;\n }\n}\n\ndt-article figure img {\n width: 100%;\n}\n\ndt-article figure svg text,\ndt-article figure svg tspan {\n}\n\ndt-article figure figcaption {\n color: rgba(0, 0, 0, 0.6);\n font-size: 12px;\n line-height: 1.5em;\n}\n@media(min-width: 1024px) {\n dt-article figure figcaption {\n font-size: 13px;\n }\n}\n\ndt-article figure.external img {\n background: white;\n border: 1px solid rgba(0, 0, 0, 0.1);\n box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1);\n padding: 18px;\n box-sizing: border-box;\n}\n\ndt-article figure figcaption a {\n color: rgba(0, 0, 0, 0.6);\n}\n\n/*dt-article figure figcaption::before {\n position: relative;\n display: block;\n top: -20px;\n content: \"\";\n width: 25px;\n border-top: 1px solid rgba(0, 0, 0, 0.3);\n}*/\n\ndt-article span.equation-mimic {\n font-family: georgia;\n font-size: 115%;\n font-style: italic;\n}\n\ndt-article figure figcaption b {\n font-weight: 600;\n color: rgba(0, 0, 0, 1.0);\n}\n\ndt-article > dt-code,\ndt-article section > dt-code {\n display: block;\n}\n\ndt-article .citation {\n color: #668;\n cursor: pointer;\n}\n\ndt-include {\n width: auto;\n display: block;\n}\n"; var code = "/**\n * prism.js default theme for JavaScript, CSS and HTML\n * Based on dabblet (http://dabblet.com)\n * @author Lea Verou\n */\n\ncode {\n white-space: nowrap;\n background: rgba(0, 0, 0, 0.04);\n border-radius: 2px;\n padding: 4px 7px;\n font-size: 15px;\n color: rgba(0, 0, 0, 0.6);\n}\n\npre code {\n display: block;\n background: white;\n border-left: 3px solid rgba(0, 0, 0, 0.05);\n padding: 0 0 0 24px;\n}\n\n\ncode[class*=\"language-\"],\npre[class*=\"language-\"] {\n text-shadow: 0 1px white;\n font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;\n text-align: left;\n white-space: pre;\n word-spacing: normal;\n word-break: normal;\n word-wrap: normal;\n line-height: 1.5;\n\n -moz-tab-size: 4;\n -o-tab-size: 4;\n tab-size: 4;\n\n -webkit-hyphens: none;\n -moz-hyphens: none;\n -ms-hyphens: none;\n hyphens: none;\n}\n\npre[class*=\"language-\"]::-moz-selection, pre[class*=\"language-\"] ::-moz-selection,\ncode[class*=\"language-\"]::-moz-selection, code[class*=\"language-\"] ::-moz-selection {\n text-shadow: none;\n background: #b3d4fc;\n}\n\npre[class*=\"language-\"]::selection, pre[class*=\"language-\"] ::selection,\ncode[class*=\"language-\"]::selection, code[class*=\"language-\"] ::selection {\n text-shadow: none;\n background: #b3d4fc;\n}\n\n@media print {\n code[class*=\"language-\"],\n pre[class*=\"language-\"] {\n text-shadow: none;\n }\n}\n\n/* Code blocks */\npre[class*=\"language-\"] {\n overflow: auto;\n}\n\n:not(pre) > code[class*=\"language-\"],\npre[class*=\"language-\"] {\n}\n\n/* Inline code */\n:not(pre) > code[class*=\"language-\"] {\n white-space: normal;\n}\n\n.token.comment,\n.token.prolog,\n.token.doctype,\n.token.cdata {\n color: slategray;\n}\n\n.token.punctuation {\n color: #999;\n}\n\n.namespace {\n opacity: .7;\n}\n\n.token.property,\n.token.tag,\n.token.boolean,\n.token.number,\n.token.constant,\n.token.symbol,\n.token.deleted {\n color: #905;\n}\n\n.token.selector,\n.token.attr-name,\n.token.string,\n.token.char,\n.token.builtin,\n.token.inserted {\n color: #690;\n}\n\n.token.operator,\n.token.entity,\n.token.url,\n.language-css .token.string,\n.style .token.string {\n color: #a67f59;\n background: hsla(0, 0%, 100%, .5);\n}\n\n.token.atrule,\n.token.attr-value,\n.token.keyword {\n color: #07a;\n}\n\n.token.function {\n color: #DD4A68;\n}\n\n.token.regex,\n.token.important,\n.token.variable {\n color: #e90;\n}\n\n.token.important,\n.token.bold {\n font-weight: bold;\n}\n.token.italic {\n font-style: italic;\n}\n\n.token.entity {\n cursor: help;\n}\n"; @@ -4220,7 +4220,7 @@ var bibliography = function(dom, data) { function (full, x, char) { return char; }); val = val.replace(/{\\([a-zA-Z])}/g, function (full, char) { return char; }); - e.entryTags[k] = val; + e.entryTags[k.toLowerCase()] = val; } bibliography[e.citationKey] = e.entryTags; bibliography[e.citationKey].type = e.entryType; @@ -5980,7 +5980,7 @@ var mustache = createCommonjsModule(function (module, exports) { var html$2 = "\n\n\n"; -var template = "\n
    \n
    \n {{#authors}}\n
    \n {{#personalURL}}\n {{name}}\n {{/personalURL}}\n {{^personalURL}}\n
    {{name}}
    \n {{/personalURL}}\n {{#affiliation}}\n {{#affiliationURL}}\n {{affiliation}}\n {{/affiliationURL}}\n {{^affiliationURL}}\n
    {{affiliation}}
    \n {{/affiliationURL}}\n {{/affiliation}}\n
    \n {{/authors}}\n
    \n
    \n
    {{publishedMonth}}. {{publishedDay}}
    \n
    {{publishedYear}}
    \n
    \n \n
    Citation:
    \n
    {{concatenatedAuthors}}, {{publishedYear}}
    \n
    \n
    \n"; +var template = "\n
    \n
    \n {{#authors}}\n
    \n {{#personalURL}}\n {{name}}\n {{/personalURL}}\n {{^personalURL}}\n
    {{name}}
    \n {{/personalURL}}\n {{#affiliation}}\n {{#affiliationURL}}\n {{affiliation}}\n {{/affiliationURL}}\n {{^affiliationURL}}\n
    {{affiliation}}
    \n {{/affiliationURL}}\n {{/affiliation}}\n
    \n {{/authors}}\n
    \n {{#publishedYear}}\n
    \n
    {{publishedMonth}}. {{publishedDay}}
    \n
    {{publishedYear}}
    \n
    \n {{/publishedYear}}\n {{#publishedYear}}\n \n
    Citation:
    \n
    {{concatenatedAuthors}}, {{publishedYear}}
    \n
    \n {{/publishedYear}}\n
    \n"; var byline = function(dom, data) { var el = dom.querySelector('dt-byline'); @@ -5989,39 +5989,49 @@ var byline = function(dom, data) { } }; -var html$3 = "\n\n\n
    \n

    References

    \n \n

    Errors, Reuse, and Citation

    \n

    If you see mistakes or want to suggest changes, please create an issue on GitHub.

    \n

    Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on GitHub. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: “Figure from …”.

    \n

    For attribution in academic contexts, please cite this work as

    \n
    \n  

    BibTeX citation

    \n
    \n
    \n"; +var templateHTML = "\n\n\n
    \n
    \n"; var appendix = function(dom, data) { var el = dom.querySelector('dt-appendix'); if (el) { - var oldHtml = el.innerHTML; - el.innerHTML = html$3; - var div = el.querySelector("div.l-body"); + var userHTML = el.innerHTML; + el.innerHTML = templateHTML; + var newHTML = ""; + // If we have some footnotes on the page, render a container for the footnote list. if (dom.querySelector("dt-fn")) { - div.innerHTML = "

    Footnotes

    " + div.innerHTML; + newHTML = newHTML + "

    Footnotes

    "; } - div.innerHTML = oldHtml + div.innerHTML; - if (data.githubCompareUpdatesUrl) { - div.innerHTML = "

    Updates

    View all changes to this article since it was first published.

    " + div.innerHTML; + // If we have any citations on the page, render a container for the bibliography. + if (dom.querySelector("dt-cite")) { + newHTML = newHTML + "

    References

    "; } - el.querySelector("a.github").setAttribute("href", data.githubUrl); - el.querySelector("a.github-issue").setAttribute("href", data.githubUrl + "/issues/new"); - el.querySelector(".citation.short").textContent = data.concatenatedAuthors + ", " + '"' + data.title + '", Distill, ' + data.publishedYear + "."; - var bibtex = "@article{" + data.slug + ",\n"; - bibtex += " author = {" + data.bibtexAuthors + "},\n"; - bibtex += " title = {" + data.title + "},\n"; - bibtex += " journal = {Distill},\n"; - bibtex += " year = {" + data.publishedYear + "},\n"; - bibtex += " note = {" + data.url + "}\n"; - bibtex += "}"; - el.querySelector(".citation.long").textContent = bibtex; + var div = el.querySelector("div.l-body"); + div.innerHTML = userHTML + newHTML; } }; +var appendixDistill = function(dom, data) { + var el = dom.querySelector('dt-appendix > div'); + if (el) { + var existingHTML = el.innerHTML; + var newHTML = ""; + +newHTML += "

    Updates and Corrections

    \n

    View all changes to this article since it was first published. If you see a mistake or want to suggest a change, please create an issue on GitHub.

    "; + +newHTML += "

    Citations and Reuse

    \n

    Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on GitHub. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: “Figure from …”.

    "; + +newHTML += "

    For attribution in academic contexts, please cite this work as

    \n
    " + (data.concatenatedAuthors) + ", \"" + (data.title) + "\", " + (data.journal.title) + ", " + (data.publishedYear) + ". http://doi.org/" + (data.doi) + "
    "; + +newHTML += "

    BibTeX citation

    \n
    @article{" + (data.slug) + ",\n  author = {" + (data.bibtexAuthors) + "},\n  title = {" + (data.title) + "},\n  journal = {" + (data.journal.title) + "},\n  year = {" + (data.publishedYear) + "},\n  url = {" + (data.url) + "},\n  doi = {" + (data.doi) + "}\n}
    "; + + el.innerHTML = existingHTML + newHTML; + } +}; + var citation = function(dom, data) { var css = "\n dt-cite {\n color: hsla(206, 90%, 20%, 0.7);\n }\n dt-cite .citation-number {\n cursor: default;\n white-space: nowrap;\n font-family: -apple-system, BlinkMacSystemFont, \"Roboto\", Helvetica, sans-serif;\n font-size: 75%;\n color: hsla(206, 90%, 20%, 0.7);\n display: inline-block;\n line-height: 1.1em;\n text-align: center;\n position: relative;\n top: -2px;\n margin: 0 2px;\n }\n figcaption dt-cite .citation-number {\n font-size: 11px;\n font-weight: normal;\n top: -2px;\n line-height: 1em;\n }\n "; @@ -8660,29 +8670,29 @@ function xml(obj) { var logo = "\n \n\n"; -var html$4 = "\n\n\n\n"; +var html$3 = "\n\n\n\n"; var header = function(dom, data) { var el = dom.querySelector("dt-header"); if(el) { - el.innerHTML = html$4; + el.innerHTML = html$3; } else { var header = dom.createElement("dt-header"); - header.innerHTML = html$4; + header.innerHTML = html$3; var b = dom.querySelector("body"); b.insertBefore(header, b.firstChild); } }; -var html$5 = "\n\n\n
    \n
    \n \n " + logo + "\n Distill\n \n is dedicated to clear explanations of machine learning\n
    \n
    \n About\n Submit\n Prize\n RSS\n Twitter\n
    \n
    \n"; +var html$4 = "\n\n\n
    \n
    \n \n " + logo + "\n Distill\n \n is dedicated to clear explanations of machine learning\n
    \n
    \n About\n Submit\n Prize\n RSS\n Twitter\n
    \n
    \n"; var footer = function(dom, data) { var el = dom.querySelector("dt-footer"); if(el) { - el.innerHTML = html$5; + el.innerHTML = html$4; } else { var footer = dom.createElement("dt-footer"); - footer.innerHTML = html$5; + footer.innerHTML = html$4; var b = dom.querySelector("body"); b.appendChild(footer); } @@ -8719,6 +8729,7 @@ if(window && window.document) { banner(window.document, data); } generateCrossref(data); + // console.log(data); }); } @@ -8734,6 +8745,7 @@ function render$1(dom, data) { // Distill specific rendering function distillify(dom, data) { header(dom, data); + appendixDistill(dom, data); footer(dom, data); } diff --git a/dist/template.js.map b/dist/template.js.map index e31ec06..bd880b9 100644 --- a/dist/template.js.map +++ b/dist/template.js.map @@ -1 +1 @@ -{"version":3,"file":null,"sources":["../components/html.js","../components/styles.js","../node_modules/js-yaml/lib/js-yaml/common.js","../node_modules/js-yaml/lib/js-yaml/exception.js","../node_modules/js-yaml/lib/js-yaml/mark.js","../node_modules/js-yaml/lib/js-yaml/type.js","../node_modules/js-yaml/lib/js-yaml/schema.js","../node_modules/js-yaml/lib/js-yaml/type/str.js","../node_modules/js-yaml/lib/js-yaml/type/seq.js","../node_modules/js-yaml/lib/js-yaml/type/map.js","../node_modules/js-yaml/lib/js-yaml/schema/failsafe.js","../node_modules/js-yaml/lib/js-yaml/type/null.js","../node_modules/js-yaml/lib/js-yaml/type/bool.js","../node_modules/js-yaml/lib/js-yaml/type/int.js","../node_modules/js-yaml/lib/js-yaml/type/float.js","../node_modules/js-yaml/lib/js-yaml/schema/json.js","../node_modules/js-yaml/lib/js-yaml/schema/core.js","../node_modules/js-yaml/lib/js-yaml/type/timestamp.js","../node_modules/js-yaml/lib/js-yaml/type/merge.js","../node_modules/js-yaml/lib/js-yaml/type/binary.js","../node_modules/js-yaml/lib/js-yaml/type/omap.js","../node_modules/js-yaml/lib/js-yaml/type/pairs.js","../node_modules/js-yaml/lib/js-yaml/type/set.js","../node_modules/js-yaml/lib/js-yaml/schema/default_safe.js","../node_modules/js-yaml/lib/js-yaml/type/js/undefined.js","../node_modules/js-yaml/lib/js-yaml/type/js/regexp.js","../node_modules/js-yaml/lib/js-yaml/type/js/function.js","../node_modules/js-yaml/lib/js-yaml/schema/default_full.js","../node_modules/js-yaml/lib/js-yaml/loader.js","../node_modules/js-yaml/lib/js-yaml/dumper.js","../node_modules/js-yaml/lib/js-yaml.js","../node_modules/js-yaml/index.js","../components/front-matter.js","../node_modules/bibtex-parse-js/bibtexParse.js","../components/bibliography.js","../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/utcMinute.js","../node_modules/d3-time/src/utcHour.js","../node_modules/d3-time/src/utcDay.js","../node_modules/d3-time/src/utcWeek.js","../node_modules/d3-time/src/utcMonth.js","../node_modules/d3-time/src/utcYear.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-time-format/src/isoFormat.js","../node_modules/d3-time-format/src/isoParse.js","../components/expand-data.js","../../node_modules/escape-html/index.js","../components/meta.js","../components/banner.js","../node_modules/mustache/mustache.js","../components/byline.js","../components/appendix.js","../components/citation.js","../components/footnote.js","../node_modules/marked/lib/marked.js","../components/markdown.js","../node_modules/prismjs/prism.js","../components/code.js","../components/typeset.js","../components/hover-box-include.js","../components/generate-crossref.js","../components/header.js","../components/footer.js","../index.js"],"sourcesContent":["export default function(dom) {\n if (!dom.querySelector(\"html\").getAttribute(\"lang\")) {\n dom.querySelector(\"html\").setAttribute(\"lang\", \"en\")\n }\n\n let head = dom.querySelector(\"head\");\n\n if (!dom.querySelector(\"meta[charset]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"charset\", \"utf-8\");\n head.appendChild(meta);\n }\n if (!dom.querySelector(\"meta[name=viewport]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"name\", \"viewport\");\n meta.setAttribute(\"content\", \"width=device-width, initial-scale=1\");\n head.appendChild(meta);\n }\n}\n","import base from './styles-base.css';\nimport layout from './styles-layout.css';\nimport article from './styles-article.css';\nimport code from './styles-code.css';\nimport print from './styles-print.css';\n\nexport default function(dom) {\n let s = dom.createElement(\"style\");\n s.textContent = base + layout + article + code + print;\n dom.querySelector(\"head\").appendChild(s);\n}\n","'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n var result = this.name + ': ';\n\n result += this.reason || '(unknown reason)';\n\n if (!compact && this.mark) {\n result += ' ' + this.mark.toString();\n }\n\n return result;\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n\nvar common = require('./common');\n\n\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\n\n\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head, start, tail, end, snippet;\n\n if (!this.buffer) return null;\n\n indent = indent || 4;\n maxLength = maxLength || 75;\n\n head = '';\n start = this.position;\n\n while (start > 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n\n tail = '';\n end = this.position;\n\n while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n\n snippet = this.buffer.slice(start, end);\n\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' +\n common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\n\nMark.prototype.toString = function toString(compact) {\n var snippet, where = '';\n\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n if (!compact) {\n snippet = this.getSnippet();\n\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n\n return where;\n};\n\n\nmodule.exports = Mark;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name, result) {\n var exclude = [];\n\n schema.include.forEach(function (includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n\n schema[name].forEach(function (currentType) {\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n exclude.push(previousIndex);\n }\n });\n\n result.push(currentType);\n });\n\n return result.filter(function (type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {}\n }, index, length;\n\n function collectType(type) {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n\n this.implicit.forEach(function (type) {\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n });\n\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\n\nSchema.DEFAULT = null;\n\n\nSchema.create = function createSchema() {\n var schemas, types;\n\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n\n if (!schemas.every(function (schema) { return schema instanceof Schema; })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n\n if (!types.every(function (type) { return type instanceof Type; })) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n return new Schema({\n include: schemas,\n explicit: types\n });\n};\n\n\nmodule.exports = Schema;\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 8\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 10 (except 0) or base 60\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch === ':') break;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n if (!hasDigits) return false;\n\n // if !base60 - done;\n if (ch !== ':') return true;\n\n // base60 almost not used, no needs to optimize\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch, base, digits = [];\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value, 16);\n return sign * parseInt(value, 8);\n }\n\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseInt(v, 10));\n });\n\n value = 0;\n base = 1;\n\n digits.forEach(function (d) {\n value += (d * base);\n base *= 60;\n });\n\n return sign * value;\n\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (object) { return '0b' + object.toString(2); },\n octal: function (object) { return '0' + object.toString(8); },\n decimal: function (object) { return object.toString(10); },\n hexadecimal: function (object) { return '0x' + object.toString(16).toUpperCase(); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n '^(?:[-+]?(?:[0-9][0-9_]*)\\\\.[0-9_]*(?:[eE][-+][0-9]+)?' +\n '|\\\\.[0-9_]+(?:[eE][-+][0-9]+)?' +\n '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' +\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data)) return false;\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign, base, digits;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n\n } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n\n value = 0.0;\n base = 1;\n\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n\n return sign * value;\n\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./failsafe')\n ],\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./json')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\nvar NodeBuffer;\n\ntry {\n // A trick for browserified version, to not include `Buffer` shim\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n // Wrap into Buffer for NodeJS and leave Array for browser\n if (NodeBuffer) return new NodeBuffer(result);\n\n return result;\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./core')\n ],\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n return true;\n}\n\nfunction constructJavascriptUndefined() {\n /*eslint-disable no-undefined*/\n return undefined;\n}\n\nfunction representJavascriptUndefined() {\n return '';\n}\n\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n if (data === null) return false;\n if (data.length === 0) return false;\n\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // if regexp starts with '/' it can have modifiers and must be properly closed\n // `/foo/gim` - modifiers tail can be maximum 3 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n\n if (modifiers.length > 3) return false;\n // if expression starts with /, is should be properly terminated\n if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n }\n\n return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // `/foo/gim` - tail can be maximum 4 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n\n return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object /*, style*/) {\n var result = '/' + object.source + '/';\n\n if (object.global) result += 'g';\n if (object.multiline) result += 'm';\n if (object.ignoreCase) result += 'i';\n\n return result;\n}\n\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n","'use strict';\n\nvar esprima;\n\n// Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n// If not found - try to fallback to window.esprima. If not\n// found too - then fail to parse.\n//\ntry {\n // workaround to exclude package from browserify list.\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n /*global window */\n if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n if (data === null) return false;\n\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true });\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction constructJavascriptFunction(data) {\n /*jslint evil:true*/\n\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true }),\n params = [],\n body;\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n throw new Error('Failed to resolve function');\n }\n\n ast.body[0].expression.params.forEach(function (param) {\n params.push(param.name);\n });\n\n body = ast.body[0].expression.body.range;\n\n // Esprima's ranges include the first '{' and the last '}' characters on\n // function expressions. So cut them out.\n /*eslint-disable no-new-func*/\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n}\n\nfunction representJavascriptFunction(object /*, style*/) {\n return object.toString();\n}\n\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n","// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [\n require('./default_safe')\n ],\n explicit: [\n require('../type/js/undefined'),\n require('../type/js/regexp'),\n require('../type/js/function')\n ]\n});\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00);\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n return new YAMLException(\n message,\n new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length;\n _position < _length;\n _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode) {\n var index, quantity;\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n throwError(state, 'duplicated mapping key');\n }\n _result[keyNode] = valueNode;\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else {\n break; // Reading is done. Go to the epilogue.\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if (state.lineIndent > nodeIndent && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!state.anchorMap.hasOwnProperty(alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag !== null && state.tag !== '!') {\n if (state.tag === '?') {\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length;\n typeIndex < typeQuantity;\n typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only assigned to plain scalars. So, it isn't\n // needed to check for 'kind' conformity.\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = {};\n state.anchorMap = {};\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n var documents = loadDocuments(input, options), index, length;\n\n for (index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nfunction safeLoadAll(input, output, options) {\n loadAll(input, output, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nfunction safeLoad(input, options) {\n return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// Simplified test for values allowed after the first character in plain style.\nfunction isPlainSafe(c) {\n // Uses a subset of nb-char - c-flow-indicator - \":\" - \"#\"\n // where nb-char ::= c-printable - b-char - c-byte-order-mark.\n return isPrintable(c) && c !== 0xFEFF\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // - \":\" - \"#\"\n && c !== CHAR_COLON\n && c !== CHAR_SHARP;\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n return isPrintable(c) && c !== 0xFEFF\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {\n var i;\n var char;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(string.charCodeAt(0))\n && !isWhitespace(string.charCodeAt(string.length - 1));\n\n if (singleLineOnly) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n return plain && !testAmbiguousType(string)\n ? STYLE_PLAIN : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (string[0] === ' ' && indentPerLevel > 9) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey) {\n state.dump = (function () {\n if (string.length === 0) {\n return \"''\";\n }\n if (!state.noCompatMode &&\n DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n return \"'\" + string + \"'\";\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = (string[0] === ' ') ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char;\n var escapeSeq;\n\n for (var i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n result += !escapeSeq && isPrintable(char)\n ? string[i]\n : escapeSeq || encodeHex(char);\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level, object[index], false, false)) {\n if (index !== 0) _result += ', ';\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || index !== 0) {\n _result += generateNextLine(state, level);\n }\n _result += '- ' + state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (index !== 0) pairBuffer += ', ';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + ': ';\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || index !== 0) {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n state.tag = explicit ? type.tag : '?';\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n writeBlockSequence(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey);\n }\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n state.dump = '!<' + state.tag + '> ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n if (writeNode(state, 0, input, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nfunction safeDump(input, options) {\n return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n","'use strict';\n\n\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\n\n\nfunction deprecated(name) {\n return function () {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\n\n\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\n\n// Deprecated schema names from JS-YAML 2.0.x\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\n\n// Deprecated functions from JS-YAML 1.x.x\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","'use strict';\n\n\nvar yaml = require('./lib/js-yaml.js');\n\n\nmodule.exports = yaml;\n","import ymlParse from \"js-yaml\";\n\nexport default function(dom, data) {\n let localData = {};\n let el = dom.querySelector('script[type=\"text/front-matter\"]');\n if (el) {\n let text = el.textContent;\n localData = ymlParse.safeLoad(text);\n }\n\n data.title = localData.title ? localData.title : \"Untitled\";\n data.description = localData.description ? localData.description : \"No description.\";\n\n data.authors = localData.authors ? localData.authors : [];\n\n data.authors = data.authors.map((author, i) =>{\n let a = {};\n let name = Object.keys(author)[0];\n if ((typeof author) === \"string\") {\n name = author;\n } else {\n a.personalURL = author[name];\n }\n let names = name.split(\" \");\n a.name = name;\n a.firstName = names.slice(0, names.length - 1).join(\" \");\n a.lastName = names[names.length -1];\n if(localData.affiliations[i]) {\n let affiliation = Object.keys(localData.affiliations[i])[0];\n if ((typeof localData.affiliations[i]) === \"string\") {\n affiliation = localData.affiliations[i]\n } else {\n a.affiliationURL = localData.affiliations[i][affiliation];\n }\n a.affiliation = affiliation;\n }\n return a;\n });\n \n\n}\n","/* start bibtexParse 0.0.22 */\n\n//Original work by Henrik Muehe (c) 2010\n//\n//CommonJS port by Mikola Lysenko 2013\n//\n//Port to Browser lib by ORCID / RCPETERS\n//\n//Issues:\n//no comment handling within strings\n//no string concatenation\n//no variable values yet\n//Grammar implemented here:\n//bibtex -> (string | preamble | comment | entry)*;\n//string -> '@STRING' '{' key_equals_value '}';\n//preamble -> '@PREAMBLE' '{' value '}';\n//comment -> '@COMMENT' '{' value '}';\n//entry -> '@' key '{' key ',' key_value_list '}';\n//key_value_list -> key_equals_value (',' key_equals_value)*;\n//key_equals_value -> key '=' value;\n//value -> value_quotes | value_braces | key;\n//value_quotes -> '\"' .*? '\"'; // not quite\n//value_braces -> '{' .*? '\"'; // not quite\n(function(exports) {\n\n function BibtexParser() {\n \n this.months = [\"jan\", \"feb\", \"mar\", \"apr\", \"may\", \"jun\", \"jul\", \"aug\", \"sep\", \"oct\", \"nov\", \"dec\"];\n this.notKey = [',','{','}',' ','='];\n this.pos = 0;\n this.input = \"\";\n this.entries = new Array();\n\n this.currentEntry = \"\";\n\n this.setInput = function(t) {\n this.input = t;\n };\n\n this.getEntries = function() {\n return this.entries;\n };\n\n this.isWhitespace = function(s) {\n return (s == ' ' || s == '\\r' || s == '\\t' || s == '\\n');\n };\n\n this.match = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n this.pos += s.length;\n } else {\n throw \"Token mismatch, expected \" + s + \", found \"\n + this.input.substring(this.pos);\n };\n this.skipWhitespace(canCommentOut);\n };\n\n this.tryMatch = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n return true;\n } else {\n return false;\n };\n this.skipWhitespace(canCommentOut);\n };\n\n /* when search for a match all text can be ignored, not just white space */\n this.matchAt = function() {\n while (this.input.length > this.pos && this.input[this.pos] != '@') {\n this.pos++;\n };\n\n if (this.input[this.pos] == '@') {\n return true;\n };\n return false;\n };\n\n this.skipWhitespace = function(canCommentOut) {\n while (this.isWhitespace(this.input[this.pos])) {\n this.pos++;\n };\n if (this.input[this.pos] == \"%\" && canCommentOut == true) {\n while (this.input[this.pos] != \"\\n\") {\n this.pos++;\n };\n this.skipWhitespace(canCommentOut);\n };\n };\n\n this.value_braces = function() {\n var bracecount = 0;\n this.match(\"{\", false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '}') {\n if (bracecount > 0) {\n bracecount--;\n } else {\n var end = this.pos;\n this.match(\"}\", false);\n return this.input.substring(start, end);\n };\n } else if (this.input[this.pos] == '{') {\n bracecount++;\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value\";\n };\n };\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.value_comment = function() {\n var str = '';\n var brcktCnt = 0;\n while (!(this.tryMatch(\"}\", false) && brcktCnt == 0)) {\n str = str + this.input[this.pos];\n if (this.input[this.pos] == '{')\n brcktCnt++;\n if (this.input[this.pos] == '}')\n brcktCnt--;\n if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n this.pos++;\n };\n return str;\n };\n\n this.value_quotes = function() {\n this.match('\"', false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '\"') {\n var end = this.pos;\n this.match('\"', false);\n return this.input.substring(start, end);\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n }\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.single_value = function() {\n var start = this.pos;\n if (this.tryMatch(\"{\")) {\n return this.value_braces();\n } else if (this.tryMatch('\"')) {\n return this.value_quotes();\n } else {\n var k = this.key();\n if (k.match(\"^[0-9]+$\"))\n return k;\n else if (this.months.indexOf(k.toLowerCase()) >= 0)\n return k.toLowerCase();\n else\n throw \"Value expected:\" + this.input.substring(start) + ' for key: ' + k;\n \n };\n };\n\n this.value = function() {\n var values = [];\n values.push(this.single_value());\n while (this.tryMatch(\"#\")) {\n this.match(\"#\");\n values.push(this.single_value());\n };\n return values.join(\"\");\n };\n\n this.key = function() {\n var start = this.pos;\n while (true) {\n if (this.pos >= this.input.length) {\n throw \"Runaway key\";\n };\n // а-яА-Я is Cyrillic\n //console.log(this.input[this.pos]);\n if (this.notKey.indexOf(this.input[this.pos]) >= 0) {\n return this.input.substring(start, this.pos);\n } else {\n this.pos++;\n \n };\n };\n };\n\n this.key_equals_value = function() {\n var key = this.key();\n if (this.tryMatch(\"=\")) {\n this.match(\"=\");\n var val = this.value();\n return [ key, val ];\n } else {\n throw \"... = value expected, equals sign missing:\"\n + this.input.substring(this.pos);\n };\n };\n\n this.key_value_list = function() {\n var kv = this.key_equals_value();\n this.currentEntry['entryTags'] = {};\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n while (this.tryMatch(\",\")) {\n this.match(\",\");\n // fixes problems with commas at the end of a list\n if (this.tryMatch(\"}\")) {\n break;\n }\n ;\n kv = this.key_equals_value();\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n };\n };\n\n this.entry_body = function(d) {\n this.currentEntry = {};\n this.currentEntry['citationKey'] = this.key();\n this.currentEntry['entryType'] = d.substring(1);\n this.match(\",\");\n this.key_value_list();\n this.entries.push(this.currentEntry);\n };\n\n this.directive = function() {\n this.match(\"@\");\n return \"@\" + this.key();\n };\n\n this.preamble = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'PREAMBLE';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.comment = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'COMMENT';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.entry = function(d) {\n this.entry_body(d);\n };\n\n this.bibtex = function() {\n while (this.matchAt()) {\n var d = this.directive();\n this.match(\"{\");\n if (d == \"@STRING\") {\n this.string();\n } else if (d == \"@PREAMBLE\") {\n this.preamble();\n } else if (d == \"@COMMENT\") {\n this.comment();\n } else {\n this.entry(d);\n }\n this.match(\"}\");\n };\n };\n };\n \n exports.toJSON = function(bibtex) {\n var b = new BibtexParser();\n b.setInput(bibtex);\n b.bibtex();\n return b.entries;\n };\n\n /* added during hackathon don't hate on me */\n exports.toBibtex = function(json) {\n var out = '';\n for ( var i in json) {\n out += \"@\" + json[i].entryType;\n out += '{';\n if (json[i].citationKey)\n out += json[i].citationKey + ', ';\n if (json[i].entry)\n out += json[i].entry ;\n if (json[i].entryTags) {\n var tags = '';\n for (var jdx in json[i].entryTags) {\n if (tags.length != 0)\n tags += ', ';\n tags += jdx + '= {' + json[i].entryTags[jdx] + '}';\n }\n out += tags;\n }\n out += '}\\n\\n';\n }\n return out;\n \n };\n\n})(typeof exports === 'undefined' ? this['bibtexParse'] = {} : exports);\n\n/* end bibtexParse */\n","import bibtexParse from \"bibtex-parse-js\";\n\nexport default function(dom, data) {\n let el = dom.querySelector('script[type=\"text/bibliography\"]');\n let citations = [];\n let bibliography = {};\n //TODO If we don't have a local element, make a request for the document.\n if (el) {\n let rawBib = el.textContent;\n let parsed = bibtexParse.toJSON(rawBib);\n if(parsed) {\n parsed.forEach(e => {\n for (var k in e.entryTags){\n var val = e.entryTags[k];\n val = val.replace(/[\\t\\n ]+/g, \" \");\n val = val.replace(/{\\\\[\"^`\\.'acu~Hvs]( )?([a-zA-Z])}/g,\n (full, x, char) => char);\n val = val.replace(/{\\\\([a-zA-Z])}/g,\n (full, char) => char);\n e.entryTags[k] = val;\n }\n bibliography[e.citationKey] = e.entryTags;\n bibliography[e.citationKey].type = e.entryType;\n });\n }\n\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach(el => {\n let key = el.getAttribute(\"key\");\n if (key) {\n let citationKeys = key.split(\",\");\n citationKeys.forEach(key => {\n if (citations.indexOf(key) == -1){\n citations.push(key);\n if (!(key in bibliography)){\n console.warn(\"No bibliography entry found for: \" + key);\n }\n }\n });\n }\n });\n }\n data.bibliography = bibliography;\n data.citations = citations;\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(new Date(+start)); while (offseti(start, step), floori(start), start < stop)\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) while (--step >= 0) while (offseti(date, 1), !test(date)) {} // eslint-disable-line no-empty\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(Math.floor(date / durationSecond) * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(Math.floor(date / durationMinute) * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute} from \"./duration\";\n\nvar hour = interval(function(date) {\n var offset = date.getTimezoneOffset() * durationMinute % durationHour;\n if (offset < 0) offset += durationHour;\n date.setTime(Math.floor((+date - offset) / durationHour) * durationHour + offset);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval\";\nimport {durationWeek} from \"./duration\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {timeDay, timeSunday, timeMonday, timeYear, utcDay, utcSunday, utcMonday, utcYear} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"S\": formatSeconds,\n \"U\": formatWeekNumberSunday,\n \"w\": formatWeekdayNumber,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"S\": formatUTCSeconds,\n \"U\": formatUTCWeekNumberSunday,\n \"w\": formatUTCWeekdayNumber,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"S\": parseSeconds,\n \"U\": parseWeekNumberSunday,\n \"w\": parseWeekdayNumber,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0);\n if (i != string.length) return null;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n var day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?:\\:?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekdayNumber(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekdayNumber(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {timeFormat} from \"d3-time-format\";\n\nexport default function(dom, data) {\n\n data.authors = data.authors || [];\n\n // paths\n if (!data.distillPath && !data.url) {\n data.url = \"http://distill.pub/\";\n } else if (!data.url) {\n data.url = \"http://distill.pub/\" + data.distillPath;\n }\n data.githubUrl = \"https://github.com/\" + data.githubPath;\n\n data.previewURL = data.previewURL ? data.previewURL : data.url + \"/thumbnail.jpg\"\n\n // Homepage\n //data.homepage = !post.noHomepage;\n data.journal = data.journal || {};\n\n // Dates\n if (data.publishedDate){//} && data.journal) {\n data.volume = data.publishedDate.getFullYear() - 2015;\n data.issue = data.publishedDate.getMonth() + 1;\n }\n\n data.publishedDate = data.publishedDate ? data.publishedDate : new Date(\"Invalid\");\n data.updatedDate = data.updatedDate ? data.updatedDate : new Date(\"Invalid\");\n\n data.publishedDateRFC\n let RFC = timeFormat(\"%a, %d %b %Y %H:%M:%S %Z\");\n let months = [\"Jan\", \"Feb\", \"March\", \"April\", \"May\", \"June\", \"July\", \"Aug\", \"Sept\", \"Oct\", \"Nov\", \"Dec\"];\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n data.publishedDateRFC = RFC(data.publishedDate);\n data.publishedYear = data.publishedDate.getFullYear();\n data.publishedMonth = months[data.publishedDate.getMonth()];\n data.publishedDay = data.publishedDate.getDate();\n data.publishedMonthPadded = zeroPad(data.publishedDate.getMonth() + 1);\n data.publishedDayPadded = zeroPad(data.publishedDate.getDate());\n data.updatedDateRFC = RFC(data.updatedDate);\n\n if (data.authors.length > 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \", et al.\";\n } else if (data.authors.length === 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \" & \" + data.authors[1].lastName;\n } else if (data.authors.length === 1) {\n data.concatenatedAuthors = data.authors[0].lastName\n }\n\n data.bibtexAuthors = data.authors.map(function(author){\n return author.lastName + \", \" + author.firstName;\n }).join(\" and \");\n\n data.slug = data.authors.length ? data.authors[0].lastName.toLowerCase() + data.publishedYear + data.title.split(\" \")[0].toLowerCase() : \"Untitled\";\n\n}\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","import favicon from './distill-favicon.base64';\nimport escape from 'escape-html';\n\nexport default function(dom, data) {\n let head = dom.querySelector(\"head\");\n let appendHead = html => appendHtml(head, html);\n\n function meta(name, content, force) {\n if (content || force)\n appendHead(` \\n`);\n }\n\n appendHead(`\n \n \n \n \n ${data.title}\n `);\n\n appendHead(`\n \n \n \n `);\n data.authors.forEach((a) => {\n appendHtml(head, `\n `)\n });\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n // if this is a proprer article, generate Google Scholar meta data\n if (data.doiSuffix){\n appendHead(`\n \\n`);\n\n meta(\"citation_title\", data.title);\n //meta(\"citation_fulltext_html_url\", data.url);\n meta(\"citation_volume\", data.volume);\n meta(\"citation_issue\", data.issue);\n meta(\"citation_firstpage\", data.doiSuffix? `e${data.doiSuffix}` : undefined);\n meta(\"citation_doi\", data.doi);\n\n let journal = data.journal || {};\n meta(\"citation_journal_title\", journal.full_title || journal.title);\n meta(\"citation_journal_abbrev\", journal.abbrev_title);\n meta(\"citation_issn\", journal.issn);\n meta(\"citation_publisher\", journal.publisher);\n meta(\"citation_fulltext_world_readable\", \"\", true);\n\n if (data.publishedDate){\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n meta(\"citation_online_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n // Should we do something different here?\n meta(\"citation_publication_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n }\n\n (data.authors || []).forEach((a) => {\n meta(\"citation_author\", `${a.lastName}, ${a.firstName}`);\n meta(\"citation_author_institution\", a.affiliation);\n });\n\n if (data.citations) {\n data.citations.forEach(key => {\n let d = data.bibliography[key];\n if(!d) {\n console.warn(\"No bibliography data fround for \" + key)\n } else {\n meta(\"citation_reference\", citation_meta_content(data.bibliography[key]) )\n };\n });\n }\n }\n}\n\nfunction appendHtml(el, html) {\n el.innerHTML += html;\n}\n\nfunction citation_meta_content(ref){\n // Special test for arxiv\n var content = `citation_title=${ref.title};`;\n\n let name_strings = ref.author.split(\" and \").forEach(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1].trim();\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n content += `citation_author=${firsts} ${last};`;\n });\n\n if (\"year\" in ref) {\n content += `citation_publication_date=${ref.year};`;\n }\n\n var arxiv_id_search = /https?:\\/\\/arxiv\\.org\\/pdf\\/([0-9]*\\.[0-9]*)\\.pdf/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /https?:\\/\\/arxiv\\.org\\/abs\\/([0-9]*\\.[0-9]*)/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /arXiv preprint arXiv:([0-9]*\\.[0-9]*)/.exec(ref.journal);\n if (arxiv_id_search && arxiv_id_search[1]){\n content += `citation_arxiv_id=${arxiv_id_search[1]};`;\n return content;\n }\n if (\"journal\" in ref){\n content += `citation_journal_title=${ref.journal};`;\n }\n if (\"volume\" in ref) {\n content += `citation_volume=${ref.volume};`;\n }\n if (\"issue\" in ref || \"number\" in ref){\n content += `citation_number=${ref.issue || ref.number};`;\n }\n /*content += `citation_first_page=${};`;\n content += `citation_publication_date=${};`;*/\n return content;\n}\n","const html = `\n\n
    This article is a draft, awaiting review for publication in Distill
    \n`;\n\nexport default function(dom, data) {\n let banner = dom.createElement(\"dt-banner\");\n banner.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(banner, b.firstChild);\n banner.addEventListener(\"click\", function() {\n banner.style.display = \"none\";\n });\n}\n","/*!\n * mustache.js - Logic-less {{mustache}} templates with JavaScript\n * http://github.com/janl/mustache.js\n */\n\n/*global define: false Mustache: true*/\n\n(function defineMustache (global, factory) {\n if (typeof exports === 'object' && exports && typeof exports.nodeName !== 'string') {\n factory(exports); // CommonJS\n } else if (typeof define === 'function' && define.amd) {\n define(['exports'], factory); // AMD\n } else {\n global.Mustache = {};\n factory(global.Mustache); // script, wsh, asp\n }\n}(this, function mustacheFactory (mustache) {\n\n var objectToString = Object.prototype.toString;\n var isArray = Array.isArray || function isArrayPolyfill (object) {\n return objectToString.call(object) === '[object Array]';\n };\n\n function isFunction (object) {\n return typeof object === 'function';\n }\n\n /**\n * More correct typeof string handling array\n * which normally returns typeof 'object'\n */\n function typeStr (obj) {\n return isArray(obj) ? 'array' : typeof obj;\n }\n\n function escapeRegExp (string) {\n return string.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n }\n\n /**\n * Null safe way of checking whether or not an object,\n * including its prototype, has a given property\n */\n function hasProperty (obj, propName) {\n return obj != null && typeof obj === 'object' && (propName in obj);\n }\n\n // Workaround for https://issues.apache.org/jira/browse/COUCHDB-577\n // See https://github.com/janl/mustache.js/issues/189\n var regExpTest = RegExp.prototype.test;\n function testRegExp (re, string) {\n return regExpTest.call(re, string);\n }\n\n var nonSpaceRe = /\\S/;\n function isWhitespace (string) {\n return !testRegExp(nonSpaceRe, string);\n }\n\n var entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n function escapeHtml (string) {\n return String(string).replace(/[&<>\"'`=\\/]/g, function fromEntityMap (s) {\n return entityMap[s];\n });\n }\n\n var whiteRe = /\\s*/;\n var spaceRe = /\\s+/;\n var equalsRe = /\\s*=/;\n var curlyRe = /\\s*\\}/;\n var tagRe = /#|\\^|\\/|>|\\{|&|=|!/;\n\n /**\n * Breaks up the given `template` string into a tree of tokens. If the `tags`\n * argument is given here it must be an array with two string values: the\n * opening and closing tags used in the template (e.g. [ \"<%\", \"%>\" ]). Of\n * course, the default is to use mustaches (i.e. mustache.tags).\n *\n * A token is an array with at least 4 elements. The first element is the\n * mustache symbol that was used inside the tag, e.g. \"#\" or \"&\". If the tag\n * did not contain a symbol (i.e. {{myValue}}) this element is \"name\". For\n * all text that appears outside a symbol this element is \"text\".\n *\n * The second element of a token is its \"value\". For mustache tags this is\n * whatever else was inside the tag besides the opening symbol. For text tokens\n * this is the text itself.\n *\n * The third and fourth elements of the token are the start and end indices,\n * respectively, of the token in the original template.\n *\n * Tokens that are the root node of a subtree contain two more elements: 1) an\n * array of tokens in the subtree and 2) the index in the original template at\n * which the closing tag for that section begins.\n */\n function parseTemplate (template, tags) {\n if (!template)\n return [];\n\n var sections = []; // Stack to hold section tokens\n var tokens = []; // Buffer to hold the tokens\n var spaces = []; // Indices of whitespace tokens on the current line\n var hasTag = false; // Is there a {{tag}} on the current line?\n var nonSpace = false; // Is there a non-space char on the current line?\n\n // Strips all whitespace tokens array for the current line\n // if there was a {{#tag}} on it and otherwise only space.\n function stripSpace () {\n if (hasTag && !nonSpace) {\n while (spaces.length)\n delete tokens[spaces.pop()];\n } else {\n spaces = [];\n }\n\n hasTag = false;\n nonSpace = false;\n }\n\n var openingTagRe, closingTagRe, closingCurlyRe;\n function compileTags (tagsToCompile) {\n if (typeof tagsToCompile === 'string')\n tagsToCompile = tagsToCompile.split(spaceRe, 2);\n\n if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)\n throw new Error('Invalid tags: ' + tagsToCompile);\n\n openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\\\s*');\n closingTagRe = new RegExp('\\\\s*' + escapeRegExp(tagsToCompile[1]));\n closingCurlyRe = new RegExp('\\\\s*' + escapeRegExp('}' + tagsToCompile[1]));\n }\n\n compileTags(tags || mustache.tags);\n\n var scanner = new Scanner(template);\n\n var start, type, value, chr, token, openSection;\n while (!scanner.eos()) {\n start = scanner.pos;\n\n // Match any text between tags.\n value = scanner.scanUntil(openingTagRe);\n\n if (value) {\n for (var i = 0, valueLength = value.length; i < valueLength; ++i) {\n chr = value.charAt(i);\n\n if (isWhitespace(chr)) {\n spaces.push(tokens.length);\n } else {\n nonSpace = true;\n }\n\n tokens.push([ 'text', chr, start, start + 1 ]);\n start += 1;\n\n // Check for whitespace on the current line.\n if (chr === '\\n')\n stripSpace();\n }\n }\n\n // Match the opening tag.\n if (!scanner.scan(openingTagRe))\n break;\n\n hasTag = true;\n\n // Get the tag type.\n type = scanner.scan(tagRe) || 'name';\n scanner.scan(whiteRe);\n\n // Get the tag value.\n if (type === '=') {\n value = scanner.scanUntil(equalsRe);\n scanner.scan(equalsRe);\n scanner.scanUntil(closingTagRe);\n } else if (type === '{') {\n value = scanner.scanUntil(closingCurlyRe);\n scanner.scan(curlyRe);\n scanner.scanUntil(closingTagRe);\n type = '&';\n } else {\n value = scanner.scanUntil(closingTagRe);\n }\n\n // Match the closing tag.\n if (!scanner.scan(closingTagRe))\n throw new Error('Unclosed tag at ' + scanner.pos);\n\n token = [ type, value, start, scanner.pos ];\n tokens.push(token);\n\n if (type === '#' || type === '^') {\n sections.push(token);\n } else if (type === '/') {\n // Check section nesting.\n openSection = sections.pop();\n\n if (!openSection)\n throw new Error('Unopened section \"' + value + '\" at ' + start);\n\n if (openSection[1] !== value)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + start);\n } else if (type === 'name' || type === '{' || type === '&') {\n nonSpace = true;\n } else if (type === '=') {\n // Set the tags for the next time around.\n compileTags(value);\n }\n }\n\n // Make sure there are no open sections when we're done.\n openSection = sections.pop();\n\n if (openSection)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + scanner.pos);\n\n return nestTokens(squashTokens(tokens));\n }\n\n /**\n * Combines the values of consecutive text tokens in the given `tokens` array\n * to a single token.\n */\n function squashTokens (tokens) {\n var squashedTokens = [];\n\n var token, lastToken;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n if (token) {\n if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {\n lastToken[1] += token[1];\n lastToken[3] = token[3];\n } else {\n squashedTokens.push(token);\n lastToken = token;\n }\n }\n }\n\n return squashedTokens;\n }\n\n /**\n * Forms the given array of `tokens` into a nested tree structure where\n * tokens that represent a section have two additional items: 1) an array of\n * all tokens that appear in that section and 2) the index in the original\n * template that represents the end of that section.\n */\n function nestTokens (tokens) {\n var nestedTokens = [];\n var collector = nestedTokens;\n var sections = [];\n\n var token, section;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n switch (token[0]) {\n case '#':\n case '^':\n collector.push(token);\n sections.push(token);\n collector = token[4] = [];\n break;\n case '/':\n section = sections.pop();\n section[5] = token[2];\n collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;\n break;\n default:\n collector.push(token);\n }\n }\n\n return nestedTokens;\n }\n\n /**\n * A simple string scanner that is used by the template parser to find\n * tokens in template strings.\n */\n function Scanner (string) {\n this.string = string;\n this.tail = string;\n this.pos = 0;\n }\n\n /**\n * Returns `true` if the tail is empty (end of string).\n */\n Scanner.prototype.eos = function eos () {\n return this.tail === '';\n };\n\n /**\n * Tries to match the given regular expression at the current position.\n * Returns the matched text if it can match, the empty string otherwise.\n */\n Scanner.prototype.scan = function scan (re) {\n var match = this.tail.match(re);\n\n if (!match || match.index !== 0)\n return '';\n\n var string = match[0];\n\n this.tail = this.tail.substring(string.length);\n this.pos += string.length;\n\n return string;\n };\n\n /**\n * Skips all text until the given regular expression can be matched. Returns\n * the skipped string, which is the entire tail if no match can be made.\n */\n Scanner.prototype.scanUntil = function scanUntil (re) {\n var index = this.tail.search(re), match;\n\n switch (index) {\n case -1:\n match = this.tail;\n this.tail = '';\n break;\n case 0:\n match = '';\n break;\n default:\n match = this.tail.substring(0, index);\n this.tail = this.tail.substring(index);\n }\n\n this.pos += match.length;\n\n return match;\n };\n\n /**\n * Represents a rendering context by wrapping a view object and\n * maintaining a reference to the parent context.\n */\n function Context (view, parentContext) {\n this.view = view;\n this.cache = { '.': this.view };\n this.parent = parentContext;\n }\n\n /**\n * Creates a new context using the given view with this context\n * as the parent.\n */\n Context.prototype.push = function push (view) {\n return new Context(view, this);\n };\n\n /**\n * Returns the value of the given name in this context, traversing\n * up the context hierarchy if the value is absent in this context's view.\n */\n Context.prototype.lookup = function lookup (name) {\n var cache = this.cache;\n\n var value;\n if (cache.hasOwnProperty(name)) {\n value = cache[name];\n } else {\n var context = this, names, index, lookupHit = false;\n\n while (context) {\n if (name.indexOf('.') > 0) {\n value = context.view;\n names = name.split('.');\n index = 0;\n\n /**\n * Using the dot notion path in `name`, we descend through the\n * nested objects.\n *\n * To be certain that the lookup has been successful, we have to\n * check if the last object in the path actually has the property\n * we are looking for. We store the result in `lookupHit`.\n *\n * This is specially necessary for when the value has been set to\n * `undefined` and we want to avoid looking up parent contexts.\n **/\n while (value != null && index < names.length) {\n if (index === names.length - 1)\n lookupHit = hasProperty(value, names[index]);\n\n value = value[names[index++]];\n }\n } else {\n value = context.view[name];\n lookupHit = hasProperty(context.view, name);\n }\n\n if (lookupHit)\n break;\n\n context = context.parent;\n }\n\n cache[name] = value;\n }\n\n if (isFunction(value))\n value = value.call(this.view);\n\n return value;\n };\n\n /**\n * A Writer knows how to take a stream of tokens and render them to a\n * string, given a context. It also maintains a cache of templates to\n * avoid the need to parse the same template twice.\n */\n function Writer () {\n this.cache = {};\n }\n\n /**\n * Clears all cached templates in this writer.\n */\n Writer.prototype.clearCache = function clearCache () {\n this.cache = {};\n };\n\n /**\n * Parses and caches the given `template` and returns the array of tokens\n * that is generated from the parse.\n */\n Writer.prototype.parse = function parse (template, tags) {\n var cache = this.cache;\n var tokens = cache[template];\n\n if (tokens == null)\n tokens = cache[template] = parseTemplate(template, tags);\n\n return tokens;\n };\n\n /**\n * High-level method that is used to render the given `template` with\n * the given `view`.\n *\n * The optional `partials` argument may be an object that contains the\n * names and templates of partials that are used in the template. It may\n * also be a function that is used to load partial templates on the fly\n * that takes a single argument: the name of the partial.\n */\n Writer.prototype.render = function render (template, view, partials) {\n var tokens = this.parse(template);\n var context = (view instanceof Context) ? view : new Context(view);\n return this.renderTokens(tokens, context, partials, template);\n };\n\n /**\n * Low-level method that renders the given array of `tokens` using\n * the given `context` and `partials`.\n *\n * Note: The `originalTemplate` is only ever used to extract the portion\n * of the original template that was contained in a higher-order section.\n * If the template doesn't use higher-order sections, this argument may\n * be omitted.\n */\n Writer.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate) {\n var buffer = '';\n\n var token, symbol, value;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n value = undefined;\n token = tokens[i];\n symbol = token[0];\n\n if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate);\n else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate);\n else if (symbol === '>') value = this.renderPartial(token, context, partials, originalTemplate);\n else if (symbol === '&') value = this.unescapedValue(token, context);\n else if (symbol === 'name') value = this.escapedValue(token, context);\n else if (symbol === 'text') value = this.rawValue(token);\n\n if (value !== undefined)\n buffer += value;\n }\n\n return buffer;\n };\n\n Writer.prototype.renderSection = function renderSection (token, context, partials, originalTemplate) {\n var self = this;\n var buffer = '';\n var value = context.lookup(token[1]);\n\n // This function is used to render an arbitrary template\n // in the current context by higher-order sections.\n function subRender (template) {\n return self.render(template, context, partials);\n }\n\n if (!value) return;\n\n if (isArray(value)) {\n for (var j = 0, valueLength = value.length; j < valueLength; ++j) {\n buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate);\n }\n } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {\n buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate);\n } else if (isFunction(value)) {\n if (typeof originalTemplate !== 'string')\n throw new Error('Cannot use higher-order sections without the original template');\n\n // Extract the portion of the original template that the section contains.\n value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);\n\n if (value != null)\n buffer += value;\n } else {\n buffer += this.renderTokens(token[4], context, partials, originalTemplate);\n }\n return buffer;\n };\n\n Writer.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate) {\n var value = context.lookup(token[1]);\n\n // Use JavaScript's definition of falsy. Include empty arrays.\n // See https://github.com/janl/mustache.js/issues/186\n if (!value || (isArray(value) && value.length === 0))\n return this.renderTokens(token[4], context, partials, originalTemplate);\n };\n\n Writer.prototype.renderPartial = function renderPartial (token, context, partials) {\n if (!partials) return;\n\n var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\n if (value != null)\n return this.renderTokens(this.parse(value), context, partials, value);\n };\n\n Writer.prototype.unescapedValue = function unescapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return value;\n };\n\n Writer.prototype.escapedValue = function escapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return mustache.escape(value);\n };\n\n Writer.prototype.rawValue = function rawValue (token) {\n return token[1];\n };\n\n mustache.name = 'mustache.js';\n mustache.version = '2.3.0';\n mustache.tags = [ '{{', '}}' ];\n\n // All high-level mustache.* functions use this writer.\n var defaultWriter = new Writer();\n\n /**\n * Clears all cached templates in the default writer.\n */\n mustache.clearCache = function clearCache () {\n return defaultWriter.clearCache();\n };\n\n /**\n * Parses and caches the given template in the default writer and returns the\n * array of tokens it contains. Doing this ahead of time avoids the need to\n * parse templates on the fly as they are rendered.\n */\n mustache.parse = function parse (template, tags) {\n return defaultWriter.parse(template, tags);\n };\n\n /**\n * Renders the `template` with the given `view` and `partials` using the\n * default writer.\n */\n mustache.render = function render (template, view, partials) {\n if (typeof template !== 'string') {\n throw new TypeError('Invalid template! Template should be a \"string\" ' +\n 'but \"' + typeStr(template) + '\" was given as the first ' +\n 'argument for mustache#render(template, view, partials)');\n }\n\n return defaultWriter.render(template, view, partials);\n };\n\n // This is here for backwards compatibility with 0.4.x.,\n /*eslint-disable */ // eslint wants camel cased function name\n mustache.to_html = function to_html (template, view, partials, send) {\n /*eslint-enable*/\n\n var result = mustache.render(template, view, partials);\n\n if (isFunction(send)) {\n send(result);\n } else {\n return result;\n }\n };\n\n // Export the escaping function so that the user may override it.\n // See https://github.com/janl/mustache.js/issues/244\n mustache.escape = escapeHtml;\n\n // Export these mainly for testing, but also for advanced usage.\n mustache.Scanner = Scanner;\n mustache.Context = Context;\n mustache.Writer = Writer;\n\n return mustache;\n}));\n","import mustache from \"mustache\";\n\nconst html = `\n\n\n`;\n\nconst template = `\n
    \n
    \n {{#authors}}\n
    \n {{#personalURL}}\n {{name}}\n {{/personalURL}}\n {{^personalURL}}\n
    {{name}}
    \n {{/personalURL}}\n {{#affiliation}}\n {{#affiliationURL}}\n {{affiliation}}\n {{/affiliationURL}}\n {{^affiliationURL}}\n
    {{affiliation}}
    \n {{/affiliationURL}}\n {{/affiliation}}\n
    \n {{/authors}}\n
    \n
    \n
    {{publishedMonth}}. {{publishedDay}}
    \n
    {{publishedYear}}
    \n
    \n \n
    Citation:
    \n
    {{concatenatedAuthors}}, {{publishedYear}}
    \n
    \n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-byline');\n if (el) {\n el.innerHTML = html + mustache.render(template, data);\n }\n}\n","const html = `\n\n\n
    \n

    References

    \n \n

    Errors, Reuse, and Citation

    \n

    If you see mistakes or want to suggest changes, please create an issue on GitHub.

    \n

    Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on GitHub. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: “Figure from …”.

    \n

    For attribution in academic contexts, please cite this work as

    \n
    \n  

    BibTeX citation

    \n
    \n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-appendix')\n if (el) {\n let oldHtml = el.innerHTML;\n el.innerHTML = html;\n let div = el.querySelector(\"div.l-body\")\n\n if (dom.querySelector(\"dt-fn\")) {\n div.innerHTML = `

    Footnotes

    ` + div.innerHTML;\n }\n\n div.innerHTML = oldHtml + div.innerHTML;\n if (data.githubCompareUpdatesUrl) {\n div.innerHTML = `

    Updates

    View all changes to this article since it was first published.

    ` + div.innerHTML;\n }\n\n el.querySelector(\"a.github\").setAttribute(\"href\", data.githubUrl);\n el.querySelector(\"a.github-issue\").setAttribute(\"href\", data.githubUrl + \"/issues/new\");\n el.querySelector(\".citation.short\").textContent = data.concatenatedAuthors + \", \" + '\"' + data.title + '\", Distill, ' + data.publishedYear + \".\";\n var bibtex = \"@article{\" + data.slug + \",\\n\";\n bibtex += \" author = {\" + data.bibtexAuthors + \"},\\n\";\n bibtex += \" title = {\" + data.title + \"},\\n\";\n bibtex += \" journal = {Distill},\\n\";\n bibtex += \" year = {\" + data.publishedYear + \"},\\n\";\n bibtex += \" note = {\" + data.url + \"}\\n\";\n bibtex += \"}\";\n el.querySelector(\".citation.long\").textContent = bibtex;\n }\n\n}\n","export default function(dom, data) {\n let css = `\n dt-cite {\n color: hsla(206, 90%, 20%, 0.7);\n }\n dt-cite .citation-number {\n cursor: default;\n white-space: nowrap;\n font-family: -apple-system, BlinkMacSystemFont, \"Roboto\", Helvetica, sans-serif;\n font-size: 75%;\n color: hsla(206, 90%, 20%, 0.7);\n display: inline-block;\n line-height: 1.1em;\n text-align: center;\n position: relative;\n top: -2px;\n margin: 0 2px;\n }\n figcaption dt-cite .citation-number {\n font-size: 11px;\n font-weight: normal;\n top: -2px;\n line-height: 1em;\n }\n `;\n\n let style = dom.createElement(\"style\");\n style.textContent = css;\n dom.querySelector(\"body\").appendChild(style);\n\n let citations = data.citations;\n /*if (data.citations) {\n citations = Object.keys(data.citations).map(c => data.citations[c]);\n citations.sort((a, b) => {\n return a.author.localeCompare(b.author);\n });\n }*/\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach((el,n) => {\n var key = el.getAttribute(\"key\");\n if (key) {\n var keys = key.split(\",\");\n var cite_string = inline_cite_short(keys);\n var cite_hover_str = \"\";\n keys.map((key,n) => {\n if (n>0) cite_hover_str += \"

    \";\n cite_hover_str += hover_cite(data.bibliography[key]);\n });\n cite_hover_str = cite_hover_str.replace(/\"/g, \"'\")\n var orig_string = el.innerHTML;\n if (orig_string != \"\") orig_string += \" \";\n el.innerHTML = `${orig_string}${cite_string}`;\n }\n });\n\n let bibEl = dom.querySelector(\"dt-bibliography\");\n if (bibEl) {\n let ol = dom.createElement(\"ol\");\n citations.forEach(key => {\n let el = dom.createElement(\"li\");\n el.innerHTML = bibliography_cite(data.bibliography[key]);\n ol.appendChild(el);\n })\n bibEl.appendChild(ol);\n }\n\n function inline_cite_short(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var n = data.citations.indexOf(key)+1;\n return \"\"+n;\n } else {\n return \"?\";\n }\n }\n return \"[\"+keys.map(cite_string).join(\", \")+\"]\";\n }\n\n function inline_cite_long(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var ent = data.bibliography[key];\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var year = ent.year;\n if (names.length == 1) return names[0] + \", \" + year;\n if (names.length == 2) return names[0] + \" & \" + names[1] + \", \" + year;\n if (names.length > 2) return names[0] + \", et al., \" + year;\n } else {\n return \"?\";\n }\n }\n return keys.map(cite_string).join(\", \");\n }\n\n function author_string(ent, template, sep, finalSep){\n var names = ent.author.split(\" and \");\n let name_strings = names.map(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1];\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n var initials = \"\";\n if (firsts != undefined) {\n initials = firsts.trim().split(\" \").map(s => s.trim()[0]);\n initials = initials.join(\".\")+\".\";\n }\n return template.replace(\"${F}\", firsts)\n .replace(\"${L}\", last)\n .replace(\"${I}\", initials);\n });\n if (names.length > 1) {\n var str = name_strings.slice(0, names.length-1).join(sep);\n str += (finalSep || sep) + name_strings[names.length-1];\n return str;\n } else {\n return name_strings[0];\n }\n }\n\n function venue_string(ent) {\n var cite = (ent.journal || ent.booktitle || \"\")\n if (\"volume\" in ent){\n var issue = ent.issue || ent.number;\n issue = (issue != undefined)? \"(\"+issue+\")\" : \"\";\n cite += \", Vol \" + ent.volume + issue;\n }\n if (\"pages\" in ent){\n cite += \", pp. \" + ent.pages\n }\n if (cite != \"\") cite += \". \"\n if (\"publisher\" in ent){\n cite += ent.publisher;\n if (cite[cite.length-1] != \".\") cite += \".\";\n }\n return cite;\n }\n\n function link_string(ent){\n if (\"url\" in ent){\n var url = ent.url;\n var arxiv_match = (/arxiv\\.org\\/abs\\/([0-9\\.]*)/).exec(url);\n if (arxiv_match != null){\n url = `http://arxiv.org/pdf/${arxiv_match[1]}.pdf`;\n }\n\n if (url.slice(-4) == \".pdf\"){\n var label = \"PDF\";\n } else if (url.slice(-5) == \".html\") {\n var label = \"HTML\";\n }\n return `  [${label||\"link\"}]`;\n }/* else if (\"doi\" in ent){\n return `  [DOI]`;\n }*/ else {\n return \"\";\n }\n }\n function doi_string(ent, new_line){\n if (\"doi\" in ent) {\n return `${new_line?\"
    \":\"\"} DOI: ${ent.doi}`;\n } else {\n return \"\";\n }\n }\n\n function bibliography_cite(ent, fancy){\n if (ent){\n var cite = \"\" + ent.title + \" \"\n cite += link_string(ent) + \"
    \";\n cite += author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += venue_string(ent);\n cite += doi_string(ent);\n return cite\n /*var cite = author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += \"\" + ent.title + \". \";\n cite += venue_string(ent);\n cite += doi_string(ent);\n cite += link_string(ent);\n return cite*/\n } else {\n return \"?\";\n }\n }\n\n function hover_cite(ent){\n if (ent){\n var cite = \"\";\n cite += \"\" + ent.title + \"\";\n cite += link_string(ent);\n cite += \"
    \"\n\n var a_str = author_string(ent, \"${I} ${L}\", \", \") + \".\";\n var v_str = venue_string(ent).trim() + \" \" + ent.year + \". \" + doi_string(ent, true);\n\n if ((a_str+v_str).length < Math.min(40, ent.title.length)) {\n cite += a_str + \" \" + v_str;\n } else {\n cite += a_str + \"
    \" + v_str;\n }\n return cite;\n } else {\n return \"?\";\n }\n }\n\n\n //https://scholar.google.com/scholar?q=allintitle%3ADocument+author%3Aolah\n function get_GS_URL(ent){\n if (ent){\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var title = ent.title.split(\" \")//.replace(/[,:]/, \"\")\n var url = \"http://search.labs.crossref.org/dois?\"//\"\"https://scholar.google.com/scholar?\"\n url += uris({q: names.join(\" \") + \" \" + title.join(\" \")})\n }\n\n }\n}\n","export default function(dom, data) {\n\n var fnTags = [].slice.apply(dom.querySelectorAll(\"dt-fn\"));\n var fnContent = [];\n fnTags.forEach((el,n) => {\n var content = el.innerHTML;\n fnContent.push(content);\n n = (n+1)+\"\";\n var key = \"fn-\"+n;\n var escaped_content = content.replace(/\"/g, \"'\");\n el.innerHTML = `${n}`;\n });\n\n let fnList = dom.querySelector(\"dt-fn-list\");\n if (fnList) {\n let ol = dom.createElement(\"ol\");\n fnContent.forEach(content => {\n let el = dom.createElement(\"li\");\n el.innerHTML = content;\n ol.appendChild(el);\n })\n fnList.appendChild(ol);\n }\n\n}\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n */\n\n;(function() {\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^( *[-*_]){3,} *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,\n nptable: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n blockquote: /^( *>[^\\n]+(\\n(?!def)[^\\n]+)*\\n*)+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n table: noop,\n paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,\n text: /^[^\\n]+/\n};\n\nblock.bullet = /(?:[*+-]|\\d+\\.)/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = replace(block.item, 'gm')\n (/bull/g, block.bullet)\n ();\n\nblock.list = replace(block.list)\n (/bull/g, block.bullet)\n ('hr', '\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))')\n ('def', '\\\\n+(?=' + block.def.source + ')')\n ();\n\nblock.blockquote = replace(block.blockquote)\n ('def', block.def)\n ();\n\nblock._tag = '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'\n + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'\n + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|[^\\\\w\\\\s@]*@)\\\\b';\n\nblock.html = replace(block.html)\n ('comment', //)\n ('closed', /<(tag)[\\s\\S]+?<\\/\\1>/)\n ('closing', /])*?>/)\n (/tag/g, block._tag)\n ();\n\nblock.paragraph = replace(block.paragraph)\n ('hr', block.hr)\n ('heading', block.heading)\n ('lheading', block.lheading)\n ('blockquote', block.blockquote)\n ('tag', '<' + block._tag)\n ('def', block.def)\n ();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]*?)\\s*\\1 *(?:\\n+|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = replace(block.paragraph)\n ('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n ();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top, bq) {\n var src = src.replace(/^ +$/gm, '')\n , next\n , loose\n , cap\n , bull\n , b\n , item\n , space\n , i\n , l;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic\n ? cap.replace(/\\n+$/, '')\n : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top, true);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n\n this.tokens.push({\n type: 'list_start',\n ordered: bull.length > 1\n });\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n this.tokens.push({\n type: loose\n ? 'loose_item_start'\n : 'list_item_start'\n });\n\n // Recurse.\n this.token(item, false, bq);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if ((!bq && top) && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.links[cap[1].toLowerCase()] = {\n href: cap[2],\n title: cap[3]\n };\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i]\n .replace(/^ *\\| *| *\\| *$/g, '')\n .split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n autolink: /^<([^ >]+(@|:\\/)[^ >]+)>/,\n url: noop,\n tag: /^|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^\\b_((?:[^_]|__)+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n code: /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n text: /^[\\s\\S]+?(?=[\\\\?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\ninline.link = replace(inline.link)\n ('inside', inline._inside)\n ('href', inline._href)\n ();\n\ninline.reflink = replace(inline.reflink)\n ('inside', inline._inside)\n ();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: replace(inline.escape)('])', '~|])')(),\n url: /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n text: replace(inline.text)\n (']|', '~]|')\n ('|', '|https?://|')\n ()\n});\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: replace(inline.br)('{2,}', '*')(),\n text: replace(inline.gfm.text)('{2,}', '*')()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer;\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new\n Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n var out = ''\n , link\n , text\n , href\n , cap;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += cap[1];\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = cap[1].charAt(6) === ':'\n ? this.mangle(cap[1].substring(7))\n : this.mangle(cap[1]);\n href = this.mangle('mailto:') + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n src = src.substring(cap[0].length);\n text = escape(cap[1]);\n href = text;\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^/i.test(cap[0])) {\n this.inLink = false;\n }\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0]\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out += this.outputLink(cap, {\n href: cap[2],\n title: cap[3]\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2], true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = escape(link.href)\n , title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = ''\n , l = text.length\n , i = 0\n , ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || {};\n}\n\nRenderer.prototype.code = function(code, lang, escaped) {\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '\\n
    ';\n }\n\n return '
    '\n    + (escaped ? code : escape(code, true))\n    + '\\n
    \\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '
    \\n' + quote + '
    \\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw) {\n return ''\n + text\n + '\\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n};\n\nRenderer.prototype.list = function(body, ordered) {\n var type = ordered ? 'ol' : 'ul';\n return '<' + type + '>\\n' + body + '\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '
  • ' + text + '
  • \\n';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '

    ' + text + '

    \\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + '\\n'\n + body\n + '\\n'\n + '
    \\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '\\n' + content + '\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' style=\"text-align:' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.em = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? '
    ' : '
    ';\n};\n\nRenderer.prototype.del = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n if (this.options.sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return '';\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0) {\n return '';\n }\n }\n var out = '
    ';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n var out = '\"'' : '>';\n return out;\n};\n\nRenderer.prototype.text = function(text) {\n return text;\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer;\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options, renderer) {\n var parser = new Parser(options, renderer);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options, this.renderer);\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n this.token.text);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = ''\n , body = ''\n , i\n , row\n , cell\n , flags\n , j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n flags = { header: true, align: this.token.align[i] };\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n var body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n var body = ''\n , ordered = this.token.ordered;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered);\n }\n case 'list_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'loose_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'html': {\n var html = !this.token.pre && !this.options.pedantic\n ? this.inline.output(this.token.text)\n : this.token.text;\n return this.renderer.html(html);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n }\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n return html\n .replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\nfunction unescape(html) {\n\t// explicitly match decimal, hex, and named HTML entities \n return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/g, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction replace(regex, opt) {\n regex = regex.source;\n opt = opt || '';\n return function self(name, val) {\n if (!name) return new RegExp(regex, opt);\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return self;\n };\n}\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1\n , target\n , key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n\n var highlight = opt.highlight\n , tokens\n , pending\n , i = 0;\n\n try {\n tokens = Lexer.lex(src, opt)\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/chjj/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occured:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n sanitizer: null,\n mangle: true,\n smartLists: false,\n silent: false,\n highlight: null,\n langPrefix: 'lang-',\n smartypants: false,\n headerPrefix: '',\n renderer: new Renderer,\n xhtml: false\n};\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.parse = marked;\n\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n this.marked = marked;\n}\n\n}).call(function() {\n return this || (typeof window !== 'undefined' ? window : global);\n}());\n","import marked from 'marked';\n\nmarked.setOptions({\n gfm: true,\n smartypants: true\n});\n\nexport default function(dom, data) {\n let markdownElements = [].slice.call(dom.querySelectorAll('[markdown]'));\n markdownElements.forEach(el => {\n let content = el.innerHTML;\n // Set default indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n\n el.innerHTML = marked(content);\n });\n}\n","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = _self.Prism = {\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/ text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\tbreak tokenloop;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t delNum = 1;\n\n\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t to = match.index + match[0].length,\n\t\t\t\t\t\t k = i,\n\t\t\t\t\t\t p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && p < to; ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t match = match[0].slice(lookbehindLength),\n\t\t\t\t\t to = from + match.length,\n\t\t\t\t\t before = str.slice(0, from),\n\t\t\t\t\t after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (env.type == 'comment') {\n\t\tenv.attributes['spellcheck'] = 'true';\n\t}\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n \t// In worker\n\t_self.addEventListener('message', function(evt) {\n\t\tvar message = JSON.parse(evt.data),\n\t\t lang = message.language,\n\t\t code = message.code,\n\t\t immediateClose = message.immediateClose;\n\n\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\tif (immediateClose) {\n\t\t\t_self.close();\n\t\t}\n\t}, false);\n\n\treturn _self.Prism;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (document.addEventListener && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': //,\n\t'prolog': /<\\?[\\w\\W]+?\\?>/,\n\t'doctype': //i,\n\t'cdata': //i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\w\\W])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:('|\")[\\w\\W]*?(\\1)|[^\\s>]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /[=>\"']/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\w\\W]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^\\{\\}\\s][^\\{\\};]*?(?=\\s*\\{)/,\n\t'string': {\n\t\tpattern: /(\"|')(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'property': /(\\b|\\B)[\\w-]+(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|').*?\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\w\\W]*?\\*\\//,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[a-z0-9_\\.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /(\\.|\\\\)/\n\t\t}\n\t},\n\t'keyword': /\\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(0x[\\dA-Fa-f]+|0b[01]+|0o[0-7]+|\\d*\\.?\\d+([Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*(?=\\()/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*\\*?|\\/|~|\\^|%|\\.{3}/\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[.+?]|\\\\.|[^/\\\\\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\\\\\|\\\\?[^\\\\])*?`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript'\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tif(Array.prototype.forEach) { // Check to prevent error in IE8\n\t\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\t\tvar language, parent = pre;\n\t\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\t\tparent = parent.parentNode;\n\t\t\t\t}\n\n\t\t\t\tif (parent) {\n\t\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t\t}\n\n\t\t\t\tif (!language) {\n\t\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t\t}\n\n\t\t\t\tvar code = document.createElement('code');\n\t\t\t\tcode.className = 'language-' + language;\n\n\t\t\t\tpre.textContent = '';\n\n\t\t\t\tcode.textContent = 'Loading…';\n\n\t\t\t\tpre.appendChild(code);\n\n\t\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\t\txhr.open('GET', src, true);\n\n\t\t\t\txhr.onreadystatechange = function () {\n\t\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\txhr.send(null);\n\t\t\t});\n\t\t}\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\n})();\n","import Prism from \"prismjs\";\n\nexport default function(dom, data) {\n let codeElements = [].slice.call(dom.querySelectorAll(\"dt-code\"));\n codeElements.forEach(el => {\n let content = el.textContent;\n el.innerHTML = \"\";\n let language = el.getAttribute(\"language\");\n let c = dom.createElement(\"code\");\n if (el.getAttribute(\"block\") === \"\") {\n // Let's normalize the tab indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n let p = dom.createElement(\"pre\");\n p.appendChild(c);\n el.appendChild(p);\n } else {\n el.appendChild(c);\n }\n let highlighted = content;\n if (Prism.languages[language]) {\n c.setAttribute(\"class\", \"language-\" + language);\n highlighted = Prism.highlight(content, Prism.languages[language]);\n }\n c.innerHTML = highlighted;\n });\n}\n","export default function(dom, data) {\n\n var textNodes = dom.createTreeWalker(\n dom.body,\n dom.defaultView.NodeFilter.SHOW_TEXT\n );\n while (textNodes.nextNode()) {\n var n = textNodes.currentNode,\n text = n.nodeValue;\n if (text && acceptNode(n)) {\n text = quotes(text);\n text = punctuation(text);\n n.nodeValue = text;\n }\n }\n}\n\nfunction acceptNode(node) {\n var parent = node.parentElement;\n var isMath = (parent && parent.getAttribute && parent.getAttribute(\"class\")) ? parent.getAttribute(\"class\").includes(\"katex\") || parent.getAttribute(\"class\").includes(\"MathJax\") : false;\n return parent &&\n parent.nodeName !== \"SCRIPT\" &&\n parent.nodeName !== \"STYLE\" &&\n parent.nodeName !== \"CODE\" &&\n parent.nodeName !== \"PRE\" &&\n parent.nodeName !== \"SPAN\" &&\n parent.nodeName !== \"DT-HEADER\" &&\n parent.nodeName !== \"DT-BYLINE\" &&\n parent.nodeName !== \"DT-MATH\" &&\n parent.nodeName !== \"DT-CODE\" &&\n parent.nodeName !== \"DT-BIBLIOGRAPHY\" &&\n parent.nodeName !== \"DT-FOOTER\" &&\n parent.nodeType !== 8 && //comment nodes\n !isMath;\n}\n\n\n/*!\n * typeset - Typesetting for the web\n * @version v0.1.6\n * @link https://github.com/davidmerfield/Typeset.js\n * @author David Merfield\n */\n // which has a CC0 license\n // http://creativecommons.org/publicdomain/zero/1.0/\n\n\nfunction punctuation(text){\n\n // Dashes\n text = text.replace(/--/g, '\\u2014');\n text = text.replace(/ \\u2014 /g,\"\\u2009\\u2014\\u2009\"); //this has thin spaces\n\n // Elipses\n text = text.replace(/\\.\\.\\./g,'…');\n\n // Nbsp for punc with spaces\n var NBSP = \"\\u00a0\";\n var NBSP_PUNCTUATION_START = /([«¿¡]) /g;\n var NBSP_PUNCTUATION_END = / ([\\!\\?:;\\.,‽»])/g;\n\n text = text.replace(NBSP_PUNCTUATION_START, '$1' + NBSP);\n text = text.replace(NBSP_PUNCTUATION_END, NBSP + '$1');\n\n return text;\n}\n\nfunction quotes(text) {\n\n text = text\n .replace(/(\\W|^)\"([^\\s\\!\\?:;\\.,‽»])/g, '$1\\u201c$2') // beginning \"\n .replace(/(\\u201c[^\"]*)\"([^\"]*$|[^\\u201c\"]*\\u201c)/g, '$1\\u201d$2') // ending \"\n .replace(/([^0-9])\"/g,'$1\\u201d') // remaining \" at end of word\n .replace(/(\\W|^)'(\\S)/g, '$1\\u2018$2') // beginning '\n .replace(/([a-z])'([a-z])/ig, '$1\\u2019$2') // conjunction's possession\n .replace(/((\\u2018[^']*)|[a-z])'([^0-9]|$)/ig, '$1\\u2019$3') // ending '\n .replace(/(\\u2018)([0-9]{2}[^\\u2019]*)(\\u2018([^0-9]|$)|$|\\u2019[a-z])/ig, '\\u2019$2$3') // abbrev. years like '93\n .replace(/(\\B|^)\\u2018(?=([^\\u2019]*\\u2019\\b)*([^\\u2019\\u2018]*\\W[\\u2019\\u2018]\\b|[^\\u2019\\u2018]*$))/ig, '$1\\u2019') // backwards apostrophe\n .replace(/'''/g, '\\u2034') // triple prime\n .replace(/(\"|'')/g, '\\u2033') // double prime\n .replace(/'/g, '\\u2032');\n\n // Allow escaped quotes\n text = text.replace(/\\\\“/, '\\\"');\n text = text.replace(/\\\\”/, '\\\"');\n text = text.replace(/\\\\’/, '\\'');\n text = text.replace(/\\\\‘/, '\\'');\n\n return text;\n}\n\nfunction ligatures(text){\n\n text = text.replace(/fi/g, 'fi');\n text = text.replace(/fl/g, 'fl');\n\n return text;\n};\n","import code from './hover-box.txt';\n\nexport default function(dom) {\n let s = dom.createElement(\"script\");\n s.textContent = code;\n dom.querySelector(\"body\").appendChild(s);\n}\n","//import xml from \"xml\";\n\nexport default function(data) {\n\n\n var date = data.publishedDate;\n\n var batch_timestamp = Math.floor(Date.now() / 1000);\n var batch_id = data.authors.length ? data.authors[0].lastName.toLowerCase().slice(0,20) : \"Anonymous\";\n batch_id += \"_\" + date.getFullYear();\n batch_id += \"_\" + data.title.split(\" \")[0].toLowerCase().slice(0,20) + \"_\" + batch_timestamp;\n // generate XML\n var crf_data =\n {doi_batch : [\n\n { _attr: {\n version: \"4.3.7\",\n xmlns: \"http://www.crossref.org/schema/4.3.7\",\n \"xmlns:xsi\": \"http://www.w3.org/2001/XMLSchema-instance\",\n \"xsi:schemaLocation\": \"http://www.crossref.org/schema/4.3.7 http://www.crossref.org/schemas/crossref4.3.7.xsd\",\n }},\n\n { head: [\n {doi_batch_id: batch_id},\n {timestamp: batch_timestamp},\n {depositor: [\n {depositor_name: data.journal.publisherName},\n {email_address: data.journal.publisherEmail},\n ]},\n {registrant: data.journal.publisherName},\n ]},\n\n {body: [\n {journal: [\n\n {journal_metadata: [\n {full_title: data.journal.full_title || data.journal.title},\n {abbrev_title: data.journal.abbrev_title || data.journal.title || data.journal.full_title},\n {issn: data.journal.issn},\n {doi_data: [\n {doi: data.journal.doi},\n {resource: data.journal.url},\n ]},\n ]},\n\n {journal_issue: [\n {publication_date: [\n {month: date.getMonth()+1},\n {year: date.getFullYear()},\n ]},\n {journal_volume: [\n {volume: data.volume},\n ]},\n {issue: data.issue},\n ]},\n\n {journal_article: [\n {titles: [\n {title: data.title},\n ]},\n { contributors:\n data.authors.map((author, ind) => (\n {person_name: [\n { _attr: {\n contributor_role: \"author\",\n sequence: (ind == 0)? \"first\" : \"additional\"\n }},\n {given_name: author.firstName},\n {surname: author.lastName},\n {affiliation: author.affiliation}\n // TODO: ORCID?\n ]}\n ))\n },\n {publication_date: [\n {month: date.getMonth()+1},\n {day: date.getDate()},\n {year: date.getFullYear()}\n ]},\n { publisher_item: [\n {item_number: data.doi}\n ]},\n {doi_data: [\n {doi: data.doi},\n //{timestamp: \"\"},\n {resource: data.url},\n ]},\n {citation_list:\n data.citations.map(key =>\n citation_xml(key, data.bibliography[key]))\n }\n\n ]},\n\n ]},\n ]},\n ]};\n\n return xml(crf_data);\n}\n\nfunction citation_xml(key, ent){\n if (ent == undefined) return {};\n var info = [];\n info.push({_attr: {key: key}});\n if (\"title\" in ent)\n info.push({article_title: ent.title});\n if (\"author\" in ent)\n info.push({author: ent.author.split(\" and \")[0].split(\",\")[0].trim()});\n if (\"journal\" in ent)\n info.push({journal_title: ent.journal});\n if (\"booktitle\" in ent)\n info.push({volume_title: ent.booktitle});\n if (\"volume\" in ent)\n info.push({volume: ent.volume});\n if (\"issue\" in ent)\n info.push({issue: ent.issue});\n if (\"doi\" in ent)\n info.push({doi: ent.doi});\n return {citation: info}\n}\n\nfunction xml(obj) {\n //console.log(typeof(obj), obj)\n if (typeof obj === 'string') return obj;\n if (typeof obj === 'number') return \"\"+obj;\n let keys = Object.keys(obj);\n if (keys.length != 1) console.error(\"can't interpret \", obj, \"as xml\");\n let name = keys[0];\n var full_content = obj[name];\n var attr = {};\n if (Array.isArray(full_content)){\n var content = [];\n for (var i in full_content) {\n var obj = full_content[i];\n var obj_name = Object.keys(obj)[0];\n if (\"_attr\" == obj_name) {\n attr = obj[\"_attr\"];\n } else {\n //console.log(Object.keys(obj)[0])\n content.push(obj);\n }\n }\n } else {\n content = full_content;\n }\n if (content == undefined){\n content = \"undefined\"\n }\n\n let attr_string = \"\";\n for (var k in attr) {\n attr_string += ` ${k}=\\\"${attr[k]}\\\"`\n }\n\n //console.log(typeof content, Array.isArray(content), content instanceof String, content)\n if (Array.isArray(content)){\n content = content.map(xml);\n content = content.join(\"\\n\").split(\"\\n\");\n content = content.map(s => \" \" + s).join(\"\\n\")\n var result = `<${name}${attr_string}>\\n${content}\\n`;\n } else {\n content = xml(content);\n var result = `<${name}${attr_string}>${content}`;\n }\n return result;\n}\n","import logo from \"./distill-logo.svg\";\n\nconst html = `\n\n\n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-header\");\n if(el) {\n el.innerHTML = html;\n } else {\n let header = dom.createElement(\"dt-header\");\n header.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(header, b.firstChild);\n }\n}\n","import logo from \"./distill-logo.svg\";\n\nlet html = `\n\n\n
    \n
    \n \n ${logo}\n Distill\n \n is dedicated to clear explanations of machine learning\n
    \n
    \n About\n Submit\n Prize\n RSS\n Twitter\n
    \n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-footer\");\n if(el) {\n el.innerHTML = html;\n } else {\n let footer = dom.createElement(\"dt-footer\");\n footer.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.appendChild(footer);\n }\n}\n","import html from \"./components/html\";\nimport styles from \"./components/styles\";\nimport frontMatter from \"./components/front-matter\";\nimport bibliography from \"./components/bibliography\";\nimport expandData from \"./components/expand-data\";\nimport meta from \"./components/meta\";\nimport banner from \"./components/banner\";\nimport byline from \"./components/byline\";\nimport appendix from \"./components/appendix\";\nimport citation from \"./components/citation\";\nimport footnote from \"./components/footnote\";\nimport markdown from \"./components/markdown\";\nimport code from \"./components/code\";\nimport typeset from \"./components/typeset\";\nimport hoverBox from \"./components/hover-box-include\";\nimport generateCrossref from \"./components/generate-crossref\";\nimport header from \"./components/header\";\nimport footer from \"./components/footer\";\n\nfunction renderImmediately(dom) {\n html(dom);\n styles(dom);\n}\n\nfunction renderOnLoad(dom, data) {\n frontMatter(dom, data);\n bibliography(dom, data);\n expandData(dom, data);\n meta(dom, data);\n byline(dom, data);\n appendix(dom, data);\n markdown(dom, data);\n code(dom, data);\n citation(dom, data);\n footnote(dom, data);\n typeset(dom, data);\n hoverBox(dom, data);\n}\n\n// If we are in a browser, render automatically...\nif(window && window.document) {\n let data = {};\n renderImmediately(window.document);\n window.document.addEventListener(\"DOMContentLoaded\", (event) => {\n renderOnLoad(window.document, data);\n // Add a banner if we're not on localhost.\n if (window.location.hostname !== \"localhost\" && window.location.origin !== \"file://\") {\n banner(window.document, data);\n }\n generateCrossref(data);\n });\n}\n\n// If we are in node...\nfunction render(dom, data) {\n renderImmediately(dom);\n renderOnLoad(dom, data);\n // Remove script tag so it doesn't run again in the client\n let s = dom.querySelector('script[src*=\"distill.pub/template\"]');\n if (s) { s.parentElement.removeChild(s); };\n}\n\n// Distill specific rendering\nfunction distillify(dom, data) {\n header(dom, data);\n footer(dom, data);\n}\n\nexport {render as render};\nexport {distillify as distillify};\nexport {generateCrossref as generateCrossref};\n"],"names":["let","meta","YAMLException","common","require$$0","Mark","this","Type","require$$1","require$$2","type","arguments","Schema","require$$3","require$$4","require$$5","require","_hasOwnProperty","_toString","require$$6","require$$7","_require","DEFAULT_SAFE_SCHEMA","DEFAULT_FULL_SCHEMA","loadAll","load","safeLoadAll","safeLoad","State","dump","safeDump","require$$8","require$$9","ymlParse","interval","day","timeDay","timeYear","timeSunday","timeMonday","locale","escape","const","html","define","global","Prism","code","render"],"mappings":";;;;;;AAAA,WAAe,SAAS,GAAG,EAAE;EAC3B,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;IACnD,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;GACrD;;EAEDA,IAAI,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;;EAErC,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,eAAe,CAAC,EAAE;IACvCA,IAAI,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACtC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;GACxB;EACD,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,qBAAqB,CAAC,EAAE;IAC7CA,IAAIC,MAAI,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IACrCA,MAAI,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACtCA,MAAI,CAAC,YAAY,CAAC,SAAS,EAAE,qCAAqC,CAAC,CAAC;IACpE,IAAI,CAAC,WAAW,CAACA,MAAI,CAAC,CAAC;GACxB;CACF,CAAA;;;;;;;;;;;;ACZD,aAAe,SAAS,GAAG,EAAE;EAC3BD,IAAI,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;EACnC,CAAC,CAAC,WAAW,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC;EACvD,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;CAC1C,CAAA;;ACPD,SAAS,SAAS,CAAC,OAAO,EAAE;EAC1B,OAAO,CAAC,OAAO,OAAO,KAAK,WAAW,MAAM,OAAO,KAAK,IAAI,CAAC,CAAC;CAC/D;;;AAGD,SAAS,QAAQ,CAAC,OAAO,EAAE;EACzB,OAAO,CAAC,OAAO,OAAO,KAAK,QAAQ,MAAM,OAAO,KAAK,IAAI,CAAC,CAAC;CAC5D;;;AAGD,SAAS,OAAO,CAAC,QAAQ,EAAE;EACzB,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAA,OAAO,QAAQ,CAAC,EAAA;OACxC,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAA,OAAO,EAAE,CAAC,EAAA;;EAExC,OAAO,EAAE,QAAQ,EAAE,CAAC;CACrB;;;AAGD,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE;EAC9B,IAAI,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC;;EAEnC,IAAI,MAAM,EAAE;IACV,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;IAEjC,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;MACtE,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;MACxB,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;KAC3B;GACF;;EAED,OAAO,MAAM,CAAC;CACf;;;AAGD,SAAS,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE;EAC7B,IAAI,MAAM,GAAG,EAAE,EAAE,KAAK,CAAC;;EAEvB,KAAK,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,IAAI,CAAC,EAAE;IACzC,MAAM,IAAI,MAAM,CAAC;GAClB;;EAED,OAAO,MAAM,CAAC;CACf;;;AAGD,SAAS,cAAc,CAAC,MAAM,EAAE;EAC9B,OAAO,CAAC,MAAM,KAAK,CAAC,MAAM,MAAM,CAAC,iBAAiB,KAAK,CAAC,GAAG,MAAM,CAAC,CAAC;CACpE;;;AAGD,kBAAgC,SAAS,CAAC;AAC1C,iBAAgC,QAAQ,CAAC;AACzC,gBAAgC,OAAO,CAAC;AACxC,eAAgC,MAAM,CAAC;AACvC,uBAAgC,cAAc,CAAC;AAC/C,eAAgC,MAAM,CAAC;;;;;;;;;;;AC1DvC;;AAEA,AAEA,SAASE,eAAa,CAAC,MAAM,EAAE,IAAI,EAAE;;EAEnC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;;EAGjB,IAAI,KAAK,CAAC,iBAAiB,EAAE;;IAE3B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;GACjD,MAAM;;IAEL,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,EAAE,EAAE,KAAK,IAAI,EAAE,CAAC;GACxC;;EAED,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;EAC5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;EACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;EACjB,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,kBAAkB,KAAK,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;CACpG;;;;AAIDA,eAAa,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACzDA,eAAa,CAAC,SAAS,CAAC,WAAW,GAAGA,eAAa,CAAC;;;AAGpDA,eAAa,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,CAAC,OAAO,EAAE;EAC5D,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;;EAE9B,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,kBAAkB,CAAC;;EAE5C,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE;IACzB,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;GACtC;;EAED,OAAO,MAAM,CAAC;CACf,CAAC;;;AAGF,aAAc,GAAGA,eAAa,CAAC;;ACvC/B,IAAIC,QAAM,GAAGC,QAAmB,CAAC;;;AAGjC,SAASC,MAAI,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE;EAClD,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC;EACrB,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC;EACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;EACzB,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC;EACrB,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC;CACxB;;;AAGDA,MAAI,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE;;;EACjE,IAAI,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC;;EAEpC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;;EAE9B,MAAM,GAAG,MAAM,IAAI,CAAC,CAAC;EACrB,SAAS,GAAG,SAAS,IAAI,EAAE,CAAC;;EAE5B,IAAI,GAAG,EAAE,CAAC;EACV,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;;EAEtB,OAAO,KAAK,GAAG,CAAC,IAAI,0BAA0B,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;IAC5F,KAAK,IAAI,CAAC,CAAC;IACX,IAAIC,MAAI,CAAC,QAAQ,GAAG,KAAK,IAAI,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;MAC/C,IAAI,GAAG,OAAO,CAAC;MACf,KAAK,IAAI,CAAC,CAAC;MACX,MAAM;KACP;GACF;;EAED,IAAI,GAAG,EAAE,CAAC;EACV,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;;EAEpB,OAAO,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,0BAA0B,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;IACrG,GAAG,IAAI,CAAC,CAAC;IACT,IAAI,GAAG,GAAGA,MAAI,CAAC,QAAQ,IAAI,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE;MAC7C,IAAI,GAAG,OAAO,CAAC;MACf,GAAG,IAAI,CAAC,CAAC;MACT,MAAM;KACP;GACF;;EAED,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;;EAExC,OAAOH,QAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI;SACzDA,QAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;CAC/E,CAAC;;;AAGFE,MAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,CAAC,OAAO,EAAE;EACnD,IAAI,OAAO,EAAE,KAAK,GAAG,EAAE,CAAC;;EAExB,IAAI,IAAI,CAAC,IAAI,EAAE;IACb,KAAK,IAAI,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;GACpC;;EAED,KAAK,IAAI,UAAU,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,WAAW,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;;EAExE,IAAI,CAAC,OAAO,EAAE;IACZ,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;;IAE5B,IAAI,OAAO,EAAE;MACX,KAAK,IAAI,KAAK,GAAG,OAAO,CAAC;KAC1B;GACF;;EAED,OAAO,KAAK,CAAC;CACd,CAAC;;;AAGF,QAAc,GAAGA,MAAI,CAAC;;ACzEtB,IAAIH,eAAa,GAAGE,SAAsB,CAAC;;AAE3C,IAAI,wBAAwB,GAAG;EAC7B,MAAM;EACN,SAAS;EACT,WAAW;EACX,YAAY;EACZ,WAAW;EACX,WAAW;EACX,cAAc;EACd,cAAc;CACf,CAAC;;AAEF,IAAI,eAAe,GAAG;EACpB,QAAQ;EACR,UAAU;EACV,SAAS;CACV,CAAC;;AAEF,SAAS,mBAAmB,CAAC,GAAG,EAAE;EAChC,IAAI,MAAM,GAAG,EAAE,CAAC;;EAEhB,IAAI,GAAG,KAAK,IAAI,EAAE;IAChB,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,KAAK,EAAE;MACxC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,UAAU,KAAK,EAAE;QAClC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;OAC/B,CAAC,CAAC;KACJ,CAAC,CAAC;GACJ;;EAED,OAAO,MAAM,CAAC;CACf;;AAED,SAASG,MAAI,CAAC,GAAG,EAAE,OAAO,EAAE;EAC1B,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;;EAExB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE;IAC3C,IAAI,wBAAwB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;MACjD,MAAM,IAAIL,eAAa,CAAC,kBAAkB,GAAG,IAAI,GAAG,6BAA6B,GAAG,GAAG,GAAG,cAAc,CAAC,CAAC;KAC3G;GACF,CAAC,CAAC;;;EAGH,IAAI,CAAC,GAAG,YAAY,GAAG,CAAC;EACxB,IAAI,CAAC,IAAI,WAAW,OAAO,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC;EACpD,IAAI,CAAC,OAAO,QAAQ,OAAO,CAAC,SAAS,CAAC,SAAS,YAAY,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;EAC5E,IAAI,CAAC,SAAS,MAAM,OAAO,CAAC,WAAW,CAAC,OAAO,UAAU,IAAI,EAAE,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;EAChF,IAAI,CAAC,UAAU,KAAK,OAAO,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC;EACpD,IAAI,CAAC,SAAS,MAAM,OAAO,CAAC,WAAW,CAAC,OAAO,IAAI,CAAC;EACpD,IAAI,CAAC,SAAS,MAAM,OAAO,CAAC,WAAW,CAAC,OAAO,IAAI,CAAC;EACpD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC;EACpD,IAAI,CAAC,YAAY,GAAG,mBAAmB,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,CAAC;;EAEzE,IAAI,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;IAC7C,MAAM,IAAIA,eAAa,CAAC,gBAAgB,GAAG,IAAI,CAAC,IAAI,GAAG,sBAAsB,GAAG,GAAG,GAAG,cAAc,CAAC,CAAC;GACvG;CACF;;AAED,QAAc,GAAGK,MAAI,CAAC;;;;ACxDtB,IAAIJ,QAAM,UAAUC,QAAmB,CAAC;AACxC,IAAIF,eAAa,GAAGM,SAAsB,CAAC;AAC3C,IAAID,MAAI,YAAYE,IAAiB,CAAC;;;AAGtC,SAAS,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;EACzC,IAAI,OAAO,GAAG,EAAE,CAAC;;EAEjB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,cAAc,EAAE;IAC/C,MAAM,GAAG,WAAW,CAAC,cAAc,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;GACpD,CAAC,CAAC;;EAEH,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,WAAW,EAAE;IAC1C,MAAM,CAAC,OAAO,CAAC,UAAU,YAAY,EAAE,aAAa,EAAE;MACpD,IAAI,YAAY,CAAC,GAAG,KAAK,WAAW,CAAC,GAAG,IAAI,YAAY,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,EAAE;QAClF,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;OAC7B;KACF,CAAC,CAAC;;IAEH,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;GAC1B,CAAC,CAAC;;EAEH,OAAO,MAAM,CAAC,MAAM,CAAC,UAAUC,OAAI,EAAE,KAAK,EAAE;IAC1C,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;GACtC,CAAC,CAAC;CACJ;;;AAGD,SAAS,UAAU,iBAAiB;;;EAClC,IAAI,MAAM,GAAG;QACP,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,EAAE;OACb,EAAE,KAAK,EAAE,MAAM,CAAC;;EAErB,SAAS,WAAW,CAACA,OAAI,EAAE;IACzB,MAAM,CAACA,OAAI,CAAC,IAAI,CAAC,CAACA,OAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAACA,OAAI,CAAC,GAAG,CAAC,GAAGA,OAAI,CAAC;GACnE;;EAED,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IACrEC,WAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;GACvC;EACD,OAAO,MAAM,CAAC;CACf;;;AAGD,SAASC,QAAM,CAAC,UAAU,EAAE;EAC1B,IAAI,CAAC,OAAO,IAAI,UAAU,CAAC,OAAO,KAAK,EAAE,CAAC;EAC1C,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,IAAI,EAAE,CAAC;EAC1C,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,IAAI,EAAE,CAAC;;EAE1C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAUF,OAAI,EAAE;IACpC,IAAIA,OAAI,CAAC,QAAQ,IAAIA,OAAI,CAAC,QAAQ,KAAK,QAAQ,EAAE;MAC/C,MAAM,IAAIR,eAAa,CAAC,iHAAiH,CAAC,CAAC;KAC5I;GACF,CAAC,CAAC;;EAEH,IAAI,CAAC,gBAAgB,GAAG,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;EAC1D,IAAI,CAAC,gBAAgB,GAAG,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;EAC1D,IAAI,CAAC,eAAe,IAAI,UAAU,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;CAClF;;;AAGDU,QAAM,CAAC,OAAO,GAAG,IAAI,CAAC;;;AAGtBA,QAAM,CAAC,MAAM,GAAG,SAAS,YAAY,GAAG;EACtC,IAAI,OAAO,EAAE,KAAK,CAAC;;EAEnB,QAAQ,SAAS,CAAC,MAAM;IACtB,KAAK,CAAC;MACJ,OAAO,GAAGA,QAAM,CAAC,OAAO,CAAC;MACzB,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;MACrB,MAAM;;IAER,KAAK,CAAC;MACJ,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;MACvB,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;MACrB,MAAM;;IAER;MACE,MAAM,IAAIV,eAAa,CAAC,sDAAsD,CAAC,CAAC;GACnF;;EAED,OAAO,GAAGC,QAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;EAClC,KAAK,GAAGA,QAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;;EAE9B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,MAAM,EAAE,EAAE,OAAO,MAAM,YAAYS,QAAM,CAAC,EAAE,CAAC,EAAE;IAC1E,MAAM,IAAIV,eAAa,CAAC,2FAA2F,CAAC,CAAC;GACtH;;EAED,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAUQ,OAAI,EAAE,EAAE,OAAOA,OAAI,YAAYH,MAAI,CAAC,EAAE,CAAC,EAAE;IAClE,MAAM,IAAIL,eAAa,CAAC,oFAAoF,CAAC,CAAC;GAC/G;;EAED,OAAO,IAAIU,QAAM,CAAC;IAChB,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE,KAAK;GAChB,CAAC,CAAC;CACJ,CAAC;;;AAGF,UAAc,GAAGA,QAAM,CAAC;;ACzGxB,IAAIL,MAAI,GAAGH,IAAkB,CAAC;;AAE9B,OAAc,GAAG,IAAIG,MAAI,CAAC,uBAAuB,EAAE;EACjD,IAAI,EAAE,QAAQ;EACd,SAAS,EAAE,UAAU,IAAI,EAAE,EAAE,OAAO,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,EAAE;CACjE,CAAC,CAAC;;ACLH,IAAIA,MAAI,GAAGH,IAAkB,CAAC;;AAE9B,OAAc,GAAG,IAAIG,MAAI,CAAC,uBAAuB,EAAE;EACjD,IAAI,EAAE,UAAU;EAChB,SAAS,EAAE,UAAU,IAAI,EAAE,EAAE,OAAO,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,EAAE;CACjE,CAAC,CAAC;;ACLH,IAAIA,MAAI,GAAGH,IAAkB,CAAC;;AAE9B,OAAc,GAAG,IAAIG,MAAI,CAAC,uBAAuB,EAAE;EACjD,IAAI,EAAE,SAAS;EACf,SAAS,EAAE,UAAU,IAAI,EAAE,EAAE,OAAO,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,EAAE;CACjE,CAAC,CAAC;;ACAH,IAAIK,QAAM,GAAGR,MAAoB,CAAC;;;AAGlC,YAAc,GAAG,IAAIQ,QAAM,CAAC;EAC1B,QAAQ,EAAE;IACRJ,GAAsB;IACtBC,GAAsB;IACtBI,GAAsB;GACvB;CACF,CAAC,CAAC;;ACdH,IAAIN,MAAI,GAAGH,IAAkB,CAAC;;AAE9B,SAAS,eAAe,CAAC,IAAI,EAAE;EAC7B,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;;EAE/B,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;;EAEtB,OAAO,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,GAAG;UACzB,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC;CAC/E;;AAED,SAAS,iBAAiB,GAAG;EAC3B,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,MAAM,CAAC,MAAM,EAAE;EACtB,OAAO,MAAM,KAAK,IAAI,CAAC;CACxB;;AAED,SAAc,GAAG,IAAIG,MAAI,CAAC,wBAAwB,EAAE;EAClD,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,eAAe;EACxB,SAAS,EAAE,iBAAiB;EAC5B,SAAS,EAAE,MAAM;EACjB,SAAS,EAAE;IACT,SAAS,EAAE,YAAY,EAAE,OAAO,GAAG,CAAC,KAAK;IACzC,SAAS,EAAE,YAAY,EAAE,OAAO,MAAM,CAAC,EAAE;IACzC,SAAS,EAAE,YAAY,EAAE,OAAO,MAAM,CAAC,EAAE;IACzC,SAAS,EAAE,YAAY,EAAE,OAAO,MAAM,CAAC,EAAE;GAC1C;EACD,YAAY,EAAE,WAAW;CAC1B,CAAC,CAAC;;AC/BH,IAAIA,MAAI,GAAGH,IAAkB,CAAC;;AAE9B,SAAS,kBAAkB,CAAC,IAAI,EAAE;EAChC,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;EAEhC,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;;EAEtB,OAAO,CAAC,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,CAAC;UACpE,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC;CAClF;;AAED,SAAS,oBAAoB,CAAC,IAAI,EAAE;EAClC,OAAO,IAAI,KAAK,MAAM;SACf,IAAI,KAAK,MAAM;SACf,IAAI,KAAK,MAAM,CAAC;CACxB;;AAED,SAAS,SAAS,CAAC,MAAM,EAAE;EACzB,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,kBAAkB,CAAC;CACtE;;AAED,QAAc,GAAG,IAAIG,MAAI,CAAC,wBAAwB,EAAE;EAClD,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,kBAAkB;EAC3B,SAAS,EAAE,oBAAoB;EAC/B,SAAS,EAAE,SAAS;EACpB,SAAS,EAAE;IACT,SAAS,EAAE,UAAU,MAAM,EAAE,EAAE,OAAO,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE;IAClE,SAAS,EAAE,UAAU,MAAM,EAAE,EAAE,OAAO,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE;IAClE,SAAS,EAAE,UAAU,MAAM,EAAE,EAAE,OAAO,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE;GACnE;EACD,YAAY,EAAE,WAAW;CAC1B,CAAC,CAAC;;AChCH,IAAIJ,QAAM,GAAGC,QAAoB,CAAC;AAClC,IAAIG,MAAI,KAAKC,IAAkB,CAAC;;AAEhC,SAAS,SAAS,CAAC,CAAC,EAAE;EACpB,OAAO,CAAC,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ;UACxC,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,CAAC;UACzC,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,CAAC,CAAC;CACnD;;AAED,SAAS,SAAS,CAAC,CAAC,EAAE;EACpB,QAAQ,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAE;CACnD;;AAED,SAAS,SAAS,CAAC,CAAC,EAAE;EACpB,QAAQ,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAE;CACnD;;AAED,SAAS,kBAAkB,CAAC,IAAI,EAAE;EAChC,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;EAEhC,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM;MACjB,KAAK,GAAG,CAAC;MACT,SAAS,GAAG,KAAK;MACjB,EAAE,CAAC;;EAEP,IAAI,CAAC,GAAG,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;EAEvB,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;;;EAGjB,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE;IAC5B,EAAE,GAAG,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;GACpB;;EAED,IAAI,EAAE,KAAK,GAAG,EAAE;;IAEd,IAAI,KAAK,GAAG,CAAC,KAAK,GAAG,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;IACnC,EAAE,GAAG,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;;;;IAInB,IAAI,EAAE,KAAK,GAAG,EAAE;;MAEd,KAAK,EAAE,CAAC;;MAER,OAAO,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE;QAC3B,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACjB,IAAI,EAAE,KAAK,GAAG,EAAE,EAAA,SAAS,EAAA;QACzB,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;QAC3C,SAAS,GAAG,IAAI,CAAC;OAClB;MACD,OAAO,SAAS,CAAC;KAClB;;;IAGD,IAAI,EAAE,KAAK,GAAG,EAAE;;MAEd,KAAK,EAAE,CAAC;;MAER,OAAO,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE;QAC3B,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACjB,IAAI,EAAE,KAAK,GAAG,EAAE,EAAA,SAAS,EAAA;QACzB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;QACrD,SAAS,GAAG,IAAI,CAAC;OAClB;MACD,OAAO,SAAS,CAAC;KAClB;;;IAGD,OAAO,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE;MAC3B,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;MACjB,IAAI,EAAE,KAAK,GAAG,EAAE,EAAA,SAAS,EAAA;MACzB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;MACrD,SAAS,GAAG,IAAI,CAAC;KAClB;IACD,OAAO,SAAS,CAAC;GAClB;;;;EAID,OAAO,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE;IAC3B,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACjB,IAAI,EAAE,KAAK,GAAG,EAAE,EAAA,SAAS,EAAA;IACzB,IAAI,EAAE,KAAK,GAAG,EAAE,EAAA,MAAM,EAAA;IACtB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE;MACtC,OAAO,KAAK,CAAC;KACd;IACD,SAAS,GAAG,IAAI,CAAC;GAClB;;EAED,IAAI,CAAC,SAAS,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;;EAG7B,IAAI,EAAE,KAAK,GAAG,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;;;EAG5B,OAAO,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;CACpD;;AAED,SAAS,oBAAoB,CAAC,IAAI,EAAE;EAClC,IAAI,KAAK,GAAG,IAAI,EAAE,IAAI,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,EAAE,CAAC;;EAElD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;IAC7B,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;GACjC;;EAED,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;;EAEd,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE;IAC5B,IAAI,EAAE,KAAK,GAAG,EAAE,EAAA,IAAI,GAAG,CAAC,CAAC,CAAC,EAAA;IAC1B,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;GACf;;EAED,IAAI,KAAK,KAAK,GAAG,EAAE,EAAA,OAAO,CAAC,CAAC,EAAA;;EAE5B,IAAI,EAAE,KAAK,GAAG,EAAE;IACd,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,EAAA,OAAO,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAA;IAChE,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,EAAA,OAAO,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,EAAA;IACxD,OAAO,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;GAClC;;EAED,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;IAC7B,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;MACpC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;KACjC,CAAC,CAAC;;IAEH,KAAK,GAAG,CAAC,CAAC;IACV,IAAI,GAAG,CAAC,CAAC;;IAET,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;MAC1B,KAAK,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;MACpB,IAAI,IAAI,EAAE,CAAC;KACZ,CAAC,CAAC;;IAEH,OAAO,IAAI,GAAG,KAAK,CAAC;;GAErB;;EAED,OAAO,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;CACnC;;AAED,SAAS,SAAS,CAAC,MAAM,EAAE;EACzB,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,iBAAiB;UAC7D,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,CAACL,QAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;CAC7D;;AAED,SAAc,GAAG,IAAII,MAAI,CAAC,uBAAuB,EAAE;EACjD,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,kBAAkB;EAC3B,SAAS,EAAE,oBAAoB;EAC/B,SAAS,EAAE,SAAS;EACpB,SAAS,EAAE;IACT,MAAM,OAAO,UAAU,MAAM,EAAE,EAAE,OAAO,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;IACpE,KAAK,QAAQ,UAAU,MAAM,EAAE,EAAE,OAAO,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;IACpE,OAAO,MAAM,UAAU,MAAM,EAAE,EAAE,cAAc,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE;IACrE,WAAW,EAAE,UAAU,MAAM,EAAE,EAAE,OAAO,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE;GACpF;EACD,YAAY,EAAE,SAAS;EACvB,YAAY,EAAE;IACZ,MAAM,OAAO,EAAE,CAAC,GAAG,KAAK,EAAE;IAC1B,KAAK,QAAQ,EAAE,CAAC,GAAG,KAAK,EAAE;IAC1B,OAAO,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE;IAC1B,WAAW,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE;GAC3B;CACF,CAAC,CAAC;;ACrKH,IAAIJ,QAAM,GAAGC,QAAoB,CAAC;AAClC,IAAIG,MAAI,KAAKC,IAAkB,CAAC;;AAEhC,IAAI,kBAAkB,GAAG,IAAI,MAAM;EACjC,wDAAwD;EACxD,gCAAgC;EAChC,+CAA+C;EAC/C,0BAA0B;EAC1B,uBAAuB,CAAC,CAAC;;AAE3B,SAAS,gBAAgB,CAAC,IAAI,EAAE;EAC9B,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;EAEhC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;EAEjD,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,kBAAkB,CAAC,IAAI,EAAE;EAChC,IAAI,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC;;EAE9B,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;EAC9C,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;EACnC,MAAM,GAAG,EAAE,CAAC;;EAEZ,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;IAC/B,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;GACxB;;EAED,IAAI,KAAK,KAAK,MAAM,EAAE;IACpB,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;;GAE3E,MAAM,IAAI,KAAK,KAAK,MAAM,EAAE;IAC3B,OAAO,GAAG,CAAC;;GAEZ,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;IAClC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;MACpC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;KACnC,CAAC,CAAC;;IAEH,KAAK,GAAG,GAAG,CAAC;IACZ,IAAI,GAAG,CAAC,CAAC;;IAET,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;MAC1B,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;MAClB,IAAI,IAAI,EAAE,CAAC;KACZ,CAAC,CAAC;;IAEH,OAAO,IAAI,GAAG,KAAK,CAAC;;GAErB;EACD,OAAO,IAAI,GAAG,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;CACrC;;;AAGD,IAAI,sBAAsB,GAAG,eAAe,CAAC;;AAE7C,SAAS,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE;EACzC,IAAI,GAAG,CAAC;;EAER,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;IACjB,QAAQ,KAAK;MACX,KAAK,WAAW,EAAE,OAAO,MAAM,CAAC;MAChC,KAAK,WAAW,EAAE,OAAO,MAAM,CAAC;MAChC,KAAK,WAAW,EAAE,OAAO,MAAM,CAAC;KACjC;GACF,MAAM,IAAI,MAAM,CAAC,iBAAiB,KAAK,MAAM,EAAE;IAC9C,QAAQ,KAAK;MACX,KAAK,WAAW,EAAE,OAAO,MAAM,CAAC;MAChC,KAAK,WAAW,EAAE,OAAO,MAAM,CAAC;MAChC,KAAK,WAAW,EAAE,OAAO,MAAM,CAAC;KACjC;GACF,MAAM,IAAI,MAAM,CAAC,iBAAiB,KAAK,MAAM,EAAE;IAC9C,QAAQ,KAAK;MACX,KAAK,WAAW,EAAE,OAAO,OAAO,CAAC;MACjC,KAAK,WAAW,EAAE,OAAO,OAAO,CAAC;MACjC,KAAK,WAAW,EAAE,OAAO,OAAO,CAAC;KAClC;GACF,MAAM,IAAIL,QAAM,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE;IACxC,OAAO,MAAM,CAAC;GACf;;EAED,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;;;;;EAK1B,OAAO,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC;CACxE;;AAED,SAAS,OAAO,CAAC,MAAM,EAAE;EACvB,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,iBAAiB;UAC5D,MAAM,GAAG,CAAC,KAAK,CAAC,IAAIA,QAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;CAC5D;;AAED,WAAc,GAAG,IAAII,MAAI,CAAC,yBAAyB,EAAE;EACnD,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,gBAAgB;EACzB,SAAS,EAAE,kBAAkB;EAC7B,SAAS,EAAE,OAAO;EAClB,SAAS,EAAE,kBAAkB;EAC7B,YAAY,EAAE,WAAW;CAC1B,CAAC,CAAC;;AC7FH,IAAIK,QAAM,GAAGR,MAAoB,CAAC;;;AAGlC,QAAc,GAAG,IAAIQ,QAAM,CAAC;EAC1B,OAAO,EAAE;IACPJ,QAAqB;GACtB;EACD,QAAQ,EAAE;IACRC,KAAuB;IACvBI,IAAuB;IACvBC,KAAsB;IACtBC,OAAwB;GACzB;CACF,CAAC,CAAC;;ACdH,IAAIH,QAAM,GAAGR,MAAoB,CAAC;;;AAGlC,QAAc,GAAG,IAAIQ,QAAM,CAAC;EAC1B,OAAO,EAAE;IACPJ,IAAiB;GAClB;CACF,CAAC,CAAC;;ACfH,IAAID,OAAI,GAAGH,IAAkB,CAAC;;AAE9B,IAAI,gBAAgB,GAAG,IAAI,MAAM;EAC/B,yBAAyB;EACzB,eAAe;EACf,gBAAgB,CAAC,CAAC;;AAEpB,IAAI,qBAAqB,GAAG,IAAI,MAAM;EACpC,yBAAyB;EACzB,gBAAgB;EAChB,gBAAgB;EAChB,kBAAkB;EAClB,eAAe;EACf,eAAe;EACf,eAAe;EACf,kBAAkB;EAClB,kCAAkC;EAClC,wBAAwB,CAAC,CAAC;;AAE5B,SAAS,oBAAoB,CAAC,IAAI,EAAE;EAClC,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;EAChC,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;EACtD,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;EAC3D,OAAO,KAAK,CAAC;CACd;;AAED,SAAS,sBAAsB,CAAC,IAAI,EAAE;EACpC,IAAI,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,CAAC;MAC3D,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC;;EAE3C,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;EACpC,IAAI,KAAK,KAAK,IAAI,EAAE,EAAA,KAAK,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAA;;EAE7D,IAAI,KAAK,KAAK,IAAI,EAAE,EAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC,EAAA;;;;EAI1D,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EACnB,KAAK,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;EACxB,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;;EAElB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;IACb,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;GAC7C;;;;EAID,IAAI,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EACnB,MAAM,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EACrB,MAAM,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;;EAErB,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;IACZ,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChC,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;MAC1B,QAAQ,IAAI,GAAG,CAAC;KACjB;IACD,QAAQ,GAAG,CAAC,QAAQ,CAAC;GACtB;;;;EAID,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE;IACZ,OAAO,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACvB,SAAS,GAAG,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9B,KAAK,GAAG,CAAC,OAAO,GAAG,EAAE,GAAG,SAAS,IAAI,KAAK,CAAC;IAC3C,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,EAAA,KAAK,GAAG,CAAC,KAAK,CAAC,EAAA;GACtC;;EAED,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;;EAE5E,IAAI,KAAK,EAAE,EAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,CAAC,EAAA;;EAEhD,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,sBAAsB,CAAC,MAAM,cAAc;EAClD,OAAO,MAAM,CAAC,WAAW,EAAE,CAAC;CAC7B;;AAED,aAAc,GAAG,IAAIG,OAAI,CAAC,6BAA6B,EAAE;EACvD,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,oBAAoB;EAC7B,SAAS,EAAE,sBAAsB;EACjC,UAAU,EAAE,IAAI;EAChB,SAAS,EAAE,sBAAsB;CAClC,CAAC,CAAC;;ACrFH,IAAIA,OAAI,GAAGH,IAAkB,CAAC;;AAE9B,SAAS,gBAAgB,CAAC,IAAI,EAAE;EAC9B,OAAO,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,CAAC;CACvC;;AAED,SAAc,GAAG,IAAIG,OAAI,CAAC,yBAAyB,EAAE;EACnD,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,gBAAgB;CAC1B,CAAC,CAAC;;;;;;;;;;;;;;;;ACPH,IAAI,UAAU,CAAC;;AAEf,IAAI;;EAEF,IAAI,QAAQ,GAAGS,eAAO,CAAC;EACvB,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;CACxC,CAAC,OAAO,EAAE,EAAE,EAAE;;AAEf,IAAIT,OAAI,SAASH,IAAkB,CAAC;;;;AAIpC,IAAI,UAAU,GAAG,uEAAuE,CAAC;;;AAGzF,SAAS,iBAAiB,CAAC,IAAI,EAAE;EAC/B,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;EAEhC,IAAI,IAAI,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,UAAU,CAAC;;;EAG/D,KAAK,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE;IAC9B,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;;;IAGrC,IAAI,IAAI,GAAG,EAAE,EAAE,EAAA,SAAS,EAAA;;;IAGxB,IAAI,IAAI,GAAG,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;IAE3B,MAAM,IAAI,CAAC,CAAC;GACb;;;EAGD,OAAO,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC;CAC3B;;AAED,SAAS,mBAAmB,CAAC,IAAI,EAAE;EACjC,IAAI,GAAG,EAAE,QAAQ;MACb,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;MACpC,GAAG,GAAG,KAAK,CAAC,MAAM;MAClB,GAAG,GAAG,UAAU;MAChB,IAAI,GAAG,CAAC;MACR,MAAM,GAAG,EAAE,CAAC;;;;EAIhB,KAAK,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE;IAC9B,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE;MAC1B,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;MACjC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;MAChC,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;KAC1B;;IAED,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;GACrD;;;;EAID,QAAQ,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;;EAEzB,IAAI,QAAQ,KAAK,CAAC,EAAE;IAClB,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;IACjC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAChC,MAAM,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;GAC1B,MAAM,IAAI,QAAQ,KAAK,EAAE,EAAE;IAC1B,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;IACjC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;GACjC,MAAM,IAAI,QAAQ,KAAK,EAAE,EAAE;IAC1B,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;GACjC;;;EAGD,IAAI,UAAU,EAAE,EAAA,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,EAAA;;EAE9C,OAAO,MAAM,CAAC;CACf;;AAED,SAAS,mBAAmB,CAAC,MAAM,cAAc;EAC/C,IAAI,MAAM,GAAG,EAAE,EAAE,IAAI,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI;MAChC,GAAG,GAAG,MAAM,CAAC,MAAM;MACnB,GAAG,GAAG,UAAU,CAAC;;;;EAIrB,KAAK,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,EAAE;IAC9B,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE;MAC1B,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;MACnC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;MACnC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;MAClC,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;KAC5B;;IAED,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;GAClC;;;;EAID,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC;;EAEf,IAAI,IAAI,KAAK,CAAC,EAAE;IACd,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;GAC5B,MAAM,IAAI,IAAI,KAAK,CAAC,EAAE;IACrB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;IACnC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;GACnB,MAAM,IAAI,IAAI,KAAK,CAAC,EAAE;IACrB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,MAAM,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC;GACnB;;EAED,OAAO,MAAM,CAAC;CACf;;AAED,SAAS,QAAQ,CAAC,MAAM,EAAE;EACxB,OAAO,UAAU,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;CAClD;;AAED,UAAc,GAAG,IAAIG,OAAI,CAAC,0BAA0B,EAAE;EACpD,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,iBAAiB;EAC1B,SAAS,EAAE,mBAAmB;EAC9B,SAAS,EAAE,QAAQ;EACnB,SAAS,EAAE,mBAAmB;CAC/B,CAAC,CAAC;;ACpIH,IAAIA,OAAI,GAAGH,IAAkB,CAAC;;AAE9B,IAAIa,iBAAe,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;AACtD,IAAI,SAAS,SAAS,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;;AAEhD,SAAS,eAAe,CAAC,IAAI,EAAE;EAC7B,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;;EAE/B,IAAI,UAAU,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU;MACzD,MAAM,GAAG,IAAI,CAAC;;EAElB,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IAClE,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACrB,UAAU,GAAG,KAAK,CAAC;;IAEnB,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,iBAAiB,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;IAE7D,KAAK,OAAO,IAAI,IAAI,EAAE;MACpB,IAAIA,iBAAe,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;QACvC,IAAI,CAAC,UAAU,EAAE,EAAA,UAAU,GAAG,IAAI,CAAC,EAAA;aAC9B,EAAA,OAAO,KAAK,CAAC,EAAA;OACnB;KACF;;IAED,IAAI,CAAC,UAAU,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;IAE9B,IAAI,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAA,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAA;SAC5D,EAAA,OAAO,KAAK,CAAC,EAAA;GACnB;;EAED,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,iBAAiB,CAAC,IAAI,EAAE;EAC/B,OAAO,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;CAClC;;AAED,QAAc,GAAG,IAAIV,OAAI,CAAC,wBAAwB,EAAE;EAClD,IAAI,EAAE,UAAU;EAChB,OAAO,EAAE,eAAe;EACxB,SAAS,EAAE,iBAAiB;CAC7B,CAAC,CAAC;;ACzCH,IAAIA,OAAI,GAAGH,IAAkB,CAAC;;AAE9B,IAAIc,WAAS,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;;AAE1C,SAAS,gBAAgB,CAAC,IAAI,EAAE;EAC9B,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;;EAE/B,IAAI,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM;MACjC,MAAM,GAAG,IAAI,CAAC;;EAElB,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;;EAElC,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IAClE,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;;IAErB,IAAIA,WAAS,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,iBAAiB,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;IAE7D,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;IAEzB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;IAEpC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;GAC5C;;EAED,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,kBAAkB,CAAC,IAAI,EAAE;EAChC,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,EAAE,CAAC,EAAA;;EAE7B,IAAI,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM;MACjC,MAAM,GAAG,IAAI,CAAC;;EAElB,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;;EAElC,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IAClE,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;;IAErB,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;IAEzB,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;GAC5C;;EAED,OAAO,MAAM,CAAC;CACf;;AAED,SAAc,GAAG,IAAIX,OAAI,CAAC,yBAAyB,EAAE;EACnD,IAAI,EAAE,UAAU;EAChB,OAAO,EAAE,gBAAgB;EACzB,SAAS,EAAE,kBAAkB;CAC9B,CAAC,CAAC;;AClDH,IAAIA,OAAI,GAAGH,IAAkB,CAAC;;AAE9B,IAAIa,iBAAe,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;;AAEtD,SAAS,cAAc,CAAC,IAAI,EAAE;EAC5B,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;;EAE/B,IAAI,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;;EAEvB,KAAK,GAAG,IAAI,MAAM,EAAE;IAClB,IAAIA,iBAAe,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;MACrC,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;KACxC;GACF;;EAED,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,gBAAgB,CAAC,IAAI,EAAE;EAC9B,OAAO,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;CAClC;;AAED,OAAc,GAAG,IAAIV,OAAI,CAAC,uBAAuB,EAAE;EACjD,IAAI,EAAE,SAAS;EACf,OAAO,EAAE,cAAc;EACvB,SAAS,EAAE,gBAAgB;CAC5B,CAAC,CAAC;;AClBH,IAAIK,QAAM,GAAGR,MAAoB,CAAC;;;AAGlC,gBAAc,GAAG,IAAIQ,QAAM,CAAC;EAC1B,OAAO,EAAE;IACPJ,IAAiB;GAClB;EACD,QAAQ,EAAE;IACRC,SAA4B;IAC5BI,KAAwB;GACzB;EACD,QAAQ,EAAE;IACRC,MAAyB;IACzBC,IAAuB;IACvBI,KAAwB;IACxBC,GAAsB;GACvB;CACF,CAAC,CAAC;;ACzBH,IAAIb,OAAI,GAAGH,IAAqB,CAAC;;AAEjC,SAAS,0BAA0B,GAAG;EACpC,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,4BAA4B,GAAG;;EAEtC,OAAO,SAAS,CAAC;CAClB;;AAED,SAAS,4BAA4B,GAAG;EACtC,OAAO,EAAE,CAAC;CACX;;AAED,SAAS,WAAW,CAAC,MAAM,EAAE;EAC3B,OAAO,OAAO,MAAM,KAAK,WAAW,CAAC;CACtC;;AAED,cAAc,GAAG,IAAIG,OAAI,CAAC,gCAAgC,EAAE;EAC1D,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,0BAA0B;EACnC,SAAS,EAAE,4BAA4B;EACvC,SAAS,EAAE,WAAW;EACtB,SAAS,EAAE,4BAA4B;CACxC,CAAC,CAAC;;ACzBH,IAAIA,OAAI,GAAGH,IAAqB,CAAC;;AAEjC,SAAS,uBAAuB,CAAC,IAAI,EAAE;EACrC,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;EAChC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;EAEpC,IAAI,MAAM,GAAG,IAAI;MACb,IAAI,KAAK,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;MACjC,SAAS,GAAG,EAAE,CAAC;;;;EAInB,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;IACrB,IAAI,IAAI,EAAE,EAAA,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,EAAA;;IAE9B,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;IAEvC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;GACxE;;EAED,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,yBAAyB,CAAC,IAAI,EAAE;EACvC,IAAI,MAAM,GAAG,IAAI;MACb,IAAI,KAAK,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;MACjC,SAAS,GAAG,EAAE,CAAC;;;EAGnB,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;IACrB,IAAI,IAAI,EAAE,EAAA,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,EAAA;IAC9B,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;GAChE;;EAED,OAAO,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CACtC;;AAED,SAAS,yBAAyB,CAAC,MAAM,cAAc;EACrD,IAAI,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;;EAEvC,IAAI,MAAM,CAAC,MAAM,EAAE,EAAA,MAAM,IAAI,GAAG,CAAC,EAAA;EACjC,IAAI,MAAM,CAAC,SAAS,EAAE,EAAA,MAAM,IAAI,GAAG,CAAC,EAAA;EACpC,IAAI,MAAM,CAAC,UAAU,EAAE,EAAA,MAAM,IAAI,GAAG,CAAC,EAAA;;EAErC,OAAO,MAAM,CAAC;CACf;;AAED,SAAS,QAAQ,CAAC,MAAM,EAAE;EACxB,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,iBAAiB,CAAC;CACrE;;AAED,UAAc,GAAG,IAAIG,OAAI,CAAC,6BAA6B,EAAE;EACvD,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,uBAAuB;EAChC,SAAS,EAAE,yBAAyB;EACpC,SAAS,EAAE,QAAQ;EACnB,SAAS,EAAE,yBAAyB;CACrC,CAAC,CAAC;;ACzDH,IAAI,OAAO,CAAC;;;;;;;;;AASZ,IAAI;;EAEF,IAAIc,UAAQ,GAAGL,eAAO,CAAC;EACvB,OAAO,GAAGK,UAAQ,CAAC,SAAS,CAAC,CAAC;CAC/B,CAAC,OAAO,CAAC,EAAE;;EAEV,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,EAAA,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,EAAA;CAC7D;;AAED,IAAId,OAAI,GAAGH,IAAqB,CAAC;;AAEjC,SAAS,yBAAyB,CAAC,IAAI,EAAE;EACvC,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;;EAEhC,IAAI;IACF,IAAI,MAAM,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG;QACzB,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;;IAEpD,IAAI,GAAG,CAAC,IAAI,wBAAwB,SAAS;QACzC,GAAG,CAAC,IAAI,CAAC,MAAM,iBAAiB,CAAC;QACjC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,gBAAgB,qBAAqB;QACrD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,oBAAoB,EAAE;MACxD,OAAO,KAAK,CAAC;KACd;;IAED,OAAO,IAAI,CAAC;GACb,CAAC,OAAO,GAAG,EAAE;IACZ,OAAO,KAAK,CAAC;GACd;CACF;;AAED,SAAS,2BAA2B,CAAC,IAAI,EAAE;;;EAGzC,IAAI,MAAM,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG;MACzB,GAAG,MAAM,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;MAC/C,MAAM,GAAG,EAAE;MACX,IAAI,CAAC;;EAET,IAAI,GAAG,CAAC,IAAI,wBAAwB,SAAS;MACzC,GAAG,CAAC,IAAI,CAAC,MAAM,iBAAiB,CAAC;MACjC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,gBAAgB,qBAAqB;MACrD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,oBAAoB,EAAE;IACxD,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;GAC/C;;EAED,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,KAAK,EAAE;IACrD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;GACzB,CAAC,CAAC;;EAEH,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC;;;;;EAKzC,OAAO,IAAI,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACrE;;AAED,SAAS,2BAA2B,CAAC,MAAM,cAAc;EACvD,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;CAC1B;;AAED,SAAS,UAAU,CAAC,MAAM,EAAE;EAC1B,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,mBAAmB,CAAC;CACvE;;AAED,aAAc,GAAG,IAAIG,OAAI,CAAC,+BAA+B,EAAE;EACzD,IAAI,EAAE,QAAQ;EACd,OAAO,EAAE,yBAAyB;EAClC,SAAS,EAAE,2BAA2B;EACtC,SAAS,EAAE,UAAU;EACrB,SAAS,EAAE,2BAA2B;CACvC,CAAC,CAAC;;ACvEH,IAAIK,QAAM,GAAGR,MAAoB,CAAC;;;AAGlC,gBAAc,GAAGQ,QAAM,CAAC,OAAO,GAAG,IAAIA,QAAM,CAAC;EAC3C,OAAO,EAAE;IACPJ,YAAyB;GAC1B;EACD,QAAQ,EAAE;IACRC,UAA+B;IAC/BI,MAA4B;IAC5BC,SAA8B;GAC/B;CACF,CAAC,CAAC;;;;ACpBH,IAAI,MAAM,gBAAgBV,QAAmB,CAAC;AAC9C,IAAIF,eAAa,SAASM,SAAsB,CAAC;AACjD,IAAI,IAAI,kBAAkBC,IAAiB,CAAC;AAC5C,IAAIa,qBAAmB,GAAGT,YAAgC,CAAC;AAC3D,IAAIU,qBAAmB,GAAGT,YAAgC,CAAC;;;AAG3D,IAAI,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;;;AAGtD,IAAI,eAAe,KAAK,CAAC,CAAC;AAC1B,IAAI,gBAAgB,IAAI,CAAC,CAAC;AAC1B,IAAI,gBAAgB,IAAI,CAAC,CAAC;AAC1B,IAAI,iBAAiB,GAAG,CAAC,CAAC;;;AAG1B,IAAI,aAAa,IAAI,CAAC,CAAC;AACvB,IAAI,cAAc,GAAG,CAAC,CAAC;AACvB,IAAI,aAAa,IAAI,CAAC,CAAC;;;AAGvB,IAAI,qBAAqB,WAAW,qIAAqI,CAAC;AAC1K,IAAI,6BAA6B,GAAG,oBAAoB,CAAC;AACzD,IAAI,uBAAuB,SAAS,aAAa,CAAC;AAClD,IAAI,kBAAkB,cAAc,wBAAwB,CAAC;AAC7D,IAAI,eAAe,iBAAiB,kFAAkF,CAAC;;;AAGvH,SAAS,MAAM,CAAC,CAAC,EAAE;EACjB,OAAO,CAAC,CAAC,KAAK,IAAI,cAAc,CAAC,KAAK,IAAI,SAAS,CAAC;CACrD;;AAED,SAAS,cAAc,CAAC,CAAC,EAAE;EACzB,OAAO,CAAC,CAAC,KAAK,IAAI,eAAe,CAAC,KAAK,IAAI,YAAY,CAAC;CACzD;;AAED,SAAS,YAAY,CAAC,CAAC,EAAE;EACvB,OAAO,CAAC,CAAC,KAAK,IAAI;UACV,CAAC,KAAK,IAAI,YAAY;UACtB,CAAC,KAAK,IAAI,SAAS;UACnB,CAAC,KAAK,IAAI,SAAS,CAAC;CAC7B;;AAED,SAAS,iBAAiB,CAAC,CAAC,EAAE;EAC5B,OAAO,CAAC,KAAK,IAAI;SACV,CAAC,KAAK,IAAI;SACV,CAAC,KAAK,IAAI;SACV,CAAC,KAAK,IAAI;SACV,CAAC,KAAK,IAAI,QAAQ;CAC1B;;AAED,SAAS,WAAW,CAAC,CAAC,EAAE;EACtB,IAAI,EAAE,CAAC;;EAEP,IAAI,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAE;IAC5C,OAAO,CAAC,GAAG,IAAI,CAAC;GACjB;;;EAGD,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;;EAEd,IAAI,CAAC,IAAI,WAAW,EAAE,MAAM,EAAE,IAAI,IAAI,QAAQ,EAAE;IAC9C,OAAO,EAAE,GAAG,IAAI,GAAG,EAAE,CAAC;GACvB;;EAED,OAAO,CAAC,CAAC,CAAC;CACX;;AAED,SAAS,aAAa,CAAC,CAAC,EAAE;EACxB,IAAI,CAAC,KAAK,IAAI,SAAS,EAAE,OAAO,CAAC,CAAC,EAAE;EACpC,IAAI,CAAC,KAAK,IAAI,SAAS,EAAE,OAAO,CAAC,CAAC,EAAE;EACpC,IAAI,CAAC,KAAK,IAAI,SAAS,EAAE,OAAO,CAAC,CAAC,EAAE;EACpC,OAAO,CAAC,CAAC;CACV;;AAED,SAAS,eAAe,CAAC,CAAC,EAAE;EAC1B,IAAI,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,IAAI,IAAI,QAAQ,EAAE;IAC5C,OAAO,CAAC,GAAG,IAAI,CAAC;GACjB;;EAED,OAAO,CAAC,CAAC,CAAC;CACX;;AAED,SAAS,oBAAoB,CAAC,CAAC,EAAE;EAC/B,OAAO,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC7B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,aAAa,MAAM;QAC9B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,eAAe,GAAG;QAC7B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,WAAW,GAAG;QACzB,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,WAAW,MAAM;QAC5B,CAAC,CAAC,KAAK,IAAI,WAAW,QAAQ;QAC9B,CAAC,CAAC,KAAK,IAAI,WAAW,QAAQ,GAAG,EAAE,CAAC;CAC3C;;AAED,SAAS,iBAAiB,CAAC,CAAC,EAAE;EAC5B,IAAI,CAAC,IAAI,MAAM,EAAE;IACf,OAAO,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;GAC/B;;;EAGD,OAAO,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,KAAK,EAAE,IAAI,MAAM;6BAC/B,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,MAAM,IAAI,MAAM,CAAC,CAAC;CAChE;;AAED,IAAI,iBAAiB,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;AACvC,IAAI,eAAe,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;AACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;EAC5B,iBAAiB,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EACvD,eAAe,CAAC,CAAC,CAAC,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;CAC9C;;;AAGD,SAAS,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE;EAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;;EAEnB,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;EAC9C,IAAI,CAAC,MAAM,MAAM,OAAO,CAAC,QAAQ,CAAC,OAAOS,qBAAmB,CAAC;EAC7D,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC;EAC9C,IAAI,CAAC,MAAM,MAAM,OAAO,CAAC,QAAQ,CAAC,OAAO,KAAK,CAAC;EAC/C,IAAI,CAAC,IAAI,QAAQ,OAAO,CAAC,MAAM,CAAC,SAAS,KAAK,CAAC;EAC/C,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;;EAE9C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;EAClD,IAAI,CAAC,OAAO,SAAS,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;;EAEjD,IAAI,CAAC,MAAM,OAAO,KAAK,CAAC,MAAM,CAAC;EAC/B,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC;EACpB,IAAI,CAAC,IAAI,SAAS,CAAC,CAAC;EACpB,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;EACpB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;;EAEpB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;;;;;;;;;;;;CAYrB;;;AAGD,SAAS,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE;EACrC,OAAO,IAAIrB,eAAa;IACtB,OAAO;IACP,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC;CAC1G;;AAED,SAAS,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE;EAClC,MAAM,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;CACrC;;AAED,SAAS,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE;EACpC,IAAI,KAAK,CAAC,SAAS,EAAE;IACnB,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;GAC3D;CACF;;;AAGD,IAAI,iBAAiB,GAAG;;EAEtB,IAAI,EAAE,SAAS,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE;;IAEpD,IAAI,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;;IAExB,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,EAAE;MAC1B,UAAU,CAAC,KAAK,EAAE,gCAAgC,CAAC,CAAC;KACrD;;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;MACrB,UAAU,CAAC,KAAK,EAAE,6CAA6C,CAAC,CAAC;KAClE;;IAED,KAAK,GAAG,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;;IAE7C,IAAI,KAAK,KAAK,IAAI,EAAE;MAClB,UAAU,CAAC,KAAK,EAAE,2CAA2C,CAAC,CAAC;KAChE;;IAED,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/B,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;;IAE/B,IAAI,KAAK,KAAK,CAAC,EAAE;MACf,UAAU,CAAC,KAAK,EAAE,2CAA2C,CAAC,CAAC;KAChE;;IAED,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,KAAK,CAAC,eAAe,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;;IAEpC,IAAI,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE;MAC9B,YAAY,CAAC,KAAK,EAAE,0CAA0C,CAAC,CAAC;KACjE;GACF;;EAED,GAAG,EAAE,SAAS,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE;;IAElD,IAAI,MAAM,EAAE,MAAM,CAAC;;IAEnB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;MACrB,UAAU,CAAC,KAAK,EAAE,6CAA6C,CAAC,CAAC;KAClE;;IAED,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;;IAEjB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;MACpC,UAAU,CAAC,KAAK,EAAE,6DAA6D,CAAC,CAAC;KAClF;;IAED,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;MAC9C,UAAU,CAAC,KAAK,EAAE,6CAA6C,GAAG,MAAM,GAAG,cAAc,CAAC,CAAC;KAC5F;;IAED,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;MACjC,UAAU,CAAC,KAAK,EAAE,8DAA8D,CAAC,CAAC;KACnF;;IAED,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;GAC/B;CACF,CAAC;;;AAGF,SAAS,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE;EACpD,IAAI,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC;;EAE5C,IAAI,KAAK,GAAG,GAAG,EAAE;IACf,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;;IAExC,IAAI,SAAS,EAAE;MACb,KAAK,SAAS,GAAG,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM;WACvC,SAAS,GAAG,OAAO;WACnB,SAAS,IAAI,CAAC,EAAE;QACnB,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,EAAE,UAAU,KAAK,IAAI;eAClB,IAAI,IAAI,UAAU,IAAI,UAAU,IAAI,QAAQ,CAAC,CAAC,EAAE;UACrD,UAAU,CAAC,KAAK,EAAE,+BAA+B,CAAC,CAAC;SACpD;OACF;KACF,MAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;MAC9C,UAAU,CAAC,KAAK,EAAE,8CAA8C,CAAC,CAAC;KACnE;;IAED,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC;GACzB;CACF;;AAED,SAAS,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,eAAe,EAAE;EAClE,IAAI,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,CAAC;;EAErC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;IAC5B,UAAU,CAAC,KAAK,EAAE,mEAAmE,CAAC,CAAC;GACxF;;EAED,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;EAEjC,KAAK,KAAK,GAAG,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,GAAG,QAAQ,EAAE,KAAK,IAAI,CAAC,EAAE;IAC1E,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;;IAExB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE;MAC3C,WAAW,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;MAC/B,eAAe,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;KAC7B;GACF;CACF;;AAED,SAAS,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE;EACrF,IAAI,KAAK,EAAE,QAAQ,CAAC;;EAEpB,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;;EAE1B,IAAI,OAAO,KAAK,IAAI,EAAE;IACpB,OAAO,GAAG,EAAE,CAAC;GACd;;EAED,IAAI,MAAM,KAAK,yBAAyB,EAAE;IACxC,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;MAC5B,KAAK,KAAK,GAAG,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,QAAQ,EAAE,KAAK,IAAI,CAAC,EAAE;QACzE,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,eAAe,CAAC,CAAC;OAClE;KACF,MAAM;MACL,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;KAC3D;GACF,MAAM;IACL,IAAI,CAAC,KAAK,CAAC,IAAI;QACX,CAAC,eAAe,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC;QAC/C,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE;MAC1C,UAAU,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC;KAC7C;IACD,OAAO,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IAC7B,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC;GACjC;;EAED,OAAO,OAAO,CAAC;CAChB;;AAED,SAAS,aAAa,CAAC,KAAK,EAAE;EAC5B,IAAI,EAAE,CAAC;;EAEP,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,IAAI,EAAE,KAAK,IAAI,UAAU;IACvB,KAAK,CAAC,QAAQ,EAAE,CAAC;GAClB,MAAM,IAAI,EAAE,KAAK,IAAI,UAAU;IAC9B,KAAK,CAAC,QAAQ,EAAE,CAAC;IACjB,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,UAAU;MAC3D,KAAK,CAAC,QAAQ,EAAE,CAAC;KAClB;GACF,MAAM;IACL,UAAU,CAAC,KAAK,EAAE,0BAA0B,CAAC,CAAC;GAC/C;;EAED,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC;EAChB,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;CAClC;;AAED,SAAS,mBAAmB,CAAC,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE;EAC9D,IAAI,UAAU,GAAG,CAAC;MACd,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAEhD,OAAO,EAAE,KAAK,CAAC,EAAE;IACf,OAAO,cAAc,CAAC,EAAE,CAAC,EAAE;MACzB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;KAC/C;;IAED,IAAI,aAAa,IAAI,EAAE,KAAK,IAAI,SAAS;MACvC,GAAG;QACD,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;OAC/C,QAAQ,EAAE,KAAK,IAAI,YAAY,EAAE,KAAK,IAAI,YAAY,EAAE,KAAK,CAAC,EAAE;KAClE;;IAED,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE;MACd,aAAa,CAAC,KAAK,CAAC,CAAC;;MAErB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;MAC5C,UAAU,EAAE,CAAC;MACb,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC;;MAErB,OAAO,EAAE,KAAK,IAAI,aAAa;QAC7B,KAAK,CAAC,UAAU,EAAE,CAAC;QACnB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;OAC/C;KACF,MAAM;MACL,MAAM;KACP;GACF;;EAED,IAAI,WAAW,KAAK,CAAC,CAAC,IAAI,UAAU,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,GAAG,WAAW,EAAE;IAC5E,YAAY,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;GAC9C;;EAED,OAAO,UAAU,CAAC;CACnB;;AAED,SAAS,qBAAqB,CAAC,KAAK,EAAE;EACpC,IAAI,SAAS,GAAG,KAAK,CAAC,QAAQ;MAC1B,EAAE,CAAC;;EAEP,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;;;;EAIvC,IAAI,CAAC,EAAE,KAAK,IAAI,WAAW,EAAE,KAAK,IAAI;MAClC,EAAE,KAAK,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,GAAG,CAAC,CAAC;MAC5C,EAAE,KAAK,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE;;IAEhD,SAAS,IAAI,CAAC,CAAC;;IAEf,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;;IAEvC,IAAI,EAAE,KAAK,CAAC,IAAI,YAAY,CAAC,EAAE,CAAC,EAAE;MAChC,OAAO,IAAI,CAAC;KACb;GACF;;EAED,OAAO,KAAK,CAAC;CACd;;AAED,SAAS,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE;EACtC,IAAI,KAAK,KAAK,CAAC,EAAE;IACf,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC;GACrB,MAAM,IAAI,KAAK,GAAG,CAAC,EAAE;IACpB,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;GAChD;CACF;;;AAGD,SAAS,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,oBAAoB,EAAE;EAChE,IAAI,SAAS;MACT,SAAS;MACT,YAAY;MACZ,UAAU;MACV,iBAAiB;MACjB,KAAK;MACL,UAAU;MACV,WAAW;MACX,KAAK,GAAG,KAAK,CAAC,IAAI;MAClB,OAAO,GAAG,KAAK,CAAC,MAAM;MACtB,EAAE,CAAC;;EAEP,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,IAAI,YAAY,CAAC,EAAE,CAAC;MAChB,iBAAiB,CAAC,EAAE,CAAC;MACrB,EAAE,KAAK,IAAI;MACX,EAAE,KAAK,IAAI;MACX,EAAE,KAAK,IAAI;MACX,EAAE,KAAK,IAAI;MACX,EAAE,KAAK,IAAI;MACX,EAAE,KAAK,IAAI;MACX,EAAE,KAAK,IAAI;MACX,EAAE,KAAK,IAAI;MACX,EAAE,KAAK,IAAI;MACX,EAAE,KAAK,IAAI;MACX,EAAE,KAAK,IAAI,SAAS;IACtB,OAAO,KAAK,CAAC;GACd;;EAED,IAAI,EAAE,KAAK,IAAI,WAAW,EAAE,KAAK,IAAI,SAAS;IAC5C,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;;IAEvD,IAAI,YAAY,CAAC,SAAS,CAAC;QACvB,oBAAoB,IAAI,iBAAiB,CAAC,SAAS,CAAC,EAAE;MACxD,OAAO,KAAK,CAAC;KACd;GACF;;EAED,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;EACtB,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;EAClB,YAAY,GAAG,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;EAC3C,iBAAiB,GAAG,KAAK,CAAC;;EAE1B,OAAO,EAAE,KAAK,CAAC,EAAE;IACf,IAAI,EAAE,KAAK,IAAI,SAAS;MACtB,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;;MAEvD,IAAI,YAAY,CAAC,SAAS,CAAC;UACvB,oBAAoB,IAAI,iBAAiB,CAAC,SAAS,CAAC,EAAE;QACxD,MAAM;OACP;;KAEF,MAAM,IAAI,EAAE,KAAK,IAAI,SAAS;MAC7B,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;;MAEvD,IAAI,YAAY,CAAC,SAAS,CAAC,EAAE;QAC3B,MAAM;OACP;;KAEF,MAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,SAAS,IAAI,qBAAqB,CAAC,KAAK,CAAC;eACnE,oBAAoB,IAAI,iBAAiB,CAAC,EAAE,CAAC,EAAE;MACxD,MAAM;;KAEP,MAAM,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE;MACrB,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;MACnB,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC;MAC7B,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC;MAC/B,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;;MAEtC,IAAI,KAAK,CAAC,UAAU,IAAI,UAAU,EAAE;QAClC,iBAAiB,GAAG,IAAI,CAAC;QACzB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC5C,SAAS;OACV,MAAM;QACL,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QAC5B,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;QACnB,KAAK,CAAC,SAAS,GAAG,UAAU,CAAC;QAC7B,KAAK,CAAC,UAAU,GAAG,WAAW,CAAC;QAC/B,MAAM;OACP;KACF;;IAED,IAAI,iBAAiB,EAAE;MACrB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;MACvD,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;MAC5C,YAAY,GAAG,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;MAC3C,iBAAiB,GAAG,KAAK,CAAC;KAC3B;;IAED,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE;MACvB,UAAU,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;KACjC;;IAED,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;GAC/C;;EAED,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;;EAEvD,IAAI,KAAK,CAAC,MAAM,EAAE;IAChB,OAAO,IAAI,CAAC;GACb;;EAED,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC;EACnB,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;EACvB,OAAO,KAAK,CAAC;CACd;;AAED,SAAS,sBAAsB,CAAC,KAAK,EAAE,UAAU,EAAE;EACjD,IAAI,EAAE;MACF,YAAY,EAAE,UAAU,CAAC;;EAE7B,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,IAAI,EAAE,KAAK,IAAI,SAAS;IACtB,OAAO,KAAK,CAAC;GACd;;EAED,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;EACtB,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;EAClB,KAAK,CAAC,QAAQ,EAAE,CAAC;EACjB,YAAY,GAAG,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;;EAE3C,OAAO,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;IAC1D,IAAI,EAAE,KAAK,IAAI,SAAS;MACtB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;MAC1D,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;MAE9C,IAAI,EAAE,KAAK,IAAI,SAAS;QACtB,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC9B,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;OAC7B,MAAM;QACL,OAAO,IAAI,CAAC;OACb;;KAEF,MAAM,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE;MACrB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;MACtD,gBAAgB,CAAC,KAAK,EAAE,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;MACvE,YAAY,GAAG,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;;KAE5C,MAAM,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,SAAS,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE;MAC7E,UAAU,CAAC,KAAK,EAAE,8DAA8D,CAAC,CAAC;;KAEnF,MAAM;MACL,KAAK,CAAC,QAAQ,EAAE,CAAC;MACjB,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;KAC7B;GACF;;EAED,UAAU,CAAC,KAAK,EAAE,4DAA4D,CAAC,CAAC;CACjF;;AAED,SAAS,sBAAsB,CAAC,KAAK,EAAE,UAAU,EAAE;EACjD,IAAI,YAAY;MACZ,UAAU;MACV,SAAS;MACT,SAAS;MACT,GAAG;MACH,EAAE,CAAC;;EAEP,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,IAAI,EAAE,KAAK,IAAI,SAAS;IACtB,OAAO,KAAK,CAAC;GACd;;EAED,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;EACtB,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;EAClB,KAAK,CAAC,QAAQ,EAAE,CAAC;EACjB,YAAY,GAAG,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;;EAE3C,OAAO,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;IAC1D,IAAI,EAAE,KAAK,IAAI,SAAS;MACtB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;MAC1D,KAAK,CAAC,QAAQ,EAAE,CAAC;MACjB,OAAO,IAAI,CAAC;;KAEb,MAAM,IAAI,EAAE,KAAK,IAAI,SAAS;MAC7B,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;MAC1D,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;MAE9C,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE;QACd,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;;;OAG/C,MAAM,IAAI,EAAE,GAAG,GAAG,IAAI,iBAAiB,CAAC,EAAE,CAAC,EAAE;QAC5C,KAAK,CAAC,MAAM,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC;QACpC,KAAK,CAAC,QAAQ,EAAE,CAAC;;OAElB,MAAM,IAAI,CAAC,GAAG,GAAG,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;QACxC,SAAS,GAAG,GAAG,CAAC;QAChB,SAAS,GAAG,CAAC,CAAC;;QAEd,OAAO,SAAS,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE;UACjC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;UAE9C,IAAI,CAAC,GAAG,GAAG,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;YAChC,SAAS,GAAG,CAAC,SAAS,IAAI,CAAC,IAAI,GAAG,CAAC;;WAEpC,MAAM;YACL,UAAU,CAAC,KAAK,EAAE,gCAAgC,CAAC,CAAC;WACrD;SACF;;QAED,KAAK,CAAC,MAAM,IAAI,iBAAiB,CAAC,SAAS,CAAC,CAAC;;QAE7C,KAAK,CAAC,QAAQ,EAAE,CAAC;;OAElB,MAAM;QACL,UAAU,CAAC,KAAK,EAAE,yBAAyB,CAAC,CAAC;OAC9C;;MAED,YAAY,GAAG,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;;KAE5C,MAAM,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE;MACrB,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;MACtD,gBAAgB,CAAC,KAAK,EAAE,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;MACvE,YAAY,GAAG,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;;KAE5C,MAAM,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,SAAS,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE;MAC7E,UAAU,CAAC,KAAK,EAAE,8DAA8D,CAAC,CAAC;;KAEnF,MAAM;MACL,KAAK,CAAC,QAAQ,EAAE,CAAC;MACjB,UAAU,GAAG,KAAK,CAAC,QAAQ,CAAC;KAC7B;GACF;;EAED,UAAU,CAAC,KAAK,EAAE,4DAA4D,CAAC,CAAC;CACjF;;AAED,SAAS,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE;EAC7C,IAAI,QAAQ,GAAG,IAAI;MACf,KAAK;MACL,IAAI,OAAO,KAAK,CAAC,GAAG;MACpB,OAAO;MACP,OAAO,IAAI,KAAK,CAAC,MAAM;MACvB,SAAS;MACT,UAAU;MACV,MAAM;MACN,cAAc;MACd,SAAS;MACT,eAAe,GAAG,EAAE;MACpB,OAAO;MACP,MAAM;MACN,SAAS;MACT,EAAE,CAAC;;EAEP,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,IAAI,EAAE,KAAK,IAAI,SAAS;IACtB,UAAU,GAAG,IAAI,CAAC;IAClB,SAAS,GAAG,KAAK,CAAC;IAClB,OAAO,GAAG,EAAE,CAAC;GACd,MAAM,IAAI,EAAE,KAAK,IAAI,SAAS;IAC7B,UAAU,GAAG,IAAI,CAAC;IAClB,SAAS,GAAG,IAAI,CAAC;IACjB,OAAO,GAAG,EAAE,CAAC;GACd,MAAM;IACL,OAAO,KAAK,CAAC;GACd;;EAED,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE;IACzB,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC;GACzC;;EAED,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE9C,OAAO,EAAE,KAAK,CAAC,EAAE;IACf,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;;IAE7C,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;IAE5C,IAAI,EAAE,KAAK,UAAU,EAAE;MACrB,KAAK,CAAC,QAAQ,EAAE,CAAC;MACjB,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;MACjB,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;MACvB,KAAK,CAAC,IAAI,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;MAChD,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;MACvB,OAAO,IAAI,CAAC;KACb,MAAM,IAAI,CAAC,QAAQ,EAAE;MACpB,UAAU,CAAC,KAAK,EAAE,8CAA8C,CAAC,CAAC;KACnE;;IAED,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;IACpC,MAAM,GAAG,cAAc,GAAG,KAAK,CAAC;;IAEhC,IAAI,EAAE,KAAK,IAAI,SAAS;MACtB,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;;MAEvD,IAAI,YAAY,CAAC,SAAS,CAAC,EAAE;QAC3B,MAAM,GAAG,cAAc,GAAG,IAAI,CAAC;QAC/B,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;OAC9C;KACF;;IAED,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;IACnB,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC7D,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC;IACnB,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC;IACvB,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;;IAE7C,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;IAE5C,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,KAAK,EAAE,KAAK,IAAI,SAAS;MAClE,MAAM,GAAG,IAAI,CAAC;MACd,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;MAC9C,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;MAC7C,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;MAC7D,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;KAC1B;;IAED,IAAI,SAAS,EAAE;MACb,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;KAC/E,MAAM,IAAI,MAAM,EAAE;MACjB,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;KAC1F,MAAM;MACL,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACvB;;IAED,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;;IAE7C,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;IAE5C,IAAI,EAAE,KAAK,IAAI,SAAS;MACtB,QAAQ,GAAG,IAAI,CAAC;MAChB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;KAC/C,MAAM;MACL,QAAQ,GAAG,KAAK,CAAC;KAClB;GACF;;EAED,UAAU,CAAC,KAAK,EAAE,uDAAuD,CAAC,CAAC;CAC5E;;AAED,SAAS,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE;EAC1C,IAAI,YAAY;MACZ,OAAO;MACP,QAAQ,SAAS,aAAa;MAC9B,cAAc,GAAG,KAAK;MACtB,cAAc,GAAG,KAAK;MACtB,UAAU,OAAO,UAAU;MAC3B,UAAU,OAAO,CAAC;MAClB,cAAc,GAAG,KAAK;MACtB,GAAG;MACH,EAAE,CAAC;;EAEP,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,IAAI,EAAE,KAAK,IAAI,SAAS;IACtB,OAAO,GAAG,KAAK,CAAC;GACjB,MAAM,IAAI,EAAE,KAAK,IAAI,SAAS;IAC7B,OAAO,GAAG,IAAI,CAAC;GAChB,MAAM;IACL,OAAO,KAAK,CAAC;GACd;;EAED,KAAK,CAAC,IAAI,GAAG,QAAQ,CAAC;EACtB,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;;EAElB,OAAO,EAAE,KAAK,CAAC,EAAE;IACf,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;IAE9C,IAAI,EAAE,KAAK,IAAI,WAAW,EAAE,KAAK,IAAI,SAAS;MAC5C,IAAI,aAAa,KAAK,QAAQ,EAAE;QAC9B,QAAQ,GAAG,CAAC,EAAE,KAAK,IAAI,WAAW,aAAa,GAAG,cAAc,CAAC;OAClE,MAAM;QACL,UAAU,CAAC,KAAK,EAAE,sCAAsC,CAAC,CAAC;OAC3D;;KAEF,MAAM,IAAI,CAAC,GAAG,GAAG,eAAe,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;MAC3C,IAAI,GAAG,KAAK,CAAC,EAAE;QACb,UAAU,CAAC,KAAK,EAAE,8EAA8E,CAAC,CAAC;OACnG,MAAM,IAAI,CAAC,cAAc,EAAE;QAC1B,UAAU,GAAG,UAAU,GAAG,GAAG,GAAG,CAAC,CAAC;QAClC,cAAc,GAAG,IAAI,CAAC;OACvB,MAAM;QACL,UAAU,CAAC,KAAK,EAAE,2CAA2C,CAAC,CAAC;OAChE;;KAEF,MAAM;MACL,MAAM;KACP;GACF;;EAED,IAAI,cAAc,CAAC,EAAE,CAAC,EAAE;IACtB,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE;WAC9C,cAAc,CAAC,EAAE,CAAC,EAAE;;IAE3B,IAAI,EAAE,KAAK,IAAI,SAAS;MACtB,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE;aAC9C,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE;KACnC;GACF;;EAED,OAAO,EAAE,KAAK,CAAC,EAAE;IACf,aAAa,CAAC,KAAK,CAAC,CAAC;IACrB,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC;;IAErB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;IAE5C,OAAO,CAAC,CAAC,cAAc,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU;YAChD,EAAE,KAAK,IAAI,YAAY,EAAE;MAC/B,KAAK,CAAC,UAAU,EAAE,CAAC;MACnB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;KAC/C;;IAED,IAAI,CAAC,cAAc,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU,EAAE;MACpD,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;KAC/B;;IAED,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE;MACd,UAAU,EAAE,CAAC;MACb,SAAS;KACV;;;IAGD,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU,EAAE;;;MAGjC,IAAI,QAAQ,KAAK,aAAa,EAAE;QAC9B,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,GAAG,CAAC,GAAG,UAAU,GAAG,UAAU,CAAC,CAAC;OACnF,MAAM,IAAI,QAAQ,KAAK,aAAa,EAAE;QACrC,IAAI,cAAc,EAAE;UAClB,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC;SACtB;OACF;;;MAGD,MAAM;KACP;;;IAGD,IAAI,OAAO,EAAE;;;MAGX,IAAI,cAAc,CAAC,EAAE,CAAC,EAAE;QACtB,cAAc,GAAG,IAAI,CAAC;;QAEtB,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,GAAG,CAAC,GAAG,UAAU,GAAG,UAAU,CAAC,CAAC;;;OAGnF,MAAM,IAAI,cAAc,EAAE;QACzB,cAAc,GAAG,KAAK,CAAC;QACvB,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC;;;OAGrD,MAAM,IAAI,UAAU,KAAK,CAAC,EAAE;QAC3B,IAAI,cAAc,EAAE;UAClB,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC;SACrB;;;OAGF,MAAM;QACL,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;OACjD;;;KAGF,MAAM;;MAEL,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,GAAG,CAAC,GAAG,UAAU,GAAG,UAAU,CAAC,CAAC;KACnF;;IAED,cAAc,GAAG,IAAI,CAAC;IACtB,cAAc,GAAG,IAAI,CAAC;IACtB,UAAU,GAAG,CAAC,CAAC;IACf,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC;;IAE9B,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE;MAChC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;KAC/C;;IAED,cAAc,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;GAC5D;;EAED,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,iBAAiB,CAAC,KAAK,EAAE,UAAU,EAAE;EAC5C,IAAI,KAAK;MACL,IAAI,QAAQ,KAAK,CAAC,GAAG;MACrB,OAAO,KAAK,KAAK,CAAC,MAAM;MACxB,OAAO,KAAK,EAAE;MACd,SAAS;MACT,QAAQ,IAAI,KAAK;MACjB,EAAE,CAAC;;EAEP,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE;IACzB,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC;GACzC;;EAED,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,OAAO,EAAE,KAAK,CAAC,EAAE;;IAEf,IAAI,EAAE,KAAK,IAAI,SAAS;MACtB,MAAM;KACP;;IAED,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;;IAEvD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,EAAE;MAC5B,MAAM;KACP;;IAED,QAAQ,GAAG,IAAI,CAAC;IAChB,KAAK,CAAC,QAAQ,EAAE,CAAC;;IAEjB,IAAI,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;MACxC,IAAI,KAAK,CAAC,UAAU,IAAI,UAAU,EAAE;QAClC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC5C,SAAS;OACV;KACF;;IAED,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;IACnB,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;IAC9D,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3B,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;;IAErC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;IAE5C,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE;MACzE,UAAU,CAAC,KAAK,EAAE,qCAAqC,CAAC,CAAC;KAC1D,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU,EAAE;MACxC,MAAM;KACP;GACF;;EAED,IAAI,QAAQ,EAAE;IACZ,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;IACjB,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;IACvB,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC;IACxB,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;IACvB,OAAO,IAAI,CAAC;GACb;EACD,OAAO,KAAK,CAAC;CACd;;AAED,SAAS,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE;EACvD,IAAI,SAAS;MACT,YAAY;MACZ,KAAK;MACL,IAAI,YAAY,KAAK,CAAC,GAAG;MACzB,OAAO,SAAS,KAAK,CAAC,MAAM;MAC5B,OAAO,SAAS,EAAE;MAClB,eAAe,GAAG,EAAE;MACpB,MAAM,UAAU,IAAI;MACpB,OAAO,SAAS,IAAI;MACpB,SAAS,OAAO,IAAI;MACpB,aAAa,GAAG,KAAK;MACrB,QAAQ,QAAQ,KAAK;MACrB,EAAE,CAAC;;EAEP,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE;IACzB,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC;GACzC;;EAED,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,OAAO,EAAE,KAAK,CAAC,EAAE;IACf,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;IACvD,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;;;;;;IAMnB,IAAI,CAAC,EAAE,KAAK,IAAI,WAAW,EAAE,KAAK,IAAI,YAAY,YAAY,CAAC,SAAS,CAAC,EAAE;;MAEzE,IAAI,EAAE,KAAK,IAAI,SAAS;QACtB,IAAI,aAAa,EAAE;UACjB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;UACzE,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;SACrC;;QAED,QAAQ,GAAG,IAAI,CAAC;QAChB,aAAa,GAAG,IAAI,CAAC;QACrB,YAAY,GAAG,IAAI,CAAC;;OAErB,MAAM,IAAI,aAAa,EAAE;;QAExB,aAAa,GAAG,KAAK,CAAC;QACtB,YAAY,GAAG,IAAI,CAAC;;OAErB,MAAM;QACL,UAAU,CAAC,KAAK,EAAE,wDAAwD,CAAC,CAAC;OAC7E;;MAED,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;MACpB,EAAE,GAAG,SAAS,CAAC;;;;;KAKhB,MAAM,IAAI,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE;;MAExE,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE;QACxB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;QAE5C,OAAO,cAAc,CAAC,EAAE,CAAC,EAAE;UACzB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;SAC/C;;QAED,IAAI,EAAE,KAAK,IAAI,SAAS;UACtB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;UAE9C,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE;YACrB,UAAU,CAAC,KAAK,EAAE,yFAAyF,CAAC,CAAC;WAC9G;;UAED,IAAI,aAAa,EAAE;YACjB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;YACzE,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;WACrC;;UAED,QAAQ,GAAG,IAAI,CAAC;UAChB,aAAa,GAAG,KAAK,CAAC;UACtB,YAAY,GAAG,KAAK,CAAC;UACrB,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC;UACnB,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC;;SAExB,MAAM,IAAI,QAAQ,EAAE;UACnB,UAAU,CAAC,KAAK,EAAE,0DAA0D,CAAC,CAAC;;SAE/E,MAAM;UACL,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;UACjB,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;UACvB,OAAO,IAAI,CAAC;SACb;;OAEF,MAAM,IAAI,QAAQ,EAAE;QACnB,UAAU,CAAC,KAAK,EAAE,gFAAgF,CAAC,CAAC;;OAErG,MAAM;QACL,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;QACjB,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;QACvB,OAAO,IAAI,CAAC;OACb;;KAEF,MAAM;MACL,MAAM;KACP;;;;;IAKD,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU,EAAE;MACzD,IAAI,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,IAAI,EAAE,YAAY,CAAC,EAAE;QACzE,IAAI,aAAa,EAAE;UACjB,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC;SACxB,MAAM;UACL,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;SAC1B;OACF;;MAED,IAAI,CAAC,aAAa,EAAE;QAClB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAC9E,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,IAAI,CAAC;OACrC;;MAED,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;MACrC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;KAC7C;;IAED,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE;MAC/C,UAAU,CAAC,KAAK,EAAE,oCAAoC,CAAC,CAAC;KACzD,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,UAAU,EAAE;MACxC,MAAM;KACP;GACF;;;;;;;EAOD,IAAI,aAAa,EAAE;IACjB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;GAC1E;;;EAGD,IAAI,QAAQ,EAAE;IACZ,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;IACjB,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;IACvB,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC;IACvB,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC;GACxB;;EAED,OAAO,QAAQ,CAAC;CACjB;;AAED,SAAS,eAAe,CAAC,KAAK,EAAE;EAC9B,IAAI,SAAS;MACT,UAAU,GAAG,KAAK;MAClB,OAAO,MAAM,KAAK;MAClB,SAAS;MACT,OAAO;MACP,EAAE,CAAC;;EAEP,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,IAAI,EAAE,KAAK,IAAI,SAAS,EAAA,OAAO,KAAK,CAAC,EAAA;;EAErC,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,EAAE;IACtB,UAAU,CAAC,KAAK,EAAE,+BAA+B,CAAC,CAAC;GACpD;;EAED,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE9C,IAAI,EAAE,KAAK,IAAI,SAAS;IACtB,UAAU,GAAG,IAAI,CAAC;IAClB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;GAE/C,MAAM,IAAI,EAAE,KAAK,IAAI,SAAS;IAC7B,OAAO,GAAG,IAAI,CAAC;IACf,SAAS,GAAG,IAAI,CAAC;IACjB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;GAE/C,MAAM;IACL,SAAS,GAAG,GAAG,CAAC;GACjB;;EAED,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;;EAE3B,IAAI,UAAU,EAAE;IACd,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE;WAC9C,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,IAAI,SAAS;;IAEvC,IAAI,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE;MACjC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;MACvD,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;KAC/C,MAAM;MACL,UAAU,CAAC,KAAK,EAAE,oDAAoD,CAAC,CAAC;KACzE;GACF,MAAM;IACL,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE;;MAEpC,IAAI,EAAE,KAAK,IAAI,SAAS;QACtB,IAAI,CAAC,OAAO,EAAE;UACZ,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;;UAEjE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACvC,UAAU,CAAC,KAAK,EAAE,iDAAiD,CAAC,CAAC;WACtE;;UAED,OAAO,GAAG,IAAI,CAAC;UACf,SAAS,GAAG,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;SAChC,MAAM;UACL,UAAU,CAAC,KAAK,EAAE,6CAA6C,CAAC,CAAC;SAClE;OACF;;MAED,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;KAC/C;;IAED,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;IAEvD,IAAI,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;MACzC,UAAU,CAAC,KAAK,EAAE,qDAAqD,CAAC,CAAC;KAC1E;GACF;;EAED,IAAI,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;IAC7C,UAAU,CAAC,KAAK,EAAE,2CAA2C,GAAG,OAAO,CAAC,CAAC;GAC1E;;EAED,IAAI,UAAU,EAAE;IACd,KAAK,CAAC,GAAG,GAAG,OAAO,CAAC;;GAErB,MAAM,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE;IACxD,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;;GAE/C,MAAM,IAAI,SAAS,KAAK,GAAG,EAAE;IAC5B,KAAK,CAAC,GAAG,GAAG,GAAG,GAAG,OAAO,CAAC;;GAE3B,MAAM,IAAI,SAAS,KAAK,IAAI,EAAE;IAC7B,KAAK,CAAC,GAAG,GAAG,oBAAoB,GAAG,OAAO,CAAC;;GAE5C,MAAM;IACL,UAAU,CAAC,KAAK,EAAE,yBAAyB,GAAG,SAAS,GAAG,GAAG,CAAC,CAAC;GAChE;;EAED,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,kBAAkB,CAAC,KAAK,EAAE;EACjC,IAAI,SAAS;MACT,EAAE,CAAC;;EAEP,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,IAAI,EAAE,KAAK,IAAI,SAAS,EAAA,OAAO,KAAK,CAAC,EAAA;;EAErC,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE;IACzB,UAAU,CAAC,KAAK,EAAE,mCAAmC,CAAC,CAAC;GACxD;;EAED,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;EAC9C,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;;EAE3B,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE;IAC9D,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;GAC/C;;EAED,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE;IAChC,UAAU,CAAC,KAAK,EAAE,4DAA4D,CAAC,CAAC;GACjF;;EAED,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;EAC5D,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,SAAS,CAAC,KAAK,EAAE;EACxB,IAAI,SAAS,EAAE,KAAK;MAChB,EAAE,CAAC;;EAEP,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAE5C,IAAI,EAAE,KAAK,IAAI,SAAS,EAAA,OAAO,KAAK,CAAC,EAAA;;EAErC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;EAC9C,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;;EAE3B,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE;IAC9D,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;GAC/C;;EAED,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE;IAChC,UAAU,CAAC,KAAK,EAAE,2DAA2D,CAAC,CAAC;GAChF;;EAED,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;;EAErD,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;IAC1C,UAAU,CAAC,KAAK,EAAE,sBAAsB,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC;GACzD;;EAED,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;EACtC,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;EACrC,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE;EAChF,IAAI,gBAAgB;MAChB,iBAAiB;MACjB,qBAAqB;MACrB,YAAY,GAAG,CAAC;MAChB,SAAS,IAAI,KAAK;MAClB,UAAU,GAAG,KAAK;MAClB,SAAS;MACT,YAAY;MACZ,IAAI;MACJ,UAAU;MACV,WAAW,CAAC;;EAEhB,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE;IAC3B,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;GAC/B;;EAED,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC;EACpB,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;EACpB,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;EACpB,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;;EAEpB,gBAAgB,GAAG,iBAAiB,GAAG,qBAAqB;IAC1D,iBAAiB,KAAK,WAAW;IACjC,gBAAgB,MAAM,WAAW,CAAC;;EAEpC,IAAI,WAAW,EAAE;IACf,IAAI,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;MACxC,SAAS,GAAG,IAAI,CAAC;;MAEjB,IAAI,KAAK,CAAC,UAAU,GAAG,YAAY,EAAE;QACnC,YAAY,GAAG,CAAC,CAAC;OAClB,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,YAAY,EAAE;QAC5C,YAAY,GAAG,CAAC,CAAC;OAClB,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,YAAY,EAAE;QAC1C,YAAY,GAAG,CAAC,CAAC,CAAC;OACnB;KACF;GACF;;EAED,IAAI,YAAY,KAAK,CAAC,EAAE;IACtB,OAAO,eAAe,CAAC,KAAK,CAAC,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE;MAC1D,IAAI,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE;QACxC,SAAS,GAAG,IAAI,CAAC;QACjB,qBAAqB,GAAG,gBAAgB,CAAC;;QAEzC,IAAI,KAAK,CAAC,UAAU,GAAG,YAAY,EAAE;UACnC,YAAY,GAAG,CAAC,CAAC;SAClB,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,YAAY,EAAE;UAC5C,YAAY,GAAG,CAAC,CAAC;SAClB,MAAM,IAAI,KAAK,CAAC,UAAU,GAAG,YAAY,EAAE;UAC1C,YAAY,GAAG,CAAC,CAAC,CAAC;SACnB;OACF,MAAM;QACL,qBAAqB,GAAG,KAAK,CAAC;OAC/B;KACF;GACF;;EAED,IAAI,qBAAqB,EAAE;IACzB,qBAAqB,GAAG,SAAS,IAAI,YAAY,CAAC;GACnD;;EAED,IAAI,YAAY,KAAK,CAAC,IAAI,iBAAiB,KAAK,WAAW,EAAE;IAC3D,IAAI,eAAe,KAAK,WAAW,IAAI,gBAAgB,KAAK,WAAW,EAAE;MACvE,UAAU,GAAG,YAAY,CAAC;KAC3B,MAAM;MACL,UAAU,GAAG,YAAY,GAAG,CAAC,CAAC;KAC/B;;IAED,WAAW,GAAG,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC;;IAE/C,IAAI,YAAY,KAAK,CAAC,EAAE;MACtB,IAAI,qBAAqB;WACpB,iBAAiB,CAAC,KAAK,EAAE,WAAW,CAAC;WACrC,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;UAClD,kBAAkB,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE;QACzC,UAAU,GAAG,IAAI,CAAC;OACnB,MAAM;QACL,IAAI,CAAC,iBAAiB,IAAI,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC;YACxD,sBAAsB,CAAC,KAAK,EAAE,UAAU,CAAC;YACzC,sBAAsB,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE;UAC7C,UAAU,GAAG,IAAI,CAAC;;SAEnB,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE;UAC3B,UAAU,GAAG,IAAI,CAAC;;UAElB,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE;YAC/C,UAAU,CAAC,KAAK,EAAE,2CAA2C,CAAC,CAAC;WAChE;;SAEF,MAAM,IAAI,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,eAAe,KAAK,WAAW,CAAC,EAAE;UAC9E,UAAU,GAAG,IAAI,CAAC;;UAElB,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,EAAE;YACtB,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;WACjB;SACF;;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE;UACzB,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;SAC9C;OACF;KACF,MAAM,IAAI,YAAY,KAAK,CAAC,EAAE;;;MAG7B,UAAU,GAAG,qBAAqB,IAAI,iBAAiB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;KAC7E;GACF;;EAED,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;IAC3C,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;MACrB,KAAK,SAAS,GAAG,CAAC,EAAE,YAAY,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM;WACxD,SAAS,GAAG,YAAY;WACxB,SAAS,IAAI,CAAC,EAAE;QACnB,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;;;;;;QAMtC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;UAC9B,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;UAC5C,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;UACrB,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE;YACzB,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;WAC9C;UACD,MAAM;SACP;OACF;KACF,MAAM,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,UAAU,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE;MACnF,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;MAE1D,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE;QACrD,UAAU,CAAC,KAAK,EAAE,+BAA+B,GAAG,KAAK,CAAC,GAAG,GAAG,uBAAuB,GAAG,IAAI,CAAC,IAAI,GAAG,UAAU,GAAG,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;OACtI;;MAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;QAC/B,UAAU,CAAC,KAAK,EAAE,+BAA+B,GAAG,KAAK,CAAC,GAAG,GAAG,gBAAgB,CAAC,CAAC;OACnF,MAAM;QACL,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,EAAE;UACzB,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;SAC9C;OACF;KACF,MAAM;MACL,UAAU,CAAC,KAAK,EAAE,gBAAgB,GAAG,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;KACvD;GACF;;EAED,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE;IAC3B,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;GAChC;EACD,OAAO,KAAK,CAAC,GAAG,KAAK,IAAI,KAAK,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,UAAU,CAAC;CACnE;;AAED,SAAS,YAAY,CAAC,KAAK,EAAE;EAC3B,IAAI,aAAa,GAAG,KAAK,CAAC,QAAQ;MAC9B,SAAS;MACT,aAAa;MACb,aAAa;MACb,aAAa,GAAG,KAAK;MACrB,EAAE,CAAC;;EAEP,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;EACrB,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC;EACrC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;EAClB,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;;EAErB,OAAO,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;IAC1D,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;;IAErC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;;IAE5C,IAAI,KAAK,CAAC,UAAU,GAAG,CAAC,IAAI,EAAE,KAAK,IAAI,SAAS;MAC9C,MAAM;KACP;;IAED,aAAa,GAAG,IAAI,CAAC;IACrB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC9C,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;;IAE3B,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE;MACpC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;KAC/C;;IAED,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7D,aAAa,GAAG,EAAE,CAAC;;IAEnB,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;MAC5B,UAAU,CAAC,KAAK,EAAE,8DAA8D,CAAC,CAAC;KACnF;;IAED,OAAO,EAAE,KAAK,CAAC,EAAE;MACf,OAAO,cAAc,CAAC,EAAE,CAAC,EAAE;QACzB,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;OAC/C;;MAED,IAAI,EAAE,KAAK,IAAI,SAAS;QACtB,GAAG,EAAE,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE;eAC9C,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE;QAChC,MAAM;OACP;;MAED,IAAI,MAAM,CAAC,EAAE,CAAC,EAAE,EAAA,MAAM,EAAA;;MAEtB,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;;MAE3B,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE;QACpC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;OAC/C;;MAED,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;KAClE;;IAED,IAAI,EAAE,KAAK,CAAC,EAAE,EAAA,aAAa,CAAC,KAAK,CAAC,CAAC,EAAA;;IAEnC,IAAI,eAAe,CAAC,IAAI,CAAC,iBAAiB,EAAE,aAAa,CAAC,EAAE;MAC1D,iBAAiB,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;KACvE,MAAM;MACL,YAAY,CAAC,KAAK,EAAE,8BAA8B,GAAG,aAAa,GAAG,GAAG,CAAC,CAAC;KAC3E;GACF;;EAED,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;;EAErC,IAAI,KAAK,CAAC,UAAU,KAAK,CAAC;MACtB,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,IAAI;MACnD,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,IAAI;MACnD,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,IAAI,SAAS;IAC9D,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;IACpB,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;;GAEtC,MAAM,IAAI,aAAa,EAAE;IACxB,UAAU,CAAC,KAAK,EAAE,iCAAiC,CAAC,CAAC;GACtD;;EAED,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,UAAU,GAAG,CAAC,EAAE,iBAAiB,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;EACzE,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;;EAErC,IAAI,KAAK,CAAC,eAAe;MACrB,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE;IACxF,YAAY,CAAC,KAAK,EAAE,kDAAkD,CAAC,CAAC;GACzE;;EAED,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;;EAEnC,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,SAAS,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE;;IAEtE,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,SAAS;MAC1D,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;MACpB,mBAAmB,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;KACtC;IACD,OAAO;GACR;;EAED,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;IACvC,UAAU,CAAC,KAAK,EAAE,uDAAuD,CAAC,CAAC;GAC5E,MAAM;IACL,OAAO;GACR;CACF;;;AAGD,SAAS,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE;EACrC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;EACtB,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;;EAExB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;;;IAGtB,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI;QAC3C,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,UAAU;MACvD,KAAK,IAAI,IAAI,CAAC;KACf;;;IAGD,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE;MAClC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KACxB;GACF;;EAED,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;;;EAGtC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC;;EAEpB,OAAO,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,IAAI,aAAa;IACjE,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC;IACtB,KAAK,CAAC,QAAQ,IAAI,CAAC,CAAC;GACrB;;EAED,OAAO,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;IAC1C,YAAY,CAAC,KAAK,CAAC,CAAC;GACrB;;EAED,OAAO,KAAK,CAAC,SAAS,CAAC;CACxB;;;AAGD,SAASsB,SAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE;EACzC,IAAI,SAAS,GAAG,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC;;EAE7D,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IACrE,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;GAC5B;CACF;;;AAGD,SAASC,MAAI,CAAC,KAAK,EAAE,OAAO,EAAE;EAC5B,IAAI,SAAS,GAAG,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;;EAE9C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;;IAE1B,OAAO,SAAS,CAAC;GAClB,MAAM,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;IACjC,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;GACrB;EACD,MAAM,IAAIvB,eAAa,CAAC,0DAA0D,CAAC,CAAC;CACrF;;;AAGD,SAASwB,aAAW,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;EAC3CF,SAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAEF,qBAAmB,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;CACjF;;;AAGD,SAASK,UAAQ,CAAC,KAAK,EAAE,OAAO,EAAE;EAChC,OAAOF,MAAI,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAEH,qBAAmB,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;CAC7E;;;AAGD,gBAA6BE,SAAO,CAAC;AACrC,aAA6BC,MAAI,CAAC;AAClC,oBAA6BC,aAAW,CAAC;AACzC,iBAA6BC,UAAQ,CAAC;;;;;;;;;;;AC9iDtC,IAAIxB,QAAM,gBAAgBC,QAAmB,CAAC;AAC9C,IAAIF,eAAa,SAASM,SAAsB,CAAC;AACjD,IAAIe,qBAAmB,GAAGd,YAAgC,CAAC;AAC3D,IAAIa,qBAAmB,GAAGT,YAAgC,CAAC;;AAE3D,IAAIK,WAAS,SAAS,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;AAChD,IAAID,iBAAe,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;;AAEtD,IAAI,QAAQ,oBAAoB,IAAI,CAAC;AACrC,IAAI,cAAc,cAAc,IAAI,CAAC;AACrC,IAAI,UAAU,kBAAkB,IAAI,CAAC;AACrC,IAAI,gBAAgB,YAAY,IAAI,CAAC;AACrC,IAAI,iBAAiB,WAAW,IAAI,CAAC;AACrC,IAAI,UAAU,kBAAkB,IAAI,CAAC;AACrC,IAAI,YAAY,gBAAgB,IAAI,CAAC;AACrC,IAAI,cAAc,cAAc,IAAI,CAAC;AACrC,IAAI,iBAAiB,WAAW,IAAI,CAAC;AACrC,IAAI,aAAa,eAAe,IAAI,CAAC;AACrC,IAAI,UAAU,kBAAkB,IAAI,CAAC;AACrC,IAAI,UAAU,kBAAkB,IAAI,CAAC;AACrC,IAAI,UAAU,kBAAkB,IAAI,CAAC;AACrC,IAAI,iBAAiB,WAAW,IAAI,CAAC;AACrC,IAAI,aAAa,eAAe,IAAI,CAAC;AACrC,IAAI,kBAAkB,UAAU,IAAI,CAAC;AACrC,IAAI,wBAAwB,IAAI,IAAI,CAAC;AACrC,IAAI,yBAAyB,GAAG,IAAI,CAAC;AACrC,IAAI,iBAAiB,WAAW,IAAI,CAAC;AACrC,IAAI,uBAAuB,KAAK,IAAI,CAAC;AACrC,IAAI,kBAAkB,UAAU,IAAI,CAAC;AACrC,IAAI,wBAAwB,IAAI,IAAI,CAAC;;AAErC,IAAI,gBAAgB,GAAG,EAAE,CAAC;;AAE1B,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC;AAClC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC;AACjC,gBAAgB,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;AACjC,gBAAgB,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;;AAEjC,IAAI,0BAA0B,GAAG;EAC/B,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI;EAC/C,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;CAChD,CAAC;;AAEF,SAAS,eAAe,CAAC,MAAM,EAAE,GAAG,EAAE;EACpC,IAAI,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC;;EAElD,IAAI,GAAG,KAAK,IAAI,EAAE,EAAA,OAAO,EAAE,CAAC,EAAA;;EAE5B,MAAM,GAAG,EAAE,CAAC;EACZ,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;EAExB,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IAChE,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAClB,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;;IAEzB,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE;MAC5B,GAAG,GAAG,oBAAoB,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;KAC3C;IACD,IAAI,GAAG,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC;;IAE/C,IAAI,IAAI,IAAIA,iBAAe,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE;MAC1D,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;KAClC;;IAED,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;GACrB;;EAED,OAAO,MAAM,CAAC;CACf;;AAED,SAAS,SAAS,CAAC,SAAS,EAAE;EAC5B,IAAI,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;;EAE3B,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;;EAE9C,IAAI,SAAS,IAAI,IAAI,EAAE;IACrB,MAAM,GAAG,GAAG,CAAC;IACb,MAAM,GAAG,CAAC,CAAC;GACZ,MAAM,IAAI,SAAS,IAAI,MAAM,EAAE;IAC9B,MAAM,GAAG,GAAG,CAAC;IACb,MAAM,GAAG,CAAC,CAAC;GACZ,MAAM,IAAI,SAAS,IAAI,UAAU,EAAE;IAClC,MAAM,GAAG,GAAG,CAAC;IACb,MAAM,GAAG,CAAC,CAAC;GACZ,MAAM;IACL,MAAM,IAAIf,eAAa,CAAC,+DAA+D,CAAC,CAAC;GAC1F;;EAED,OAAO,IAAI,GAAG,MAAM,GAAGC,QAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;CAC5E;;AAED,SAASyB,OAAK,CAAC,OAAO,EAAE;EACtB,IAAI,CAAC,MAAM,SAAS,OAAO,CAAC,QAAQ,CAAC,IAAIL,qBAAmB,CAAC;EAC7D,IAAI,CAAC,MAAM,SAAS,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;EAC1D,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC;EACpD,IAAI,CAAC,SAAS,OAAOpB,QAAM,CAAC,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;EACzF,IAAI,CAAC,QAAQ,OAAO,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC;EAC5E,IAAI,CAAC,QAAQ,OAAO,OAAO,CAAC,UAAU,CAAC,IAAI,KAAK,CAAC;EACjD,IAAI,CAAC,SAAS,MAAM,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;EAC/C,IAAI,CAAC,MAAM,SAAS,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC;EAC/C,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,KAAK,CAAC;;EAErD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;EAClD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;;EAElD,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;EAChB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;;EAEjB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;EACrB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;CAC5B;;;AAGD,SAAS,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE;EACpC,IAAI,GAAG,GAAGA,QAAM,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC;MAChC,QAAQ,GAAG,CAAC;MACZ,IAAI,GAAG,CAAC,CAAC;MACT,MAAM,GAAG,EAAE;MACX,IAAI;MACJ,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;;EAE3B,OAAO,QAAQ,GAAG,MAAM,EAAE;IACxB,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACtC,IAAI,IAAI,KAAK,CAAC,CAAC,EAAE;MACf,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;MAC9B,QAAQ,GAAG,MAAM,CAAC;KACnB,MAAM;MACL,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;MACxC,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC;KACrB;;IAED,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,KAAK,IAAI,EAAE,EAAA,MAAM,IAAI,GAAG,CAAC,EAAA;;IAEhD,MAAM,IAAI,IAAI,CAAC;GAChB;;EAED,OAAO,MAAM,CAAC;CACf;;AAED,SAAS,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE;EACtC,OAAO,IAAI,GAAGA,QAAM,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;CACxD;;AAED,SAAS,qBAAqB,CAAC,KAAK,EAAE,GAAG,EAAE;EACzC,IAAI,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC;;EAExB,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IAC/E,IAAI,GAAG,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;;IAElC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;MACrB,OAAO,IAAI,CAAC;KACb;GACF;;EAED,OAAO,KAAK,CAAC;CACd;;;AAGD,SAAS,YAAY,CAAC,CAAC,EAAE;EACvB,OAAO,CAAC,KAAK,UAAU,IAAI,CAAC,KAAK,QAAQ,CAAC;CAC3C;;;;;;AAMD,SAAS,WAAW,CAAC,CAAC,EAAE;EACtB,QAAQ,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ;UAC9B,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,KAAK,CAAC,KAAK,MAAM,IAAI,CAAC,KAAK,MAAM,CAAC;UAChE,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,KAAK,CAAC,KAAK,MAAM,WAAW;WACzD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,CAAC;CACzC;;;AAGD,SAAS,WAAW,CAAC,CAAC,EAAE;;;EAGtB,OAAO,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,MAAM;;OAEhC,CAAC,KAAK,UAAU;OAChB,CAAC,KAAK,wBAAwB;OAC9B,CAAC,KAAK,yBAAyB;OAC/B,CAAC,KAAK,uBAAuB;OAC7B,CAAC,KAAK,wBAAwB;;OAE9B,CAAC,KAAK,UAAU;OAChB,CAAC,KAAK,UAAU,CAAC;CACvB;;;AAGD,SAAS,gBAAgB,CAAC,CAAC,EAAE;;;EAG3B,OAAO,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,MAAM;OAChC,CAAC,YAAY,CAAC,CAAC,CAAC;;;OAGhB,CAAC,KAAK,UAAU;OAChB,CAAC,KAAK,aAAa;OACnB,CAAC,KAAK,UAAU;OAChB,CAAC,KAAK,UAAU;OAChB,CAAC,KAAK,wBAAwB;OAC9B,CAAC,KAAK,yBAAyB;OAC/B,CAAC,KAAK,uBAAuB;OAC7B,CAAC,KAAK,wBAAwB;;OAE9B,CAAC,KAAK,UAAU;OAChB,CAAC,KAAK,cAAc;OACpB,CAAC,KAAK,aAAa;OACnB,CAAC,KAAK,gBAAgB;OACtB,CAAC,KAAK,kBAAkB;OACxB,CAAC,KAAK,iBAAiB;OACvB,CAAC,KAAK,iBAAiB;OACvB,CAAC,KAAK,iBAAiB;;OAEvB,CAAC,KAAK,YAAY;OAClB,CAAC,KAAK,kBAAkB;OACxB,CAAC,KAAK,iBAAiB,CAAC;CAC9B;;AAED,IAAI,WAAW,KAAK,CAAC;IACjB,YAAY,IAAI,CAAC;IACjB,aAAa,GAAG,CAAC;IACjB,YAAY,IAAI,CAAC;IACjB,YAAY,IAAI,CAAC,CAAC;;;;;;;;;AAStB,SAAS,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,SAAS,EAAE,iBAAiB,EAAE;EAC/F,IAAI,CAAC,CAAC;EACN,IAAI,IAAI,CAAC;EACT,IAAI,YAAY,GAAG,KAAK,CAAC;EACzB,IAAI,eAAe,GAAG,KAAK,CAAC;EAC5B,IAAI,gBAAgB,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC;EACxC,IAAI,iBAAiB,GAAG,CAAC,CAAC,CAAC;EAC3B,IAAI,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;aACvC,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;;EAE/D,IAAI,cAAc,EAAE;;;IAGlB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;MAClC,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;MAC5B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;QACtB,OAAO,YAAY,CAAC;OACrB;MACD,KAAK,GAAG,KAAK,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;KACpC;GACF,MAAM;;IAEL,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;MAClC,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;MAC5B,IAAI,IAAI,KAAK,cAAc,EAAE;QAC3B,YAAY,GAAG,IAAI,CAAC;;QAEpB,IAAI,gBAAgB,EAAE;UACpB,eAAe,GAAG,eAAe;;aAE9B,CAAC,GAAG,iBAAiB,GAAG,CAAC,GAAG,SAAS;aACrC,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;UAC1C,iBAAiB,GAAG,CAAC,CAAC;SACvB;OACF,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;QAC7B,OAAO,YAAY,CAAC;OACrB;MACD,KAAK,GAAG,KAAK,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;KACpC;;IAED,eAAe,GAAG,eAAe,KAAK,gBAAgB;OACnD,CAAC,GAAG,iBAAiB,GAAG,CAAC,GAAG,SAAS;OACrC,MAAM,CAAC,iBAAiB,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;GAC5C;;;;EAID,IAAI,CAAC,YAAY,IAAI,CAAC,eAAe,EAAE;;;IAGrC,OAAO,KAAK,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;QACtC,WAAW,GAAG,YAAY,CAAC;GAChC;;EAED,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,cAAc,GAAG,CAAC,EAAE;IAC3C,OAAO,YAAY,CAAC;GACrB;;;EAGD,OAAO,eAAe,GAAG,YAAY,GAAG,aAAa,CAAC;CACvD;;;;;;;;AAQD,SAAS,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;EAChD,KAAK,CAAC,IAAI,IAAI,YAAY;IACxB,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;MACvB,OAAO,IAAI,CAAC;KACb;IACD,IAAI,CAAC,KAAK,CAAC,YAAY;QACnB,0BAA0B,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;MACrD,OAAO,GAAG,GAAG,MAAM,GAAG,GAAG,CAAC;KAC3B;;IAED,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;;;;;;;;IAQ/C,IAAI,SAAS,GAAG,KAAK,CAAC,SAAS,KAAK,CAAC,CAAC;QAClC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC;;;IAG3E,IAAI,cAAc,GAAG,KAAK;;UAEpB,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IACxD,SAAS,aAAa,CAAC,MAAM,EAAE;MAC7B,OAAO,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;KAC7C;;IAED,QAAQ,iBAAiB,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,aAAa,CAAC;MACvF,KAAK,WAAW;QACd,OAAO,MAAM,CAAC;MAChB,KAAK,YAAY;QACf,OAAO,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC;MAChD,KAAK,aAAa;QAChB,OAAO,GAAG,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YAC1C,iBAAiB,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;MACtD,KAAK,YAAY;QACf,OAAO,GAAG,GAAG,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YAC1C,iBAAiB,CAAC,YAAY,CAAC,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;MAC7E,KAAK,YAAY;QACf,OAAO,GAAG,GAAG,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,GAAG,CAAC;MACrD;QACE,MAAM,IAAID,eAAa,CAAC,wCAAwC,CAAC,CAAC;KACrE;GACF,EAAE,CAAC,CAAC;CACN;;;AAGD,SAAS,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE;EAC3C,IAAI,eAAe,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC;;;EAGxE,IAAI,IAAI,YAAY,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC;EACvD,IAAI,IAAI,GAAG,IAAI,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI,CAAC,CAAC;EAC3E,IAAI,KAAK,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,GAAG,GAAG,CAAC,CAAC;;EAE3C,OAAO,eAAe,GAAG,KAAK,GAAG,IAAI,CAAC;CACvC;;;AAGD,SAAS,iBAAiB,CAAC,MAAM,EAAE;EACjC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;CAC1E;;;;AAID,SAAS,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE;;;;;EAKjC,IAAI,MAAM,GAAG,gBAAgB,CAAC;;;EAG9B,IAAI,MAAM,IAAI,YAAY;IACxB,IAAI,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,GAAG,MAAM,KAAK,CAAC,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAChD,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC;IAC1B,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC;GACjD,EAAE,CAAC,CAAC;;EAEL,IAAI,gBAAgB,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC;EAC/D,IAAI,YAAY,CAAC;;;EAGjB,IAAI,KAAK,CAAC;EACV,QAAQ,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG;IACpC,IAAI,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACvC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;IACjC,MAAM,IAAI,MAAM;SACX,CAAC,gBAAgB,IAAI,CAAC,YAAY,IAAI,IAAI,KAAK,EAAE;UAChD,IAAI,GAAG,EAAE,CAAC;QACZ,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1B,gBAAgB,GAAG,YAAY,CAAC;GACjC;;EAED,OAAO,MAAM,CAAC;CACf;;;;;;AAMD,SAAS,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE;EAC7B,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;;;EAGhD,IAAI,OAAO,GAAG,QAAQ,CAAC;EACvB,IAAI,KAAK,CAAC;;EAEV,IAAI,KAAK,GAAG,CAAC,EAAE,GAAG,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC;EACvC,IAAI,MAAM,GAAG,EAAE,CAAC;;;;;;EAMhB,QAAQ,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;IACnC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;;IAEnB,IAAI,IAAI,GAAG,KAAK,GAAG,KAAK,EAAE;MACxB,GAAG,GAAG,CAAC,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,IAAI,CAAC;MACnC,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;;MAExC,KAAK,GAAG,GAAG,GAAG,CAAC,CAAC;KACjB;IACD,IAAI,GAAG,IAAI,CAAC;GACb;;;;EAID,MAAM,IAAI,IAAI,CAAC;;EAEf,IAAI,IAAI,CAAC,MAAM,GAAG,KAAK,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,EAAE;IAC/C,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;GACjE,MAAM;IACL,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;GAC7B;;EAED,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CACxB;;;AAGD,SAAS,YAAY,CAAC,MAAM,EAAE;EAC5B,IAAI,MAAM,GAAG,EAAE,CAAC;EAChB,IAAI,IAAI,CAAC;EACT,IAAI,SAAS,CAAC;;EAEd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACtC,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC5B,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,IAAI,CAAC,SAAS,IAAI,WAAW,CAAC,IAAI,CAAC;QACrC,MAAM,CAAC,CAAC,CAAC;QACT,SAAS,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;GAClC;;EAED,OAAO,MAAM,CAAC;CACf;;AAED,SAAS,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;EAC/C,IAAI,OAAO,GAAG,EAAE;MACZ,IAAI,MAAM,KAAK,CAAC,GAAG;MACnB,KAAK;MACL,MAAM,CAAC;;EAEX,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;;IAElE,IAAI,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;MACxD,IAAI,KAAK,KAAK,CAAC,EAAE,EAAA,OAAO,IAAI,IAAI,CAAC,EAAA;MACjC,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC;KACvB;GACF;;EAED,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;EACjB,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,GAAG,GAAG,CAAC;CAClC;;AAED,SAAS,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;EACzD,IAAI,OAAO,GAAG,EAAE;MACZ,IAAI,MAAM,KAAK,CAAC,GAAG;MACnB,KAAK;MACL,MAAM,CAAC;;EAEX,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;;IAElE,IAAI,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;MAC1D,IAAI,CAAC,OAAO,IAAI,KAAK,KAAK,CAAC,EAAE;QAC3B,OAAO,IAAI,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;OAC3C;MACD,OAAO,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;KAC9B;GACF;;EAED,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;EACjB,KAAK,CAAC,IAAI,GAAG,OAAO,IAAI,IAAI,CAAC;CAC9B;;AAED,SAAS,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE;EAC9C,IAAI,OAAO,SAAS,EAAE;MAClB,IAAI,YAAY,KAAK,CAAC,GAAG;MACzB,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;MACnC,KAAK;MACL,MAAM;MACN,SAAS;MACT,WAAW;MACX,UAAU,CAAC;;EAEf,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IACzE,UAAU,GAAG,EAAE,CAAC;;IAEhB,IAAI,KAAK,KAAK,CAAC,EAAE,EAAA,UAAU,IAAI,IAAI,CAAC,EAAA;;IAEpC,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACjC,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;;IAEhC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;MACrD,SAAS;KACV;;IAED,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,EAAE,EAAA,UAAU,IAAI,IAAI,CAAC,EAAA;;IAEjD,UAAU,IAAI,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;;IAEhC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE;MACvD,SAAS;KACV;;IAED,UAAU,IAAI,KAAK,CAAC,IAAI,CAAC;;;IAGzB,OAAO,IAAI,UAAU,CAAC;GACvB;;EAED,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;EACjB,KAAK,CAAC,IAAI,GAAG,GAAG,GAAG,OAAO,GAAG,GAAG,CAAC;CAClC;;AAED,SAAS,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE;EACxD,IAAI,OAAO,SAAS,EAAE;MAClB,IAAI,YAAY,KAAK,CAAC,GAAG;MACzB,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;MACnC,KAAK;MACL,MAAM;MACN,SAAS;MACT,WAAW;MACX,YAAY;MACZ,UAAU,CAAC;;;EAGf,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE;;IAE3B,aAAa,CAAC,IAAI,EAAE,CAAC;GACtB,MAAM,IAAI,OAAO,KAAK,CAAC,QAAQ,KAAK,UAAU,EAAE;;IAE/C,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;GACpC,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE;;IAEzB,MAAM,IAAIA,eAAa,CAAC,0CAA0C,CAAC,CAAC;GACrE;;EAED,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IACzE,UAAU,GAAG,EAAE,CAAC;;IAEhB,IAAI,CAAC,OAAO,IAAI,KAAK,KAAK,CAAC,EAAE;MAC3B,UAAU,IAAI,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;KAC9C;;IAED,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACjC,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;;IAEhC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;MAC7D,SAAS;KACV;;IAED,YAAY,GAAG,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG;oBACvC,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;;IAExD,IAAI,YAAY,EAAE;MAChB,IAAI,KAAK,CAAC,IAAI,IAAI,cAAc,KAAK,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;QAC7D,UAAU,IAAI,GAAG,CAAC;OACnB,MAAM;QACL,UAAU,IAAI,IAAI,CAAC;OACpB;KACF;;IAED,UAAU,IAAI,KAAK,CAAC,IAAI,CAAC;;IAEzB,IAAI,YAAY,EAAE;MAChB,UAAU,IAAI,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;KAC9C;;IAED,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,CAAC,EAAE;MACjE,SAAS;KACV;;IAED,IAAI,KAAK,CAAC,IAAI,IAAI,cAAc,KAAK,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE;MAC7D,UAAU,IAAI,GAAG,CAAC;KACnB,MAAM;MACL,UAAU,IAAI,IAAI,CAAC;KACpB;;IAED,UAAU,IAAI,KAAK,CAAC,IAAI,CAAC;;;IAGzB,OAAO,IAAI,UAAU,CAAC;GACvB;;EAED,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;EACjB,KAAK,CAAC,IAAI,GAAG,OAAO,IAAI,IAAI,CAAC;CAC9B;;AAED,SAAS,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;EAC3C,IAAI,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC;;EAElD,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;;EAEhE,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IACpE,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;;IAEvB,IAAI,CAAC,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,SAAS;SAClC,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,OAAO,MAAM,KAAK,QAAQ,MAAM,MAAM,YAAY,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;SAC1F,CAAC,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE;;MAEhD,KAAK,CAAC,GAAG,GAAG,QAAQ,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;;MAEtC,IAAI,IAAI,CAAC,SAAS,EAAE;QAClB,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC;;QAEtD,IAAIgB,WAAS,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,mBAAmB,EAAE;UAC1D,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;SACzC,MAAM,IAAID,iBAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE;UACtD,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;SAChD,MAAM;UACL,MAAM,IAAIf,eAAa,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,GAAG,8BAA8B,GAAG,KAAK,GAAG,SAAS,CAAC,CAAC;SAC/F;;QAED,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC;OACtB;;MAED,OAAO,IAAI,CAAC;KACb;GACF;;EAED,OAAO,KAAK,CAAC;CACd;;;;;AAKD,SAAS,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE;EAC9D,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC;EACjB,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;;EAEpB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE;IACrC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;GACjC;;EAED,IAAI,IAAI,GAAGgB,WAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;;EAEtC,IAAI,KAAK,EAAE;IACT,KAAK,IAAI,KAAK,CAAC,SAAS,GAAG,CAAC,IAAI,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC;GAC1D;;EAED,IAAI,aAAa,GAAG,IAAI,KAAK,iBAAiB,IAAI,IAAI,KAAK,gBAAgB;MACvE,cAAc;MACd,SAAS,CAAC;;EAEd,IAAI,aAAa,EAAE;IACjB,cAAc,GAAG,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAClD,SAAS,GAAG,cAAc,KAAK,CAAC,CAAC,CAAC;GACnC;;EAED,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,SAAS,KAAK,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;IAC/F,OAAO,GAAG,KAAK,CAAC;GACjB;;EAED,IAAI,SAAS,IAAI,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE;IACrD,KAAK,CAAC,IAAI,GAAG,OAAO,GAAG,cAAc,CAAC;GACvC,MAAM;IACL,IAAI,aAAa,IAAI,SAAS,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE;MACvE,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC;KAC7C;IACD,IAAI,IAAI,KAAK,iBAAiB,EAAE;MAC9B,IAAI,KAAK,KAAK,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;QACnD,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACrD,IAAI,SAAS,EAAE;UACb,KAAK,CAAC,IAAI,GAAG,OAAO,GAAG,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC;SACpD;OACF,MAAM;QACL,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,SAAS,EAAE;UACb,KAAK,CAAC,IAAI,GAAG,OAAO,GAAG,cAAc,GAAG,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC;SAC1D;OACF;KACF,MAAM,IAAI,IAAI,KAAK,gBAAgB,EAAE;MACpC,IAAI,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;QACtC,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACtD,IAAI,SAAS,EAAE;UACb,KAAK,CAAC,IAAI,GAAG,OAAO,GAAG,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC;SACpD;OACF,MAAM;QACL,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,SAAS,EAAE;UACb,KAAK,CAAC,IAAI,GAAG,OAAO,GAAG,cAAc,GAAG,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC;SAC1D;OACF;KACF,MAAM,IAAI,IAAI,KAAK,iBAAiB,EAAE;MACrC,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;QACrB,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;OAC9C;KACF,MAAM;MACL,IAAI,KAAK,CAAC,WAAW,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;MACpC,MAAM,IAAIhB,eAAa,CAAC,yCAAyC,GAAG,IAAI,CAAC,CAAC;KAC3E;;IAED,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;MAC3C,KAAK,CAAC,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;KACnD;GACF;;EAED,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,sBAAsB,CAAC,MAAM,EAAE,KAAK,EAAE;EAC7C,IAAI,OAAO,GAAG,EAAE;MACZ,iBAAiB,GAAG,EAAE;MACtB,KAAK;MACL,MAAM,CAAC;;EAEX,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;;EAEhD,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;IAC7E,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;GAC1D;EACD,KAAK,CAAC,cAAc,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;CAC1C;;AAED,SAAS,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,iBAAiB,EAAE;EACvD,IAAI,aAAa;MACb,KAAK;MACL,MAAM,CAAC;;EAEX,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE;IACjD,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;MAChB,IAAI,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE;QAC3C,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;OAC/B;KACF,MAAM;MACL,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;MAErB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QACzB,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;UAClE,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;SACxD;OACF,MAAM;QACL,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;QAEpC,KAAK,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE;UACzE,WAAW,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC;SACvE;OACF;KACF;GACF;CACF;;AAED,SAAS2B,MAAI,CAAC,KAAK,EAAE,OAAO,EAAE;EAC5B,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;;EAExB,IAAI,KAAK,GAAG,IAAID,OAAK,CAAC,OAAO,CAAC,CAAC;;EAE/B,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,EAAA,sBAAsB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAA;;EAExD,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,EAAA;;EAErE,OAAO,EAAE,CAAC;CACX;;AAED,SAASE,UAAQ,CAAC,KAAK,EAAE,OAAO,EAAE;EAChC,OAAOD,MAAI,CAAC,KAAK,EAAE1B,QAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAEmB,qBAAmB,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;CAC7E;;AAED,aAA0BO,MAAI,CAAC;AAC/B,iBAA0BC,UAAQ,CAAC;;;;;;;AC7xBnC,IAAI,MAAM,GAAG1B,QAA2B,CAAC;AACzC,IAAI,MAAM,GAAGI,QAA2B,CAAC;;;AAGzC,SAAS,UAAU,CAAC,IAAI,EAAE;EACxB,OAAO,YAAY;IACjB,MAAM,IAAI,KAAK,CAAC,WAAW,GAAG,IAAI,GAAG,oCAAoC,CAAC,CAAC;GAC5E,CAAC;CACH;;;AAGD,WAAqCC,IAAyB,CAAC;AAC/D,aAAqCI,MAA2B,CAAC;AACjE,sBAAqCC,QAAoC,CAAC;AAC1E,kBAAqCC,IAAgC,CAAC;AACtE,kBAAqCI,IAAgC,CAAC;AACtE,0BAAqCC,YAAwC,CAAC;AAC9E,0BAAqCW,YAAwC,CAAC;AAC9E,WAAqC,MAAM,CAAC,IAAI,CAAC;AACjD,cAAqC,MAAM,CAAC,OAAO,CAAC;AACpD,eAAqC,MAAM,CAAC,QAAQ,CAAC;AACrD,kBAAqC,MAAM,CAAC,WAAW,CAAC;AACxD,WAAqC,MAAM,CAAC,IAAI,CAAC;AACjD,eAAqC,MAAM,CAAC,QAAQ,CAAC;AACrD,oBAAqCC,SAA8B,CAAC;;;AAGpE,qBAAgClB,QAAoC,CAAC;AACrE,kBAAgCM,YAAwC,CAAC;AACzE,qBAAgCW,YAAwC,CAAC;;;AAGzE,aAAgC,UAAU,CAAC,MAAM,CAAC,CAAC;AACnD,cAAgC,UAAU,CAAC,OAAO,CAAC,CAAC;AACpD,cAAgC,UAAU,CAAC,SAAS,CAAC,CAAC;AACtD,qBAAgC,UAAU,CAAC,gBAAgB,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;ACnC7D,IAAI,IAAI,GAAG3B,MAA2B,CAAC;;;AAGvC,SAAc,GAAG,IAAI,CAAC;;ACJtB,kBAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjCJ,IAAI,SAAS,GAAG,EAAE,CAAC;EACnBA,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,kCAAkC,CAAC,CAAC;EAC/D,IAAI,EAAE,EAAE;IACNA,IAAI,IAAI,GAAG,EAAE,CAAC,WAAW,CAAC;IAC1B,SAAS,GAAGiC,KAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;GACrC;;EAED,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,GAAG,UAAU,CAAC;EAC5D,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,GAAG,iBAAiB,CAAC;;EAErF,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,GAAG,EAAE,CAAC;;EAE1D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,MAAM,EAAE,CAAC,EAAE;IAC1CjC,IAAI,CAAC,GAAG,EAAE,CAAC;IACXA,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,CAAC,OAAO,MAAM,CAAC,KAAK,QAAQ,EAAE;MAChC,IAAI,GAAG,MAAM,CAAC;KACf,MAAM;MACL,CAAC,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;KAC9B;IACDA,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC5B,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;IACd,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzD,CAAC,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACpC,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE;MAC5BA,IAAI,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC5D,IAAI,CAAC,OAAO,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,EAAE;QACnD,WAAW,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;OACxC,MAAM;QACL,CAAC,CAAC,cAAc,GAAG,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;OAC3D;MACD,CAAC,CAAC,WAAW,GAAG,WAAW,CAAC;KAC7B;IACD,OAAO,CAAC,CAAC;GACV,CAAC,CAAC;;;CAGJ,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;ACjBD,CAAC,SAAS,OAAO,EAAE;;IAEf,SAAS,YAAY,GAAG;;QAEpB,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACnG,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QACb,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,EAAE,CAAC;;QAE3B,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;;QAEvB,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,EAAE;YACxB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;SAClB,CAAC;;QAEF,IAAI,CAAC,UAAU,GAAG,WAAW;YACzB,OAAO,IAAI,CAAC,OAAO,CAAC;SACvB,CAAC;;QAEF,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,EAAE;YAC5B,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,EAAE;SAC5D,CAAC;;QAEF,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,EAAE,aAAa,EAAE;YACpC,IAAI,aAAa,IAAI,SAAS,IAAI,aAAa,IAAI,IAAI;gBACnD,EAAA,aAAa,GAAG,IAAI,CAAC,EAAA;YACzB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YACnC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBAC1D,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC;aACxB,MAAM;gBACH,MAAM,2BAA2B,GAAG,CAAC,GAAG,UAAU;0BACxC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAC5C,AAAC;YACF,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;SACtC,CAAC;;QAEF,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,EAAE,aAAa,EAAE;YACvC,IAAI,aAAa,IAAI,SAAS,IAAI,aAAa,IAAI,IAAI;gBACnD,EAAA,aAAa,GAAG,IAAI,CAAC,EAAA;YACzB,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YACnC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBAC1D,OAAO,IAAI,CAAC;aACf,MAAM;gBACH,OAAO,KAAK,CAAC;aAChB,AAAC;YACF,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;SACtC,CAAC;;;QAGF,IAAI,CAAC,OAAO,GAAG,WAAW;;;YACtB,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE;gBAChEM,MAAI,CAAC,GAAG,EAAE,CAAC;aACd,AAAC;;YAEF,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE;gBAC7B,OAAO,IAAI,CAAC;aACf,AAAC;YACF,OAAO,KAAK,CAAC;SAChB,CAAC;;QAEF,IAAI,CAAC,cAAc,GAAG,SAAS,aAAa,EAAE;;;YAC1C,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;gBAC5CA,MAAI,CAAC,GAAG,EAAE,CAAC;aACd,AAAC;YACF,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,aAAa,IAAI,IAAI,EAAE;gBACtD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;oBACjCA,MAAI,CAAC,GAAG,EAAE,CAAC;iBACd,AAAC;gBACF,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;aACtC,AAAC;SACL,CAAC;;QAEF,IAAI,CAAC,YAAY,GAAG,WAAW;;;YAC3B,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACvB,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;YACrB,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,OAAO,IAAI,EAAE;gBACT,IAAI,CAAC,OAAO,EAAE;oBACV,IAAIA,MAAI,CAAC,KAAK,CAACA,MAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE;wBAC7B,IAAI,UAAU,GAAG,CAAC,EAAE;4BAChB,UAAU,EAAE,CAAC;yBAChB,MAAM;4BACH,IAAI,GAAG,GAAGA,MAAI,CAAC,GAAG,CAAC;4BACnBA,MAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;4BACvB,OAAOA,MAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;yBAC3C,AAAC;qBACL,MAAM,IAAIA,MAAI,CAAC,KAAK,CAACA,MAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE;wBACpC,UAAU,EAAE,CAAC;qBAChB,MAAM,IAAIA,MAAI,CAAC,GAAG,IAAIA,MAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC1C,MAAM,oBAAoB,CAAC;qBAC9B,AAAC;iBACL,AAAC;gBACF,IAAIA,MAAI,CAAC,KAAK,CAACA,MAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK;oBAChD,EAAA,OAAO,GAAG,IAAI,CAAC,EAAA;;oBAEf,EAAA,OAAO,GAAG,KAAK,CAAC,EAAA;gBACpBA,MAAI,CAAC,GAAG,EAAE,CAAC;aACd,AAAC;SACL,CAAC;;QAEF,IAAI,CAAC,aAAa,GAAG,WAAW;;;YAC5B,IAAI,GAAG,GAAG,EAAE,CAAC;YACb,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,QAAQ,IAAI,CAAC,CAAC,EAAE;gBAClD,GAAG,GAAG,GAAG,GAAGA,MAAI,CAAC,KAAK,CAACA,MAAI,CAAC,GAAG,CAAC,CAAC;gBACjC,IAAIA,MAAI,CAAC,KAAK,CAACA,MAAI,CAAC,GAAG,CAAC,IAAI,GAAG;oBAC3B,EAAA,QAAQ,EAAE,CAAC,EAAA;gBACf,IAAIA,MAAI,CAAC,KAAK,CAACA,MAAI,CAAC,GAAG,CAAC,IAAI,GAAG;oBAC3B,EAAA,QAAQ,EAAE,CAAC,EAAA;gBACf,IAAIA,MAAI,CAAC,GAAG,IAAIA,MAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;oBACnC,MAAM,qBAAqB,GAAGA,MAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;iBAC7D,AAAC;gBACFA,MAAI,CAAC,GAAG,EAAE,CAAC;aACd,AAAC;YACF,OAAO,GAAG,CAAC;SACd,CAAC;;QAEF,IAAI,CAAC,YAAY,GAAG,WAAW;;;YAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACvB,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;YACrB,IAAI,OAAO,GAAG,KAAK,CAAC;YACpB,OAAO,IAAI,EAAE;gBACT,IAAI,CAAC,OAAO,EAAE;oBACV,IAAIA,MAAI,CAAC,KAAK,CAACA,MAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE;wBAC7B,IAAI,GAAG,GAAGA,MAAI,CAAC,GAAG,CAAC;wBACnBA,MAAI,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;wBACvB,OAAOA,MAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;qBAC3C,MAAM,IAAIA,MAAI,CAAC,GAAG,IAAIA,MAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC1C,MAAM,qBAAqB,GAAGA,MAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;qBAC7D,AAAC;iBACL;gBACD,IAAIA,MAAI,CAAC,KAAK,CAACA,MAAI,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK;oBAChD,EAAA,OAAO,GAAG,IAAI,CAAC,EAAA;;oBAEf,EAAA,OAAO,GAAG,KAAK,CAAC,EAAA;gBACpBA,MAAI,CAAC,GAAG,EAAE,CAAC;aACd,AAAC;SACL,CAAC;;QAEF,IAAI,CAAC,YAAY,GAAG,WAAW;YAC3B,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;YACrB,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACpB,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;aAC9B,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBAC3B,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;aAC9B,MAAM;gBACH,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACnB,IAAI,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;oBACnB,EAAA,OAAO,CAAC,CAAC,EAAA;qBACR,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC;oBAC9C,EAAA,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,EAAA;;oBAEvB,EAAA,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,YAAY,GAAG,CAAC,CAAC,EAAA;;aAEhF,AAAC;SACL,CAAC;;QAEF,IAAI,CAAC,KAAK,GAAG,WAAW;;;YACpB,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;YACjC,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACvBA,MAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChB,MAAM,CAAC,IAAI,CAACA,MAAI,CAAC,YAAY,EAAE,CAAC,CAAC;aACpC,AAAC;YACF,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAC1B,CAAC;;QAEF,IAAI,CAAC,GAAG,GAAG,WAAW;;;YAClB,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;YACrB,OAAO,IAAI,EAAE;gBACT,IAAIA,MAAI,CAAC,GAAG,IAAIA,MAAI,CAAC,KAAK,CAAC,MAAM,EAAE;oBAC/B,MAAM,aAAa,CAAC;iBACvB,AAAC;;;gBAGF,IAAIA,MAAI,CAAC,MAAM,CAAC,OAAO,CAACA,MAAI,CAAC,KAAK,CAACA,MAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE;oBAChD,OAAOA,MAAI,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAEA,MAAI,CAAC,GAAG,CAAC,CAAC;iBAChD,MAAM;oBACHA,MAAI,CAAC,GAAG,EAAE,CAAC;;iBAEd,AAAC;aACL,AAAC;SACL,CAAC;;QAEF,IAAI,CAAC,gBAAgB,GAAG,WAAW;YAC/B,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACrB,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACpB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChB,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;gBACvB,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;aACvB,MAAM;gBACH,MAAM,4CAA4C;0BACxC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAC5C,AAAC;SACL,CAAC;;QAEF,IAAI,CAAC,cAAc,GAAG,WAAW;;;YAC7B,IAAI,EAAE,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACjC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;YACpC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9C,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBACvBA,MAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;gBAEhB,IAAIA,MAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBACpB,MAAM;iBACT;gBACD,AAAC;gBACD,EAAE,GAAGA,MAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC7BA,MAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;aACjD,AAAC;SACL,CAAC;;QAEF,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,EAAE;YAC1B,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC9C,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAChD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAChB,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACxC,CAAC;;QAEF,IAAI,CAAC,SAAS,GAAG,WAAW;YACxB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAChB,OAAO,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;SAC3B,CAAC;;QAEF,IAAI,CAAC,QAAQ,GAAG,WAAW;YACvB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,UAAU,CAAC;YAC5C,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YAClD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACxC,CAAC;;QAEF,IAAI,CAAC,OAAO,GAAG,WAAW;YACtB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC;YAC3C,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;YAClD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACxC,CAAC;;QAEF,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,EAAE;YACrB,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SACtB,CAAC;;QAEF,IAAI,CAAC,MAAM,GAAG,WAAW;;;YACrB,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE;gBACnB,IAAI,CAAC,GAAGA,MAAI,CAAC,SAAS,EAAE,CAAC;gBACzBA,MAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAChB,IAAI,CAAC,IAAI,SAAS,EAAE;oBAChBA,MAAI,CAAC,MAAM,EAAE,CAAC;iBACjB,MAAM,IAAI,CAAC,IAAI,WAAW,EAAE;oBACzBA,MAAI,CAAC,QAAQ,EAAE,CAAC;iBACnB,MAAM,IAAI,CAAC,IAAI,UAAU,EAAE;oBACxBA,MAAI,CAAC,OAAO,EAAE,CAAC;iBAClB,MAAM;oBACHA,MAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;iBACjB;gBACDA,MAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;aACnB,AAAC;SACL,CAAC;KACL,AAAC;;IAEF,OAAO,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE;QAC9B,IAAI,CAAC,GAAG,IAAI,YAAY,EAAE,CAAC;QAC3B,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnB,CAAC,CAAC,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,CAAC,OAAO,CAAC;KACpB,CAAC;;;IAGF,OAAO,CAAC,QAAQ,GAAG,SAAS,IAAI,EAAE;QAC9B,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,CAAC,IAAI,IAAI,EAAE;YACjB,GAAG,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC/B,GAAG,IAAI,GAAG,CAAC;YACX,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW;gBACnB,EAAA,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,EAAA;YACtC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK;gBACb,EAAA,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,EAAA;YAC1B,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE;gBACnB,IAAI,IAAI,GAAG,EAAE,CAAC;gBACd,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE;oBAC/B,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;wBAChB,EAAA,IAAI,IAAI,IAAI,CAAC,EAAA;oBACjB,IAAI,IAAI,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;iBACtD;gBACD,GAAG,IAAI,IAAI,CAAC;aACf;YACD,GAAG,IAAI,OAAO,CAAC;SAClB;QACD,OAAO,GAAG,CAAC;;KAEd,CAAC;;CAEL,EAAE,AAA4D,OAAO,CAAC,CAAC;;;;;AC7TxE,mBAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjCN,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,kCAAkC,CAAC,CAAC;EAC/DA,IAAI,SAAS,GAAG,EAAE,CAAC;EACnBA,IAAI,YAAY,GAAG,EAAE,CAAC;;EAEtB,IAAI,EAAE,EAAE;IACNA,IAAI,MAAM,GAAG,EAAE,CAAC,WAAW,CAAC;IAC5BA,IAAI,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACxC,GAAG,MAAM,EAAE;MACT,MAAM,CAAC,OAAO,CAAC,UAAA,CAAC,EAAC;QACf,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;UACxB,IAAI,GAAG,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;UACzB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;UACpC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,oCAAoC;4BACpC,UAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,SAAG,IAAI,GAAA,CAAC,CAAC;UAC3C,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,iBAAiB;4BACjB,UAAC,IAAI,EAAE,IAAI,EAAE,SAAG,IAAI,GAAA,CAAC,CAAC;UACxC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;SACtB;QACD,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;QAC1C,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC;OAChD,CAAC,CAAC;KACJ;;;IAGD,IAAI,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/D,QAAQ,CAAC,OAAO,CAAC,UAAA,EAAE,EAAC;MAClBA,IAAI,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;MACjC,IAAI,GAAG,EAAE;QACPA,IAAI,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAClC,YAAY,CAAC,OAAO,CAAC,UAAA,GAAG,EAAC;UACvB,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/B,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpB,IAAI,CAAC,CAAC,GAAG,IAAI,YAAY,CAAC,CAAC;cACzB,OAAO,CAAC,IAAI,CAAC,mCAAmC,GAAG,GAAG,CAAC,CAAC;aACzD;WACF;SACF,CAAC,CAAC;OACJ;KACF,CAAC,CAAC;GACJ;EACD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;EACjC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;CAC5B,CAAA;;AC7CD,IAAI,EAAE,GAAG,IAAI,IAAI;IACb,EAAE,GAAG,IAAI,IAAI,CAAC;;AAElB,AAAe,SAAS,WAAW,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE;;EAEjE,SAAS,QAAQ,CAAC,IAAI,EAAE;IACtB,OAAO,MAAM,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;GAC7C;;EAED,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC;;EAE1B,QAAQ,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE;IAC7B,OAAO,MAAM,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC;GAChF,CAAC;;EAEF,QAAQ,CAAC,KAAK,GAAG,SAAS,IAAI,EAAE;IAC9B,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC;QACnB,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7B,OAAO,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC;GACxC,CAAC;;EAEF,QAAQ,CAAC,MAAM,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE;IACrC,OAAO,OAAO,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;GACnF,CAAC;;EAEF,QAAQ,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE;IAC3C,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,EAAA;IACjD,GAAG,EAAA,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAA,QAAQ,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;IAC1F,OAAO,KAAK,CAAC;GACd,CAAC;;EAEF,QAAQ,CAAC,MAAM,GAAG,SAAS,IAAI,EAAE;IAC/B,OAAO,WAAW,CAAC,SAAS,IAAI,EAAE;MAChC,IAAI,IAAI,IAAI,IAAI,EAAE,EAAA,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAA,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAA;KAC5E,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;MACtB,IAAI,IAAI,IAAI,IAAI,EAAE,EAAA,OAAO,EAAE,IAAI,IAAI,CAAC,EAAE,EAAA,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,IAAA;KAC/E,CAAC,CAAC;GACJ,CAAC;;EAEF,IAAI,KAAK,EAAE;IACT,QAAQ,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,GAAG,EAAE;MACpC,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;MACrC,MAAM,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;MACvB,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;KAClC,CAAC;;IAEF,QAAQ,CAAC,KAAK,GAAG,SAAS,IAAI,EAAE;MAC9B,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;MACxB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI;YACtC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,QAAQ;YACtB,QAAQ,CAAC,MAAM,CAAC,KAAK;gBACjB,SAAS,CAAC,EAAE,EAAE,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE;gBAC7C,SAAS,CAAC,EAAE,EAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;KACtE,CAAC;GACH;;EAED,OAAO,QAAQ,CAAC;CACjB;;AC1DD,IAAI,WAAW,GAAGkC,WAAQ,CAAC,WAAW;;CAErC,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;EACtB,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;CAC5B,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;EACtB,OAAO,GAAG,GAAG,KAAK,CAAC;CACpB,CAAC,CAAC;;;AAGH,WAAW,CAAC,KAAK,GAAG,SAAS,CAAC,EAAE;EAC9B,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;EAClB,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;EAC1C,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAA,OAAO,WAAW,CAAC,EAAA;EACjC,OAAOA,WAAQ,CAAC,SAAS,IAAI,EAAE;IAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;GACxC,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;IACtB,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;GAChC,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;IACtB,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;GAC1B,CAAC,CAAC;CACJ,CAAC,AAEF,AACA,AAAO,AAAqC;;ACzBrC,IAAI,cAAc,GAAG,GAAG,CAAC;AAChC,AAAO,IAAI,cAAc,GAAG,GAAG,CAAC;AAChC,AAAO,IAAI,YAAY,GAAG,IAAI,CAAC;AAC/B,AAAO,IAAI,WAAW,GAAG,KAAK,CAAC;AAC/B,AAAO,IAAI,YAAY,GAAG,MAAM,CAAC;;ACDjC,IAAI,MAAM,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;EACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,cAAc,CAAC,GAAG,cAAc,CAAC,CAAC;CAClE,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;EACtB,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,cAAc,CAAC,CAAC;CAC7C,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;EACtB,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,cAAc,CAAC;CACvC,EAAE,SAAS,IAAI,EAAE;EAChB,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;CAC7B,CAAC,CAAC,AAEH,AACA,AAAO,AAA2B;;ACXlC,IAAI,MAAM,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;EACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,cAAc,CAAC,GAAG,cAAc,CAAC,CAAC;CAClE,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;EACtB,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,cAAc,CAAC,CAAC;CAC7C,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;EACtB,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,cAAc,CAAC;CACvC,EAAE,SAAS,IAAI,EAAE;EAChB,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;CAC1B,CAAC,CAAC,AAEH,AACA,AAAO,AAA2B;;ACXlC,IAAI,IAAI,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;EACjC,IAAI,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE,GAAG,cAAc,GAAG,YAAY,CAAC;EACtE,IAAI,MAAM,GAAG,CAAC,EAAE,EAAA,MAAM,IAAI,YAAY,CAAC,EAAA;EACvC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,GAAG,YAAY,CAAC,GAAG,YAAY,GAAG,MAAM,CAAC,CAAC;CACnF,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;EACtB,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,YAAY,CAAC,CAAC;CAC3C,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;EACtB,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,YAAY,CAAC;CACrC,EAAE,SAAS,IAAI,EAAE;EAChB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;CACxB,CAAC,CAAC,AAEH,AACA,AAAO,AAAuB;;ACb9B,IAAI,GAAG,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;EAChC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC3B,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;EACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;CACrC,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;EACtB,OAAO,CAAC,GAAG,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE,GAAG,KAAK,CAAC,iBAAiB,EAAE,CAAC,GAAG,cAAc,CAAC,GAAG,WAAW,CAAC;CAC7G,EAAE,SAAS,IAAI,EAAE;EAChB,OAAO,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;CAC3B,CAAC,CAAC,AAEH,AACA,AAAO,AAAqB;;ACX5B,SAAS,OAAO,CAAC,CAAC,EAAE;EAClB,OAAOA,WAAQ,CAAC,SAAS,IAAI,EAAE;IAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3D,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;GAC3B,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;IACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;GACzC,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;IACtB,OAAO,CAAC,GAAG,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE,GAAG,KAAK,CAAC,iBAAiB,EAAE,CAAC,GAAG,cAAc,CAAC,GAAG,YAAY,CAAC;GAC9G,CAAC,CAAC;CACJ;;AAED,AAAO,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/B,AAAO,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/B,AAAO,IAAI,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAChC,AAAO,IAAI,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAClC,AAAO,IAAI,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AACjC,AAAO,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;AAC/B,AAAO,IAAI,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,AAEjC,AAAO,AAA2B,AAClC,AAAO,AAA2B,AAClC,AAAO,AAA6B,AACpC,AAAO,AAAiC,AACxC,AAAO,AAA+B,AACtC,AAAO,AAA2B,AAClC,AAAO,AAA+B;;AC1BtC,IAAI,KAAK,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;EAClC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;EAChB,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC3B,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;EACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC;CACvC,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;EACtB,OAAO,GAAG,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,CAAC;CAC3F,EAAE,SAAS,IAAI,EAAE;EAChB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;CACxB,CAAC,CAAC,AAEH,AACA,AAAO,AAAyB;;ACZhC,IAAI,IAAI,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;EACjC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EACpB,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC3B,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;EACtB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,CAAC;CAC7C,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;EACtB,OAAO,GAAG,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;CAChD,EAAE,SAAS,IAAI,EAAE;EAChB,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;CAC3B,CAAC,CAAC;;;AAGH,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,EAAE;EACvB,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;IAC/E,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpB,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;GAC3B,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;IACtB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;GACjD,CAAC,CAAC;CACJ,CAAC,AAEF,AACA,AAAO,AAAuB;;ACtB9B,IAAI,SAAS,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;EACtC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAC1B,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;EACtB,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,cAAc,CAAC,CAAC;CAC7C,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;EACtB,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,cAAc,CAAC;CACvC,EAAE,SAAS,IAAI,EAAE;EAChB,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;CAC7B,CAAC,CAAC,AAEH,AACA,AAAO,AAAiC;;ACXxC,IAAI,OAAO,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;EACpC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC7B,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;EACtB,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,GAAG,IAAI,GAAG,YAAY,CAAC,CAAC;CAC3C,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;EACtB,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,YAAY,CAAC;CACrC,EAAE,SAAS,IAAI,EAAE;EAChB,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;CAC3B,CAAC,CAAC,AAEH,AACA,AAAO,AAA6B;;ACXpC,IAAI,MAAM,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;EACnC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC9B,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;EACtB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,CAAC;CAC3C,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;EACtB,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,WAAW,CAAC;CACpC,EAAE,SAAS,IAAI,EAAE;EAChB,OAAO,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;CAC9B,CAAC,CAAC,AAEH,AACA,AAAO,AAA2B;;ACXlC,SAAS,UAAU,CAAC,CAAC,EAAE;EACrB,OAAOA,WAAQ,CAAC,SAAS,IAAI,EAAE;IAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACpE,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;GAC9B,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;IACtB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;GAC/C,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;IACtB,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,YAAY,CAAC;GACrC,CAAC,CAAC;CACJ;;AAED,AAAO,IAAI,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACrC,AAAO,IAAI,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACrC,AAAO,IAAI,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACtC,AAAO,IAAI,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACxC,AAAO,IAAI,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACvC,AAAO,IAAI,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;AACrC,AAAO,IAAI,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,AAEvC,AAAO,AAAiC,AACxC,AAAO,AAAiC,AACxC,AAAO,AAAmC,AAC1C,AAAO,AAAuC,AAC9C,AAAO,AAAqC,AAC5C,AAAO,AAAiC,AACxC,AAAO,AAAqC;;AC1B5C,IAAI,QAAQ,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;EACrC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;EACnB,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC9B,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;EACtB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,CAAC;CAC7C,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;EACtB,OAAO,GAAG,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE,CAAC;CACvG,EAAE,SAAS,IAAI,EAAE;EAChB,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;CAC3B,CAAC,CAAC,AAEH,AACA,AAAO,AAA+B;;ACZtC,IAAI,OAAO,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;EACpC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;EACvB,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC9B,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;EACtB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC,CAAC;CACnD,EAAE,SAAS,KAAK,EAAE,GAAG,EAAE;EACtB,OAAO,GAAG,CAAC,cAAc,EAAE,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;CACtD,EAAE,SAAS,IAAI,EAAE;EAChB,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;CAC9B,CAAC,CAAC;;;AAGH,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,EAAE;EAC1B,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,GAAGA,WAAQ,CAAC,SAAS,IAAI,EAAE;IAC/E,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvB,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;GAC9B,EAAE,SAAS,IAAI,EAAE,IAAI,EAAE;IACtB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC;GACvD,CAAC,CAAC;CACJ,CAAC,AAEF,AACA,AAAO,AAA6B;;ACvBpC,SAAS,SAAS,CAAC,CAAC,EAAE;EACpB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE;IACzB,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtB,OAAO,IAAI,CAAC;GACb;EACD,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;CACpD;;AAED,SAAS,OAAO,CAAC,CAAC,EAAE;EAClB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,EAAE;IACzB,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzB,OAAO,IAAI,CAAC;GACb;EACD,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAC9D;;AAED,SAAS,OAAO,CAAC,CAAC,EAAE;EAClB,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACnD;;AAED,AAAe,SAAS,YAAY,CAAC,MAAM,EAAE;EAC3C,IAAI,eAAe,GAAG,MAAM,CAAC,QAAQ;MACjC,WAAW,GAAG,MAAM,CAAC,IAAI;MACzB,WAAW,GAAG,MAAM,CAAC,IAAI;MACzB,cAAc,GAAG,MAAM,CAAC,OAAO;MAC/B,eAAe,GAAG,MAAM,CAAC,IAAI;MAC7B,oBAAoB,GAAG,MAAM,CAAC,SAAS;MACvC,aAAa,GAAG,MAAM,CAAC,MAAM;MAC7B,kBAAkB,GAAG,MAAM,CAAC,WAAW,CAAC;;EAE5C,IAAI,QAAQ,GAAG,QAAQ,CAAC,cAAc,CAAC;MACnC,YAAY,GAAG,YAAY,CAAC,cAAc,CAAC;MAC3C,SAAS,GAAG,QAAQ,CAAC,eAAe,CAAC;MACrC,aAAa,GAAG,YAAY,CAAC,eAAe,CAAC;MAC7C,cAAc,GAAG,QAAQ,CAAC,oBAAoB,CAAC;MAC/C,kBAAkB,GAAG,YAAY,CAAC,oBAAoB,CAAC;MACvD,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC;MACjC,WAAW,GAAG,YAAY,CAAC,aAAa,CAAC;MACzC,YAAY,GAAG,QAAQ,CAAC,kBAAkB,CAAC;MAC3C,gBAAgB,GAAG,YAAY,CAAC,kBAAkB,CAAC,CAAC;;EAExD,IAAI,OAAO,GAAG;IACZ,GAAG,EAAE,kBAAkB;IACvB,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,gBAAgB;IACrB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,gBAAgB;IACrB,GAAG,EAAE,gBAAgB;IACrB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,kBAAkB;IACvB,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,sBAAsB;IAC3B,GAAG,EAAE,mBAAmB;IACxB,GAAG,EAAE,sBAAsB;IAC3B,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,cAAc;IACnB,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,oBAAoB;GAC1B,CAAC;;EAEF,IAAI,UAAU,GAAG;IACf,GAAG,EAAE,qBAAqB;IAC1B,GAAG,EAAE,gBAAgB;IACrB,GAAG,EAAE,mBAAmB;IACxB,GAAG,EAAE,cAAc;IACnB,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,mBAAmB;IACxB,GAAG,EAAE,mBAAmB;IACxB,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,kBAAkB;IACvB,GAAG,EAAE,qBAAqB;IAC1B,GAAG,EAAE,oBAAoB;IACzB,GAAG,EAAE,gBAAgB;IACrB,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,gBAAgB;IACrB,GAAG,EAAE,yBAAyB;IAC9B,GAAG,EAAE,sBAAsB;IAC3B,GAAG,EAAE,yBAAyB;IAC9B,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,oBAAoB;GAC1B,CAAC;;EAEF,IAAI,MAAM,GAAG;IACX,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,UAAU;IACf,GAAG,EAAE,mBAAmB;IACxB,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,cAAc;IACnB,GAAG,EAAE,iBAAiB;IACtB,GAAG,EAAE,gBAAgB;IACrB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,WAAW;IAChB,GAAG,EAAE,YAAY;IACjB,GAAG,EAAE,qBAAqB;IAC1B,GAAG,EAAE,kBAAkB;IACvB,GAAG,EAAE,qBAAqB;IAC1B,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,eAAe;IACpB,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,mBAAmB;GACzB,CAAC;;;EAGF,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;EAC5C,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;EAC5C,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;EAChD,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;EAClD,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;EAClD,UAAU,CAAC,CAAC,GAAG,SAAS,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;;EAEtD,SAAS,SAAS,CAAC,SAAS,EAAE,OAAO,EAAE;IACrC,OAAO,SAAS,IAAI,EAAE;MACpB,IAAI,MAAM,GAAG,EAAE;UACX,CAAC,GAAG,CAAC,CAAC;UACN,CAAC,GAAG,CAAC;UACL,CAAC,GAAG,SAAS,CAAC,MAAM;UACpB,CAAC;UACD,GAAG;UACH,MAAM,CAAC;;MAEX,IAAI,CAAC,CAAC,IAAI,YAAY,IAAI,CAAC,EAAE,EAAA,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAA;;MAEpD,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE;QACd,IAAI,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE;UAClC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;UACnC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,EAAA,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAA;eAC1E,EAAA,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAA;UACjC,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,EAAA,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,EAAA;UAC/C,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;UACf,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SACX;OACF;;MAED,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;MACnC,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACxB,CAAC;GACH;;EAED,SAAS,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE;IACpC,OAAO,SAAS,MAAM,EAAE;MACtB,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;UACjB,CAAC,GAAG,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;MACtD,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;;;MAGpC,IAAI,GAAG,IAAI,CAAC,EAAE,EAAA,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAA;;;MAGxC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE;QACxB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,EAAA,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAA;QACxC,IAAIC,MAAG,GAAG,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QACxF,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACR,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAACA,MAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAACA,MAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;OAC1F;;;;MAID,IAAI,GAAG,IAAI,CAAC,EAAE;QACZ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QACjB,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;OACnB;;;MAGD,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;KACnB,CAAC;GACH;;EAED,SAAS,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE;IAC/C,IAAI,CAAC,GAAG,CAAC;QACL,CAAC,GAAG,SAAS,CAAC,MAAM;QACpB,CAAC,GAAG,MAAM,CAAC,MAAM;QACjB,CAAC;QACD,KAAK,CAAC;;IAEV,OAAO,CAAC,GAAG,CAAC,EAAE;MACZ,IAAI,CAAC,IAAI,CAAC,EAAE,EAAA,OAAO,CAAC,CAAC,CAAC,EAAA;MACtB,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC;MAC9B,IAAI,CAAC,KAAK,EAAE,EAAE;QACZ,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1B,KAAK,GAAG,MAAM,CAAC,CAAC,IAAI,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAA,OAAO,CAAC,CAAC,CAAC,EAAA;OAC1D,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE;QACtC,OAAO,CAAC,CAAC,CAAC;OACX;KACF;;IAED,OAAO,CAAC,CAAC;GACV;;EAED,SAAS,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACjC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;GAC3E;;EAED,SAAS,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACvC,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;GACjF;;EAED,SAAS,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IAClC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;GAC5E;;EAED,SAAS,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACrC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;GAC/E;;EAED,SAAS,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IAChC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;GAC1E;;EAED,SAAS,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACzC,OAAO,cAAc,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;GACtD;;EAED,SAAS,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACrC,OAAO,cAAc,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;GAClD;;EAED,SAAS,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;IACrC,OAAO,cAAc,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;GAClD;;EAED,SAAS,kBAAkB,CAAC,CAAC,EAAE;IAC7B,OAAO,oBAAoB,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;GACzC;;EAED,SAAS,aAAa,CAAC,CAAC,EAAE;IACxB,OAAO,eAAe,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;GACpC;;EAED,SAAS,gBAAgB,CAAC,CAAC,EAAE;IAC3B,OAAO,kBAAkB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;GACzC;;EAED,SAAS,WAAW,CAAC,CAAC,EAAE;IACtB,OAAO,aAAa,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;GACpC;;EAED,SAAS,YAAY,CAAC,CAAC,EAAE;IACvB,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;GAC9C;;EAED,SAAS,qBAAqB,CAAC,CAAC,EAAE;IAChC,OAAO,oBAAoB,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;GAC5C;;EAED,SAAS,gBAAgB,CAAC,CAAC,EAAE;IAC3B,OAAO,eAAe,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC;GACvC;;EAED,SAAS,mBAAmB,CAAC,CAAC,EAAE;IAC9B,OAAO,kBAAkB,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;GAC5C;;EAED,SAAS,cAAc,CAAC,CAAC,EAAE;IACzB,OAAO,aAAa,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;GACvC;;EAED,SAAS,eAAe,CAAC,CAAC,EAAE;IAC1B,OAAO,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;GACjD;;EAED,OAAO;IACL,MAAM,EAAE,SAAS,SAAS,EAAE;MAC1B,IAAI,CAAC,GAAG,SAAS,CAAC,SAAS,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;MAC5C,CAAC,CAAC,QAAQ,GAAG,WAAW,EAAE,OAAO,SAAS,CAAC,EAAE,CAAC;MAC9C,OAAO,CAAC,CAAC;KACV;IACD,KAAK,EAAE,SAAS,SAAS,EAAE;MACzB,IAAI,CAAC,GAAG,QAAQ,CAAC,SAAS,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;MAC7C,CAAC,CAAC,QAAQ,GAAG,WAAW,EAAE,OAAO,SAAS,CAAC,EAAE,CAAC;MAC9C,OAAO,CAAC,CAAC;KACV;IACD,SAAS,EAAE,SAAS,SAAS,EAAE;MAC7B,IAAI,CAAC,GAAG,SAAS,CAAC,SAAS,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;MAC/C,CAAC,CAAC,QAAQ,GAAG,WAAW,EAAE,OAAO,SAAS,CAAC,EAAE,CAAC;MAC9C,OAAO,CAAC,CAAC;KACV;IACD,QAAQ,EAAE,SAAS,SAAS,EAAE;MAC5B,IAAI,CAAC,GAAG,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;MACrC,CAAC,CAAC,QAAQ,GAAG,WAAW,EAAE,OAAO,SAAS,CAAC,EAAE,CAAC;MAC9C,OAAO,CAAC,CAAC;KACV;GACF,CAAC;CACH;;AAED,IAAI,IAAI,GAAG,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;IACpC,QAAQ,GAAG,SAAS;IACpB,SAAS,GAAG,IAAI;IAChB,SAAS,GAAG,iCAAiC,CAAC;;AAElD,SAAS,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;EAC/B,IAAI,IAAI,GAAG,KAAK,GAAG,CAAC,GAAG,GAAG,GAAG,EAAE;MAC3B,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE;MACrC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;EAC3B,OAAO,IAAI,GAAG,CAAC,MAAM,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,MAAM,CAAC,CAAC;CAC7F;;AAED,SAAS,OAAO,CAAC,CAAC,EAAE;EAClB,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;CACrC;;AAED,SAAS,QAAQ,CAAC,KAAK,EAAE;EACvB,OAAO,IAAI,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;CACrE;;AAED,SAAS,YAAY,CAAC,KAAK,EAAE;EAC3B,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;EACvC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,EAAA,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,EAAA;EAChD,OAAO,GAAG,CAAC;CACZ;;AAED,SAAS,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EACxC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC9C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CAChD;;AAED,SAAS,qBAAqB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EAC3C,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EACvC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CAChD;;AAED,SAAS,qBAAqB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EAC3C,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EACvC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CAChD;;AAED,SAAS,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EACnC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC9C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CAChD;;AAED,SAAS,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EAC/B,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC9C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CAC7E;;AAED,SAAS,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EAC/B,IAAI,CAAC,GAAG,+BAA+B,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EACrE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CAC9E;;AAED,SAAS,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EACtC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC9C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CACnD;;AAED,SAAS,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EACrC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC9C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CAChD;;AAED,SAAS,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EACpC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC9C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CACzD;;AAED,SAAS,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EACjC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC9C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CAChD;;AAED,SAAS,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EAClC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC9C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CAChD;;AAED,SAAS,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EAClC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC9C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CAChD;;AAED,SAAS,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EACvC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC9C,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;CAChD;;AAED,SAAS,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;EACzC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;EAC/C,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;CACjC;;AAED,SAAS,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE;EAC9B,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC/B;;AAED,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE;EAC1B,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAChC;;AAED,SAAS,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE;EAC1B,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC3C;;AAED,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE;EAC7B,OAAO,GAAG,CAAC,CAAC,GAAGC,GAAO,CAAC,KAAK,CAACC,IAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACrD;;AAED,SAAS,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE;EAChC,OAAO,GAAG,CAAC,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACvC;;AAED,SAAS,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE;EAC/B,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACpC;;AAED,SAAS,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE;EAC3B,OAAO,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAClC;;AAED,SAAS,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE;EAC3B,OAAO,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAClC;;AAED,SAAS,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE;EACpC,OAAO,GAAG,CAACC,MAAU,CAAC,KAAK,CAACD,IAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACpD;;AAED,SAAS,mBAAmB,CAAC,CAAC,EAAE;EAC9B,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;CACnB;;AAED,SAAS,sBAAsB,CAAC,CAAC,EAAE,CAAC,EAAE;EACpC,OAAO,GAAG,CAACE,MAAU,CAAC,KAAK,CAACF,IAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACpD;;AAED,SAAS,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE;EACxB,OAAO,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACzC;;AAED,SAAS,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE;EAC5B,OAAO,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC3C;;AAED,SAAS,UAAU,CAAC,CAAC,EAAE;EACrB,IAAI,CAAC,GAAG,CAAC,CAAC,iBAAiB,EAAE,CAAC;EAC9B,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC/B,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC;QACvB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;CAC3B;;AAED,SAAS,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE;EACjC,OAAO,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAClC;;AAED,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE;EAC7B,OAAO,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACnC;;AAED,SAAS,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE;EAC7B,OAAO,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC9C;;AAED,SAAS,kBAAkB,CAAC,CAAC,EAAE,CAAC,EAAE;EAChC,OAAO,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACnD;;AAED,SAAS,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE;EACnC,OAAO,GAAG,CAAC,CAAC,CAAC,kBAAkB,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC1C;;AAED,SAAS,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE;EAClC,OAAO,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACvC;;AAED,SAAS,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE;EAC9B,OAAO,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACrC;;AAED,SAAS,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE;EAC9B,OAAO,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CACrC;;AAED,SAAS,yBAAyB,CAAC,CAAC,EAAE,CAAC,EAAE;EACvC,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAClD;;AAED,SAAS,sBAAsB,CAAC,CAAC,EAAE;EACjC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;CACtB;;AAED,SAAS,yBAAyB,CAAC,CAAC,EAAE,CAAC,EAAE;EACvC,OAAO,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAClD;;AAED,SAAS,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE;EAC3B,OAAO,GAAG,CAAC,CAAC,CAAC,cAAc,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC5C;;AAED,SAAS,iBAAiB,CAAC,CAAC,EAAE,CAAC,EAAE;EAC/B,OAAO,GAAG,CAAC,CAAC,CAAC,cAAc,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;CAC9C;;AAED,SAAS,aAAa,GAAG;EACvB,OAAO,OAAO,CAAC;CAChB;;AAED,SAAS,oBAAoB,GAAG;EAC9B,OAAO,GAAG,CAAC;CACZ;;AC9gBD,IAAIG,QAAM,CAAC;AACX,AAAO,IAAI,UAAU,CAAC;AACtB,AAAO,IAAI,SAAS,CAAC;AACrB,AAAO,IAAI,SAAS,CAAC;AACrB,AAAO,IAAI,QAAQ,CAAC;;AAEpB,aAAa,CAAC;EACZ,QAAQ,EAAE,QAAQ;EAClB,IAAI,EAAE,YAAY;EAClB,IAAI,EAAE,cAAc;EACpB,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;EACrB,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,CAAC;EACpF,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;EAC5D,MAAM,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC;EAClI,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;CAClG,CAAC,CAAC;;AAEH,AAAe,SAAS,aAAa,CAAC,UAAU,EAAE;EAChDA,QAAM,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;EAClC,UAAU,GAAGA,QAAM,CAAC,MAAM,CAAC;EAC3B,SAAS,GAAGA,QAAM,CAAC,KAAK,CAAC;EACzB,SAAS,GAAGA,QAAM,CAAC,SAAS,CAAC;EAC7B,QAAQ,GAAGA,QAAM,CAAC,QAAQ,CAAC;EAC3B,OAAOA,QAAM,CAAC;CACf;;ACxBM,IAAI,YAAY,GAAG,uBAAuB,CAAC;;AAElD,SAAS,eAAe,CAAC,IAAI,EAAE;EAC7B,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;CAC3B;;AAED,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW;MACpC,eAAe;MACf,SAAS,CAAC,YAAY,CAAC,CAAC,AAE9B,AAAyB;;ACTzB,SAAS,cAAc,CAAC,MAAM,EAAE;EAC9B,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;EAC5B,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;CAClC;;AAED,IAAI,QAAQ,GAAG,CAAC,IAAI,IAAI,CAAC,0BAA0B,CAAC;MAC9C,cAAc;MACd,QAAQ,CAAC,YAAY,CAAC,CAAC,AAE7B,AAAwB;;ACVxB,iBAAe,SAAS,GAAG,EAAE,IAAI,EAAE;;IAE/B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;;;IAGlC,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;MAClC,IAAI,CAAC,GAAG,GAAG,qBAAqB,CAAC;KAClC,MAAM,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;MACpB,IAAI,CAAC,GAAG,GAAG,qBAAqB,GAAG,IAAI,CAAC,WAAW,CAAC;KACrD;IACD,IAAI,CAAC,SAAS,GAAG,qBAAqB,GAAG,IAAI,CAAC,UAAU,CAAC;;IAEzD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,GAAG,gBAAgB,CAAA;;;;IAIjF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;;;IAGlC,IAAI,IAAI,CAAC,aAAa,CAAC;MACrB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC;MACtD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;KAChD;;IAED,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;IACnF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;;IAE7E,IAAI,CAAC,gBAAgB,CAAA;IACrBxC,IAAI,GAAG,GAAG,UAAU,CAAC,0BAA0B,CAAC,CAAC;IACjDA,IAAI,MAAM,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACzGA,IAAI,OAAO,GAAG,UAAC,CAAC,EAAE,EAAK,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;IACtD,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAChD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;IACtD,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;IACjD,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;IACvE,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IAChE,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;IAE5C,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;MAC5B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,UAAU,CAAC;KAClE,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;MACpC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;KACxF,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;MACpC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA;KACpD;;IAED,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC;MACpD,OAAO,MAAM,CAAC,QAAQ,GAAG,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC;KAClD,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;IAEjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,UAAU,CAAC;;CAEvJ,CAAA;;;;ACvDD;;;;;;;;AAQA;;;;;AAOA,IAAI,eAAe,GAAG,SAAS,CAAC;;;;;;;AAOhC,WAAc,GAAG,UAAU,CAAC;;;;;;;;;;AAU5B,SAAS,UAAU,CAAC,MAAM,EAAE;EAC1B,IAAI,GAAG,GAAG,EAAE,GAAG,MAAM,CAAC;EACtB,IAAI,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;EAEtC,IAAI,CAAC,KAAK,EAAE;IACV,OAAO,GAAG,CAAC;GACZ;;EAED,IAAI,MAAM,CAAC;EACX,IAAI,IAAI,GAAG,EAAE,CAAC;EACd,IAAI,KAAK,GAAG,CAAC,CAAC;EACd,IAAI,SAAS,GAAG,CAAC,CAAC;;EAElB,KAAK,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;IACrD,QAAQ,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC;MAC3B,KAAK,EAAE;QACL,MAAM,GAAG,QAAQ,CAAC;QAClB,MAAM;MACR,KAAK,EAAE;QACL,MAAM,GAAG,OAAO,CAAC;QACjB,MAAM;MACR,KAAK,EAAE;QACL,MAAM,GAAG,OAAO,CAAC;QACjB,MAAM;MACR,KAAK,EAAE;QACL,MAAM,GAAG,MAAM,CAAC;QAChB,MAAM;MACR,KAAK,EAAE;QACL,MAAM,GAAG,MAAM,CAAC;QAChB,MAAM;MACR;QACE,SAAS;KACZ;;IAED,IAAI,SAAS,KAAK,KAAK,EAAE;MACvB,IAAI,IAAI,GAAG,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;KACzC;;IAED,SAAS,GAAG,KAAK,GAAG,CAAC,CAAC;IACtB,IAAI,IAAI,MAAM,CAAC;GAChB;;EAED,OAAO,SAAS,KAAK,KAAK;MACtB,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,SAAS,EAAE,KAAK,CAAC;MACtC,IAAI,CAAC;CACV;;AC1ED,WAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjCA,IAAI,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;EACrCA,IAAI,UAAU,GAAG,UAAA,IAAI,EAAC,SAAG,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,GAAA,CAAC;;EAEhD,SAAS,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE;IAClC,IAAI,OAAO,IAAI,KAAK;MAClB,EAAA,UAAU,CAAC,CAAA,mBAAiB,GAAE,IAAI,kBAAY,IAAEyC,OAAM,CAAC,OAAO,CAAC,CAAA,WAAM,CAAC,CAAC,CAAC,EAAA;GAC3E;;EAED,UAAU,CAAC,CAAA,mJAEqD,GAAE,OAAO,0JAE3C,IAAE,IAAI,CAAC,GAAG,CAAA,qBAC/B,IAAE,IAAI,CAAC,KAAK,CAAA,iBACrB,CAAC,CAAC,CAAC;;EAEH,UAAU,CAAC,CAAA,4HAE4D,IAAE,IAAI,CAAC,aAAa,CAAA,MAAE,IAAE,IAAI,CAAC,oBAAoB,CAAA,MAAE,IAAE,IAAI,CAAC,kBAAkB,CAAA,wFAC9E,IAAE,IAAI,CAAC,WAAW,CAAA,cACvF,CAAC,CAAC,CAAC;EACH,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,UAAC,CAAC,EAAE;IACvB,UAAU,CAAC,IAAI,EAAE,CAAA,sDAC0B,IAAE,CAAC,CAAC,SAAS,CAAA,MAAE,IAAE,CAAC,CAAC,QAAQ,CAAA,UAAK,CAAC,CAAC,CAAA;GAC9E,CAAC,CAAC;;EAEH,UAAU,CAAC,CAAA,kLAG0B,IAAE,IAAI,CAAC,KAAK,CAAA,2DACN,IAAE,IAAI,CAAC,WAAW,CAAA,kDAC1B,IAAE,IAAI,CAAC,GAAG,CAAA,qDACR,IAAE,IAAI,CAAC,UAAU,CAAA,gIAGtD,CAAC,CAAC,CAAC;;EAEH,UAAU,CAAC,CAAA,4KAG2B,IAAE,IAAI,CAAC,KAAK,CAAA,2DACN,IAAE,IAAI,CAAC,WAAW,CAAA,mDAC1B,IAAE,IAAI,CAAC,GAAG,CAAA,qDACR,IAAE,IAAI,CAAC,UAAU,CAAA,+HAGvD,CAAC,CAAC,CAAC;;;EAGH,IAAI,IAAI,CAAC,SAAS,CAAC;IACjB,UAAU,CAAC,wFACqE,CAAE,CAAC;;IAEnF,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;;IAEnC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,SAAS,EAAE,CAAA,GAAE,IAAE,IAAI,CAAC,SAAS,CAAA,CAAE,GAAG,SAAS,CAAC,CAAC;IAC7E,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;;IAE/BzC,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;IACjC,IAAI,CAAC,wBAAwB,EAAE,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;IACpE,IAAI,CAAC,yBAAyB,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IACtD,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,oBAAoB,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAC9C,IAAI,CAAC,kCAAkC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;;IAEnD,IAAI,IAAI,CAAC,aAAa,CAAC;MACrBA,IAAI,OAAO,GAAG,UAAC,CAAC,EAAE,EAAK,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;MACtD,IAAI,CAAC,sBAAsB,EAAE,CAAA,CAAG,IAAI,CAAC,aAAa,CAAA,MAAE,IAAE,IAAI,CAAC,oBAAoB,CAAA,MAAE,IAAE,IAAI,CAAC,kBAAkB,CAAA,CAAE,CAAC,CAAC;;MAE9G,IAAI,CAAC,2BAA2B,EAAE,CAAA,CAAG,IAAI,CAAC,aAAa,CAAA,MAAE,IAAE,IAAI,CAAC,oBAAoB,CAAA,MAAE,IAAE,IAAI,CAAC,kBAAkB,CAAA,CAAE,CAAC,CAAC;KACpH;;IAED,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAC,CAAC,EAAE;QAC7B,IAAI,CAAC,iBAAiB,EAAE,CAAA,CAAG,CAAC,CAAC,QAAQ,CAAA,OAAG,IAAE,CAAC,CAAC,SAAS,CAAA,CAAE,CAAC,CAAC;QACzD,IAAI,CAAC,6BAA6B,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;KACtD,CAAC,CAAC;;IAEH,IAAI,IAAI,CAAC,SAAS,EAAE;MAClB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,UAAA,GAAG,EAAC;QACzBA,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAC/B,GAAG,CAAC,CAAC,EAAE;UACL,OAAO,CAAC,IAAI,CAAC,kCAAkC,GAAG,GAAG,CAAC,CAAA;SACvD,MAAM;UACL,IAAI,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,CAAA;SAC3E,AAAC;OACH,CAAC,CAAC;KACJ;GACF;CACF,CAAA;;AAED,SAAS,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE;EAC5B,EAAE,CAAC,SAAS,IAAI,IAAI,CAAC;CACtB;;AAED,SAAS,qBAAqB,CAAC,GAAG,CAAC;;EAEjC,IAAI,OAAO,GAAG,iBAAgB,IAAE,GAAG,CAAC,KAAK,CAAA,MAAE,CAAE;;EAE7CA,IAAI,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAA,IAAI,EAAC;IACxD,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACnB,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;MAC1B,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;MACrC,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;KACxC,MAAM;MACL,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;MAC/C,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACpD;IACD,OAAO,IAAI,kBAAiB,GAAE,MAAM,MAAE,GAAE,IAAI,MAAE,CAAE;GACjD,CAAC,CAAC;;EAEH,IAAI,MAAM,IAAI,GAAG,EAAE;IACjB,OAAO,IAAI,4BAA2B,IAAE,GAAG,CAAC,IAAI,CAAA,MAAE,CAAE;GACrD;;EAED,IAAI,eAAe,GAAG,mDAAmD,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EACxF,eAAe,GAAG,eAAe,IAAI,8CAA8C,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;EAClG,eAAe,GAAG,eAAe,IAAI,uCAAuC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;EAC/F,IAAI,eAAe,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC;IACxC,OAAO,IAAI,oBAAmB,IAAE,eAAe,CAAC,CAAC,CAAC,CAAA,MAAE,CAAE;IACtD,OAAO,OAAO,CAAC;GAChB;EACD,IAAI,SAAS,IAAI,GAAG,CAAC;IACnB,OAAO,IAAI,yBAAwB,IAAE,GAAG,CAAC,OAAO,CAAA,MAAE,CAAE;GACrD;EACD,IAAI,QAAQ,IAAI,GAAG,EAAE;MACjB,OAAO,IAAI,kBAAiB,IAAE,GAAG,CAAC,MAAM,CAAA,MAAE,CAAE;GAC/C;EACD,IAAI,OAAO,IAAI,GAAG,IAAI,QAAQ,IAAI,GAAG,CAAC;MAClC,OAAO,IAAI,kBAAiB,IAAE,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,CAAA,MAAE,CAAE;GAC5D;;;EAGD,OAAO,OAAO,CAAC;CAChB;;AC3ID0C,IAAMC,MAAI,GAAG,iQAYb,CAAE;;AAEF,aAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjC3C,IAAI,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;EAC5C,MAAM,CAAC,SAAS,GAAG2C,MAAI,CAAC;EACxB3C,IAAI,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;EAClC,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;EACrC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW;IAC1C,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;GAC/B,CAAC,CAAC;CACJ,CAAA;;;;;;;;;;ACfD,CAAC,SAAS,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE;EACzC,IAAI,QAAc,KAAK,QAAQ,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE;IAClF,OAAO,CAAC,OAAO,CAAC,CAAC;GAClB,MAAM,IAAI,OAAO4C,SAAM,KAAK,UAAU,IAAIA,SAAM,CAAC,GAAG,EAAE;IACrDA,SAAM,CAAC,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;GAC9B,MAAM;IACL,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;GAC1B;CACF,CAACtC,cAAI,EAAE,SAAS,eAAe,EAAE,QAAQ,EAAE;;EAE1C,IAAI,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;EAC/C,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,SAAS,eAAe,EAAE,MAAM,EAAE;IAC/D,OAAO,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,gBAAgB,CAAC;GACzD,CAAC;;EAEF,SAAS,UAAU,EAAE,MAAM,EAAE;IAC3B,OAAO,OAAO,MAAM,KAAK,UAAU,CAAC;GACrC;;;;;;EAMD,SAAS,OAAO,EAAE,GAAG,EAAE;IACrB,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,GAAG,OAAO,GAAG,CAAC;GAC5C;;EAED,SAAS,YAAY,EAAE,MAAM,EAAE;IAC7B,OAAO,MAAM,CAAC,OAAO,CAAC,6BAA6B,EAAE,MAAM,CAAC,CAAC;GAC9D;;;;;;EAMD,SAAS,WAAW,EAAE,GAAG,EAAE,QAAQ,EAAE;IACnC,OAAO,GAAG,IAAI,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,CAAC;GACpE;;;;EAID,IAAI,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;EACvC,SAAS,UAAU,EAAE,EAAE,EAAE,MAAM,EAAE;IAC/B,OAAO,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;GACpC;;EAED,IAAI,UAAU,GAAG,IAAI,CAAC;EACtB,SAAS,YAAY,EAAE,MAAM,EAAE;IAC7B,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;GACxC;;EAED,IAAI,SAAS,GAAG;IACd,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;IACb,GAAG,EAAE,QAAQ;GACd,CAAC;;EAEF,SAAS,UAAU,EAAE,MAAM,EAAE;IAC3B,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,SAAS,aAAa,EAAE,CAAC,EAAE;MACvE,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;KACrB,CAAC,CAAC;GACJ;;EAED,IAAI,OAAO,GAAG,KAAK,CAAC;EACpB,IAAI,OAAO,GAAG,KAAK,CAAC;EACpB,IAAI,QAAQ,GAAG,MAAM,CAAC;EACtB,IAAI,OAAO,GAAG,OAAO,CAAC;EACtB,IAAI,KAAK,GAAG,oBAAoB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;EAwBjC,SAAS,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE;IACtC,IAAI,CAAC,QAAQ;MACX,EAAA,OAAO,EAAE,CAAC,EAAA;;IAEZ,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,IAAI,QAAQ,GAAG,KAAK,CAAC;;;;IAIrB,SAAS,UAAU,IAAI;MACrB,IAAI,MAAM,IAAI,CAAC,QAAQ,EAAE;QACvB,OAAO,MAAM,CAAC,MAAM;UAClB,EAAA,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,EAAA;OAC/B,MAAM;QACL,MAAM,GAAG,EAAE,CAAC;OACb;;MAED,MAAM,GAAG,KAAK,CAAC;MACf,QAAQ,GAAG,KAAK,CAAC;KAClB;;IAED,IAAI,YAAY,EAAE,YAAY,EAAE,cAAc,CAAC;IAC/C,SAAS,WAAW,EAAE,aAAa,EAAE;MACnC,IAAI,OAAO,aAAa,KAAK,QAAQ;QACnC,EAAA,aAAa,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAA;;MAElD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;QACvD,EAAA,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,aAAa,CAAC,CAAC,EAAA;;MAEpD,YAAY,GAAG,IAAI,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;MACnE,YAAY,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MACnE,cAAc,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAC5E;;IAED,WAAW,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;;IAEnC,IAAI,OAAO,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;;IAEpC,IAAI,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,WAAW,CAAC;IAChD,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE;MACrB,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC;;;MAGpB,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;;MAExC,IAAI,KAAK,EAAE;QACT,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,WAAW,EAAE,EAAE,CAAC,EAAE;UAChE,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;;UAEtB,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE;YACrB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;WAC5B,MAAM;YACL,QAAQ,GAAG,IAAI,CAAC;WACjB;;UAED,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC;UAC/C,KAAK,IAAI,CAAC,CAAC;;;UAGX,IAAI,GAAG,KAAK,IAAI;YACd,EAAA,UAAU,EAAE,CAAC,EAAA;SAChB;OACF;;;MAGD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;QAC7B,EAAA,MAAM,EAAA;;MAER,MAAM,GAAG,IAAI,CAAC;;;MAGd,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC;MACrC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;;MAGtB,IAAI,IAAI,KAAK,GAAG,EAAE;QAChB,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvB,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;OACjC,MAAM,IAAI,IAAI,KAAK,GAAG,EAAE;QACvB,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtB,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAChC,IAAI,GAAG,GAAG,CAAC;OACZ,MAAM;QACL,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;OACzC;;;MAGD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC;QAC7B,EAAA,MAAM,IAAI,KAAK,CAAC,kBAAkB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAA;;MAEpD,KAAK,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC;MAC5C,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;MAEnB,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE;QAChC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;OACtB,MAAM,IAAI,IAAI,KAAK,GAAG,EAAE;;QAEvB,WAAW,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;;QAE7B,IAAI,CAAC,WAAW;UACd,EAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,CAAC,CAAC,EAAA;;QAElE,IAAI,WAAW,CAAC,CAAC,CAAC,KAAK,KAAK;UAC1B,EAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,KAAK,CAAC,CAAC,EAAA;OAC5E,MAAM,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE;QAC1D,QAAQ,GAAG,IAAI,CAAC;OACjB,MAAM,IAAI,IAAI,KAAK,GAAG,EAAE;;QAEvB,WAAW,CAAC,KAAK,CAAC,CAAC;OACpB;KACF;;;IAGD,WAAW,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;;IAE7B,IAAI,WAAW;MACb,EAAA,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAA;;IAEjF,OAAO,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;GACzC;;;;;;EAMD,SAAS,YAAY,EAAE,MAAM,EAAE;IAC7B,IAAI,cAAc,GAAG,EAAE,CAAC;;IAExB,IAAI,KAAK,EAAE,SAAS,CAAC;IACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,SAAS,EAAE,EAAE,CAAC,EAAE;MAC7D,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;;MAElB,IAAI,KAAK,EAAE;QACT,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE;UAC/D,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;UACzB,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;SACzB,MAAM;UACL,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;UAC3B,SAAS,GAAG,KAAK,CAAC;SACnB;OACF;KACF;;IAED,OAAO,cAAc,CAAC;GACvB;;;;;;;;EAQD,SAAS,UAAU,EAAE,MAAM,EAAE;IAC3B,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,IAAI,SAAS,GAAG,YAAY,CAAC;IAC7B,IAAI,QAAQ,GAAG,EAAE,CAAC;;IAElB,IAAI,KAAK,EAAE,OAAO,CAAC;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,SAAS,EAAE,EAAE,CAAC,EAAE;MAC7D,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;;MAElB,QAAQ,KAAK,CAAC,CAAC,CAAC;QACd,KAAK,GAAG,CAAC;QACT,KAAK,GAAG;UACN,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;UACtB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;UACrB,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;UAC1B,MAAM;QACR,KAAK,GAAG;UACN,OAAO,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;UACzB,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;UACtB,SAAS,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC;UAClF,MAAM;QACR;UACE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;OACzB;KACF;;IAED,OAAO,YAAY,CAAC;GACrB;;;;;;EAMD,SAAS,OAAO,EAAE,MAAM,EAAE;IACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACrB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;IACnB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;GACd;;;;;EAKD,OAAO,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI;IACtC,OAAO,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;GACzB,CAAC;;;;;;EAMF,OAAO,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,EAAE,EAAE;IAC1C,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;;IAEhC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC;MAC7B,EAAA,OAAO,EAAE,CAAC,EAAA;;IAEZ,IAAI,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;;IAEtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC/C,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC;;IAE1B,OAAO,MAAM,CAAC;GACf,CAAC;;;;;;EAMF,OAAO,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,SAAS,EAAE,EAAE,EAAE;IACpD,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC;;IAExC,QAAQ,KAAK;MACX,KAAK,CAAC,CAAC;QACL,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;QAClB,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QACf,MAAM;MACR,KAAK,CAAC;QACJ,KAAK,GAAG,EAAE,CAAC;QACX,MAAM;MACR;QACE,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;KAC1C;;IAED,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC;;IAEzB,OAAO,KAAK,CAAC;GACd,CAAC;;;;;;EAMF,SAAS,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE;IACrC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IAChC,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC;GAC7B;;;;;;EAMD,OAAO,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE;IAC5C,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;GAChC,CAAC;;;;;;EAMF,OAAO,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,IAAI,EAAE;IAChD,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;;IAEvB,IAAI,KAAK,CAAC;IACV,IAAI,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;MAC9B,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;KACrB,MAAM;MACL,IAAI,OAAO,GAAG,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,GAAG,KAAK,CAAC;;MAEpD,OAAO,OAAO,EAAE;QACd,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;UACzB,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;UACrB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;UACxB,KAAK,GAAG,CAAC,CAAC;;;;;;;;;;;;;UAaV,OAAO,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE;YAC5C,IAAI,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC;cAC5B,EAAA,SAAS,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAA;;YAE/C,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;WAC/B;SACF,MAAM;UACL,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;UAC3B,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;SAC7C;;QAED,IAAI,SAAS;UACX,EAAA,MAAM,EAAA;;QAER,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;OAC1B;;MAED,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;KACrB;;IAED,IAAI,UAAU,CAAC,KAAK,CAAC;MACnB,EAAA,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAA;;IAEhC,OAAO,KAAK,CAAC;GACd,CAAC;;;;;;;EAOF,SAAS,MAAM,IAAI;IACjB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;GACjB;;;;;EAKD,MAAM,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,UAAU,IAAI;IACnD,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;GACjB,CAAC;;;;;;EAMF,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE;IACvD,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACvB,IAAI,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;;IAE7B,IAAI,MAAM,IAAI,IAAI;MAChB,EAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,EAAA;;IAE3D,OAAO,MAAM,CAAC;GACf,CAAC;;;;;;;;;;;EAWF,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;IACnE,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAClC,IAAI,OAAO,GAAG,CAAC,IAAI,YAAY,OAAO,IAAI,IAAI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;GAC/D,CAAC;;;;;;;;;;;EAWF,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE;;;IAClG,IAAI,MAAM,GAAG,EAAE,CAAC;;IAEhB,IAAI,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,SAAS,EAAE,EAAE,CAAC,EAAE;MAC7D,KAAK,GAAG,SAAS,CAAC;MAClB,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;MAClB,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;;MAElB,IAAI,MAAM,KAAK,GAAG,EAAE,EAAA,KAAK,GAAGA,MAAI,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC,EAAA;WACtF,IAAI,MAAM,KAAK,GAAG,EAAE,EAAA,KAAK,GAAGA,MAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC,EAAA;WAC5F,IAAI,MAAM,KAAK,GAAG,EAAE,EAAA,KAAK,GAAGA,MAAI,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC,EAAA;WAC3F,IAAI,MAAM,KAAK,GAAG,EAAE,EAAA,KAAK,GAAGA,MAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,EAAA;WAChE,IAAI,MAAM,KAAK,MAAM,EAAE,EAAA,KAAK,GAAGA,MAAI,CAAC,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,EAAA;WACjE,IAAI,MAAM,KAAK,MAAM,EAAE,EAAA,KAAK,GAAGA,MAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAA;;MAEzD,IAAI,KAAK,KAAK,SAAS;QACrB,EAAA,MAAM,IAAI,KAAK,CAAC,EAAA;KACnB;;IAED,OAAO,MAAM,CAAC;GACf,CAAC;;EAEF,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE;;;IACnG,IAAI,IAAI,GAAG,IAAI,CAAC;IAChB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;;;;IAIrC,SAAS,SAAS,EAAE,QAAQ,EAAE;MAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;KACjD;;IAED,IAAI,CAAC,KAAK,EAAE,EAAA,OAAO,EAAA;;IAEnB,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE;MAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,WAAW,EAAE,EAAE,CAAC,EAAE;QAChE,MAAM,IAAIA,MAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;OAC3F;KACF,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;MAC9F,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;KACxF,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE;MAC5B,IAAI,OAAO,gBAAgB,KAAK,QAAQ;QACtC,EAAA,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC,EAAA;;;MAGpF,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;;MAExF,IAAI,KAAK,IAAI,IAAI;QACf,EAAA,MAAM,IAAI,KAAK,CAAC,EAAA;KACnB,MAAM;MACL,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;KAC5E;IACD,OAAO,MAAM,CAAC;GACf,CAAC;;EAEF,MAAM,CAAC,SAAS,CAAC,cAAc,GAAG,SAAS,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE;IACrG,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;;;;IAIrC,IAAI,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;MAClD,EAAA,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC,EAAA;GAC3E,CAAC;;EAEF,MAAM,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE;IACjF,IAAI,CAAC,QAAQ,EAAE,EAAA,OAAO,EAAA;;IAEtB,IAAI,KAAK,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,IAAI,KAAK,IAAI,IAAI;MACf,EAAA,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAA;GACzE,CAAC;;EAEF,MAAM,CAAC,SAAS,CAAC,cAAc,GAAG,SAAS,cAAc,EAAE,KAAK,EAAE,OAAO,EAAE;IACzE,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,IAAI,KAAK,IAAI,IAAI;MACf,EAAA,OAAO,KAAK,CAAC,EAAA;GAChB,CAAC;;EAEF,MAAM,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE;IACrE,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACrC,IAAI,KAAK,IAAI,IAAI;MACf,EAAA,OAAO,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAA;GACjC,CAAC;;EAEF,MAAM,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,QAAQ,EAAE,KAAK,EAAE;IACpD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;GACjB,CAAC;;EAEF,QAAQ,CAAC,IAAI,GAAG,aAAa,CAAC;EAC9B,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;EAC3B,QAAQ,CAAC,IAAI,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;;;EAG/B,IAAI,aAAa,GAAG,IAAI,MAAM,EAAE,CAAC;;;;;EAKjC,QAAQ,CAAC,UAAU,GAAG,SAAS,UAAU,IAAI;IAC3C,OAAO,aAAa,CAAC,UAAU,EAAE,CAAC;GACnC,CAAC;;;;;;;EAOF,QAAQ,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC/C,OAAO,aAAa,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;GAC5C,CAAC;;;;;;EAMF,QAAQ,CAAC,MAAM,GAAG,SAAS,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC3D,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;MAChC,MAAM,IAAI,SAAS,CAAC,kDAAkD;0BAClD,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,2BAA2B;0BACzD,wDAAwD,CAAC,CAAC;KAC/E;;IAED,OAAO,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;GACvD,CAAC;;;;EAIF,QAAQ,CAAC,OAAO,GAAG,SAAS,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;;;IAGnE,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;;IAEvD,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE;MACpB,IAAI,CAAC,MAAM,CAAC,CAAC;KACd,MAAM;MACL,OAAO,MAAM,CAAC;KACf;GACF,CAAC;;;;EAIF,QAAQ,CAAC,MAAM,GAAG,UAAU,CAAC;;;EAG7B,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;EAC3B,QAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;EAC3B,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;;EAEzB,OAAO,QAAQ,CAAC;CACjB,CAAC,EAAE;;;ACnnBJoC,IAAMC,MAAI,GAAG,4lEA8Gb,CAAE;;AAEFD,IAAM,QAAQ,GAAG,s7BA+BjB,CAAA;;AAEA,aAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjC1C,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;EACxC,IAAI,EAAE,EAAE;IACN,EAAE,CAAC,SAAS,GAAG2C,MAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;GACvD;CACF,CAAA;;ACxJDD,IAAMC,MAAI,GAAG,uzDAyDb,CAAE;;AAEF,eAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjC3C,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,CAAA;EACzC,IAAI,EAAE,EAAE;IACNA,IAAI,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC;IAC3B,EAAE,CAAC,SAAS,GAAG2C,MAAI,CAAC;IACpB3C,IAAI,GAAG,GAAG,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,CAAA;;IAExC,IAAI,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE;MAC9B,GAAG,CAAC,SAAS,GAAG,6CAA4C,GAAI,GAAG,CAAC,SAAS,CAAC;KAC/E;;IAED,GAAG,CAAC,SAAS,GAAG,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC;IACxC,IAAI,IAAI,CAAC,uBAAuB,EAAE;MAChC,GAAG,CAAC,SAAS,GAAG,+BAA6B,IAAE,IAAI,CAAC,uBAAuB,CAAA,8EAAyE,GAAI,GAAG,CAAC,SAAS,CAAC;KACvK;;IAED,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAClE,EAAE,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC,CAAC;IACxF,EAAE,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,mBAAmB,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,cAAc,GAAG,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;IACjJ,IAAI,MAAM,IAAI,WAAW,GAAG,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QAC1C,MAAM,IAAI,cAAc,GAAG,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QACvD,MAAM,IAAI,aAAa,GAAG,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;QAC9C,MAAM,IAAI,0BAA0B,CAAC;QACrC,MAAM,IAAI,YAAY,GAAG,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QACrD,MAAM,IAAI,YAAY,GAAG,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;QAC1C,MAAM,IAAI,GAAG,CAAC;IAClB,EAAE,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,WAAW,GAAG,MAAM,CAAC;GACzD;;CAEF,CAAA;;ACxFD,eAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjCA,IAAI,GAAG,GAAG,gmBAuBV,CAAE;;EAEFA,IAAI,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;EACvC,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC;EACxB,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;;EAE7CA,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;;;;;;;;EAQ/B,IAAI,QAAQ,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;EAC/D,QAAQ,CAAC,OAAO,CAAC,UAAC,EAAE,CAAC,CAAC,EAAE;IACtB,IAAI,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,GAAG,EAAE;MACP,IAAI,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;MAC1B,IAAI,WAAW,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;MAC1C,IAAI,cAAc,GAAG,EAAE,CAAC;MACxB,IAAI,CAAC,GAAG,CAAC,UAAC,GAAG,CAAC,CAAC,EAAE;QACf,IAAI,CAAC,CAAC,CAAC,EAAE,EAAA,cAAc,IAAI,UAAU,CAAC,EAAA;QACtC,cAAc,IAAI,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;OACtD,CAAC,CAAC;MACH,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;MACtD,IAAI,WAAW,GAAG,EAAE,CAAC,SAAS,CAAC;MAC/B,IAAI,WAAW,IAAI,EAAE,EAAE,EAAA,WAAW,IAAI,GAAG,CAAC,EAAA;MAC1C,EAAE,CAAC,SAAS,GAAG,sBAAoB,GAAE,CAAC,qBAAe,GAAE,cAAc,QAAG,GAAE,WAAW,qCAA+B,GAAE,WAAW,mBAAe,CAAE;KACnJ;GACF,CAAC,CAAC;;EAEHA,IAAI,KAAK,GAAG,GAAG,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;EACjD,IAAI,KAAK,EAAE;IACTA,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACjC,SAAS,CAAC,OAAO,CAAC,UAAA,GAAG,EAAC;MACpBA,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;MACjC,EAAE,CAAC,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;MACzD,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;KACpB,CAAC,CAAA;IACF,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;GACvB;;EAED,SAAS,iBAAiB,CAAC,IAAI,CAAC;IAC9B,SAAS,WAAW,CAAC,GAAG,CAAC;MACvB,IAAI,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC;QAC3B,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACtC,OAAO,EAAE,CAAC,CAAC,CAAC;OACb,MAAM;QACL,OAAO,GAAG,CAAC;OACZ;KACF;IACD,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC;GACjD;;EAED,SAAS,gBAAgB,CAAC,IAAI,CAAC;IAC7B,SAAS,WAAW,CAAC,GAAG,CAAC;MACvB,IAAI,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC;QAC3B,IAAI,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACtC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,UAAA,IAAI,EAAC,SAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAA,CAAC,CAAA;QACpD,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACpB,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,EAAA;QACrD,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,EAAA;QACxE,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE,EAAA,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,YAAY,GAAG,IAAI,CAAC,EAAA;OAC9D,MAAM;QACL,OAAO,GAAG,CAAC;OACZ;KACF;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;GACzC;;EAED,SAAS,aAAa,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,CAAC;IAClD,IAAI,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACtCA,IAAI,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,UAAA,IAAI,EAAC;MAChC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;MACnB,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1B,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACrC,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;OACjC,MAAM;QACL,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/C,IAAI,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;OACpD;MACD,IAAI,QAAQ,GAAG,EAAE,CAAC;MAClB,IAAI,MAAM,IAAI,SAAS,EAAE;QACvB,QAAQ,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,UAAA,CAAC,EAAC,SAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAA,CAAC,CAAC;QAC1D,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;OACnC;MACD,OAAO,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC;sBACvB,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;sBACrB,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;KAC3C,CAAC,CAAC;IACH,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;MACpB,IAAI,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;MAC1D,GAAG,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;MACxD,OAAO,GAAG,CAAC;KACZ,MAAM;MACL,OAAO,YAAY,CAAC,CAAC,CAAC,CAAC;KACxB;GACF;;EAED,SAAS,YAAY,CAAC,GAAG,EAAE;IACzB,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,CAAA;IAC/C,IAAI,QAAQ,IAAI,GAAG,CAAC;MAClB,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,CAAC;MACpC,KAAK,GAAG,CAAC,KAAK,IAAI,SAAS,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC;MACjD,IAAI,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;KACvC;IACD,IAAI,OAAO,IAAI,GAAG,CAAC;MACjB,IAAI,IAAI,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAA;KAC7B;IACD,IAAI,IAAI,IAAI,EAAE,EAAE,EAAA,IAAI,IAAI,IAAI,CAAA,EAAA;IAC5B,IAAI,WAAW,IAAI,GAAG,CAAC;MACrB,IAAI,IAAI,GAAG,CAAC,SAAS,CAAC;MACtB,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAA,IAAI,IAAI,GAAG,CAAC,EAAA;KAC7C;IACD,OAAO,IAAI,CAAC;GACb;;EAED,SAAS,WAAW,CAAC,GAAG,CAAC;IACvB,IAAI,KAAK,IAAI,GAAG,CAAC;MACf,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;MAClB,IAAI,WAAW,GAAG,CAAC,6BAA6B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;MAC5D,IAAI,WAAW,IAAI,IAAI,CAAC;QACtB,GAAG,GAAG,uBAAsB,IAAE,WAAW,CAAC,CAAC,CAAC,CAAA,SAAK,CAAE;OACpD;;MAED,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;QAC1B,IAAI,KAAK,GAAG,KAAK,CAAC;OACnB,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE;QACnC,IAAI,KAAK,GAAG,MAAM,CAAC;OACpB;MACD,OAAO,CAAA,mBAAiB,GAAE,GAAG,SAAI,IAAE,KAAK,EAAE,MAAM,CAAA,UAAM,CAAC,CAAC;KACzD;;aAEQ;MACP,OAAO,EAAE,CAAC;KACX;GACF;EACD,SAAS,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC;IAChC,IAAI,KAAK,IAAI,GAAG,EAAE;MAChB,OAAO,CAAA,CAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAA,gCAA2B,IAAE,GAAG,CAAC,GAAG,CAAA,gDAAyC,IAAE,GAAG,CAAC,GAAG,CAAA,SAAK,CAAC,CAAC;KAC1H,MAAM;MACL,OAAO,EAAE,CAAC;KACX;GACF;;EAED,SAAS,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC;IACpC,IAAI,GAAG,CAAC;MACN,IAAI,IAAI,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,OAAO,CAAA;MACvC,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;MAClC,IAAI,IAAI,aAAa,CAAC,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;MACxD,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC;QACvB,IAAI,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,CAAA;OAC7C,MAAM;QACL,IAAI,IAAI,IAAI,CAAA;OACb;MACD,IAAI,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC;MAC1B,IAAI,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;MACxB,OAAO,IAAI;;;;;;;;;;;;KAYZ,MAAM;MACL,OAAO,GAAG,CAAC;KACZ;GACF;;EAED,SAAS,UAAU,CAAC,GAAG,CAAC;IACtB,IAAI,GAAG,CAAC;MACN,IAAI,IAAI,GAAG,EAAE,CAAC;MACd,IAAI,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC;MACnC,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC;MACzB,IAAI,IAAI,MAAM,CAAA;;MAEd,IAAI,KAAK,GAAG,aAAa,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC;MACxD,IAAI,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;;MAErF,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;QACzD,IAAI,IAAI,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC;OAC7B,MAAM;QACL,IAAI,IAAI,KAAK,GAAG,MAAM,GAAG,KAAK,CAAC;OAChC;MACD,OAAO,IAAI,CAAC;KACb,MAAM;MACL,OAAO,GAAG,CAAC;KACZ;GACF;;;;EAID,SAAS,UAAU,CAAC,GAAG,CAAC;IACtB,IAAI,GAAG,CAAC;MACN,IAAI,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;MACtC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,UAAA,IAAI,EAAC,SAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAA,CAAC,CAAA;MACpD,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;MAChC,IAAI,GAAG,GAAG,uCAAuC,CAAA;MACjD,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;KAC1D;;GAEF;CACF,CAAA;;ACzOD,eAAe,SAAS,GAAG,EAAE,IAAI,EAAE;;EAEjC,IAAI,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;EAC3D,IAAI,SAAS,GAAG,EAAE,CAAC;EACnB,MAAM,CAAC,OAAO,CAAC,UAAC,EAAE,CAAC,CAAC,EAAE;IACpB,IAAI,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC;IAC3B,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACb,IAAI,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC;IAClB,IAAI,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACrD,EAAE,CAAC,SAAS,GAAG,kBAAgB,GAAE,GAAG,qBAAe,GAAE,eAAe,iCAA0B,GAAE,CAAC,kBAAc,CAAE;GAClH,CAAC,CAAC;;EAEHA,IAAI,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;EAC7C,IAAI,MAAM,EAAE;IACVA,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACjC,SAAS,CAAC,OAAO,CAAC,UAAA,OAAO,EAAC;MACxBA,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;MACjC,EAAE,CAAC,SAAS,GAAG,OAAO,CAAC;MACvB,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;KACpB,CAAC,CAAA;IACF,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;GACxB;;CAEF,CAAA;;;;;;;;;AClBD,AAAC,CAAC,WAAW;;;;;;AAMb,IAAI,KAAK,GAAG;EACV,OAAO,EAAE,MAAM;EACf,IAAI,EAAE,mBAAmB;EACzB,MAAM,EAAE,IAAI;EACZ,EAAE,EAAE,2BAA2B;EAC/B,OAAO,EAAE,uCAAuC;EAChD,OAAO,EAAE,IAAI;EACb,QAAQ,EAAE,mCAAmC;EAC7C,UAAU,EAAE,oCAAoC;EAChD,IAAI,EAAE,+DAA+D;EACrE,IAAI,EAAE,8EAA8E;EACpF,GAAG,EAAE,mEAAmE;EACxE,KAAK,EAAE,IAAI;EACX,SAAS,EAAE,gEAAgE;EAC3E,IAAI,EAAE,SAAS;CAChB,CAAC;;AAEF,KAAK,CAAC,MAAM,GAAG,iBAAiB,CAAC;AACjC,KAAK,CAAC,IAAI,GAAG,4CAA4C,CAAC;AAC1D,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;GACnC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC;IACrB,CAAC;;AAEL,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;GAC7B,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC;GACtB,IAAI,EAAE,uCAAuC,CAAC;GAC9C,KAAK,EAAE,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;IACzC,CAAC;;AAEL,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC;GACzC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;IAChB,CAAC;;AAEL,KAAK,CAAC,IAAI,GAAG,QAAQ;IACjB,oDAAoD;IACpD,qDAAqD;IACrD,yDAAyD,CAAC;;AAE9D,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;GAC7B,SAAS,EAAE,iBAAiB,CAAC;GAC7B,QAAQ,EAAE,sBAAsB,CAAC;GACjC,SAAS,EAAE,mCAAmC,CAAC;GAC/C,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC;IAClB,CAAC;;AAEL,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;GACvC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;GACf,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC;GACzB,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC;GAC3B,YAAY,EAAE,KAAK,CAAC,UAAU,CAAC;GAC/B,KAAK,EAAE,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC;GACxB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;IAChB,CAAC;;;;;;AAML,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;;;;;;AAMhC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE;EAClC,MAAM,EAAE,4DAA4D;EACpE,SAAS,EAAE,GAAG;EACd,OAAO,EAAE,uCAAuC;CACjD,CAAC,CAAC;;AAEH,KAAK,CAAC,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;GAC3C,KAAK,EAAE,KAAK;MACT,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,GAAG;MACnD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC;IAChD,CAAC;;;;;;AAML,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE;EAClC,OAAO,EAAE,+DAA+D;EACxE,KAAK,EAAE,2DAA2D;CACnE,CAAC,CAAC;;;;;;AAMH,SAAS,KAAK,CAAC,OAAO,EAAE;EACtB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;EACjB,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;EACvB,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC;EAC1C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;;EAE1B,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;IACpB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;MACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;KAC3B,MAAM;MACL,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;KACxB;GACF;CACF;;;;;;AAMD,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;;;;;;AAMpB,KAAK,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,OAAO,EAAE;EACjC,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;EAC/B,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACvB,CAAC;;;;;;AAMF,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE;EAClC,GAAG,GAAG,GAAG;KACN,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC;KACzB,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;KACtB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;KACvB,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;;EAE5B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;CAC9B,CAAC;;;;;;AAMF,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE;;;EAC7C,IAAI,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;MAC/B,IAAI;MACJ,KAAK;MACL,GAAG;MACH,IAAI;MACJ,CAAC;MACD,IAAI;MACJ,KAAK;MACL,CAAC;MACD,CAAC,CAAC;;EAEN,OAAO,GAAG,EAAE;;IAEV,IAAI,GAAG,GAAGM,MAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACtC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;QACrBA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;UACf,IAAI,EAAE,OAAO;SACd,CAAC,CAAC;OACJ;KACF;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACnC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;MACpCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,CAACA,MAAI,CAAC,OAAO,CAAC,QAAQ;YACxB,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YACvB,GAAG;OACR,CAAC,CAAC;MACH,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACrC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QACZ,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE;OACnB,CAAC,CAAC;MACH,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACtC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM;QACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;OACb,CAAC,CAAC;MACH,SAAS;KACV;;;IAGD,IAAI,GAAG,KAAK,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;MAC/C,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;;MAEnC,IAAI,GAAG;QACL,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC1D,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;QACvD,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;OAC7C,CAAC;;MAEF,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;UACnC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;SACzB,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;UAC3C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;SAC1B,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;UAC1C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;SACxB,MAAM;UACL,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;SACtB;OACF;;MAED,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;OAC/C;;MAEDA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;MAEvB,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACvC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC;QAC7B,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;OACb,CAAC,CAAC;MACH,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACjC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,IAAI;OACX,CAAC,CAAC;MACH,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACzC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;;MAEnCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,kBAAkB;OACzB,CAAC,CAAC;;MAEH,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;;;;;MAKrCA,MAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;;MAE3BA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,gBAAgB;OACvB,CAAC,CAAC;;MAEH,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACnC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;;MAEdA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC;OACzB,CAAC,CAAC;;;MAGH,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAACA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;;MAEpC,IAAI,GAAG,KAAK,CAAC;MACb,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;MACf,CAAC,GAAG,CAAC,CAAC;;MAEN,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QACjB,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;;;;QAId,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QACpB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;;;;QAI9C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;UACxB,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC;UACrB,IAAI,GAAG,CAACA,MAAI,CAAC,OAAO,CAAC,QAAQ;cACzB,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,GAAG,KAAK,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;cACzD,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;SACnC;;;;QAID,IAAIA,MAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;UAC1C,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;UACrC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;YACpD,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;YACxC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;WACX;SACF;;;;;QAKD,KAAK,GAAG,IAAI,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;UACf,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC;UAC7C,IAAI,CAAC,KAAK,EAAE,EAAA,KAAK,GAAG,IAAI,CAAC,EAAA;SAC1B;;QAEDA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;UACf,IAAI,EAAE,KAAK;cACP,kBAAkB;cAClB,iBAAiB;SACtB,CAAC,CAAC;;;QAGHA,MAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;;QAE5BA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;UACf,IAAI,EAAE,eAAe;SACtB,CAAC,CAAC;OACJ;;MAEDA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,UAAU;OACjB,CAAC,CAAC;;MAEH,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACnC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAEA,MAAI,CAAC,OAAO,CAAC,QAAQ;YACvB,WAAW;YACX,MAAM;QACV,GAAG,EAAE,CAACA,MAAI,CAAC,OAAO,CAAC,SAAS;cACtB,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;QACpE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;OACb,CAAC,CAAC;MACH,SAAS;KACV;;;IAGD,IAAI,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;MACpD,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG;QACxC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QACZ,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;OACd,CAAC;MACF,SAAS;KACV;;;IAGD,IAAI,GAAG,KAAK,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;MAC7C,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;;MAEnC,IAAI,GAAG;QACL,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC1D,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;QACvD,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;OACxD,CAAC;;MAEF,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;UACnC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;SACzB,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;UAC3C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;SAC1B,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;UAC1C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;SACxB,MAAM;UACL,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;SACtB;OACF;;MAED,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;WAC1B,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;WAC/B,KAAK,CAAC,QAAQ,CAAC,CAAC;OACpB;;MAEDA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;MAEvB,SAAS;KACV;;;IAGD,IAAI,GAAG,KAAK,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;MACjD,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI;YAC3C,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACnB,GAAG,CAAC,CAAC,CAAC;OACX,CAAC,CAAC;MACH,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;;MAEnC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;OACb,CAAC,CAAC;MACH,SAAS;KACV;;IAED,IAAI,GAAG,EAAE;MACP,MAAM;QACJ,KAAK,CAAC,yBAAyB,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;KACxD;GACF;;EAED,OAAO,IAAI,CAAC,MAAM,CAAC;CACpB,CAAC;;;;;;AAMF,IAAI,MAAM,GAAG;EACX,MAAM,EAAE,6BAA6B;EACrC,QAAQ,EAAE,0BAA0B;EACpC,GAAG,EAAE,IAAI;EACT,GAAG,EAAE,wDAAwD;EAC7D,IAAI,EAAE,yBAAyB;EAC/B,OAAO,EAAE,gCAAgC;EACzC,MAAM,EAAE,kCAAkC;EAC1C,MAAM,EAAE,gDAAgD;EACxD,EAAE,EAAE,uDAAuD;EAC3D,IAAI,EAAE,kCAAkC;EACxC,EAAE,EAAE,kBAAkB;EACtB,GAAG,EAAE,IAAI;EACT,IAAI,EAAE,oCAAoC;CAC3C,CAAC;;AAEF,MAAM,CAAC,OAAO,GAAG,wCAAwC,CAAC;AAC1D,MAAM,CAAC,KAAK,GAAG,gDAAgD,CAAC;;AAEhE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;GAC/B,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC;GACzB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;IACpB,CAAC;;AAEL,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;GACrC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC;;;;;;AAML,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;;;;;;AAMlC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE;EACzC,MAAM,EAAE,gEAAgE;EACxE,EAAE,EAAE,0DAA0D;CAC/D,CAAC,CAAC;;;;;;AAMH,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE;EACpC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;EAC9C,GAAG,EAAE,sCAAsC;EAC3C,GAAG,EAAE,yBAAyB;EAC9B,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;KACvB,IAAI,EAAE,KAAK,CAAC;KACZ,GAAG,EAAE,aAAa,CAAC;MAClB;CACL,CAAC,CAAC;;;;;;AAMH,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,EAAE;EACpC,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;EACrC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;CAC9C,CAAC,CAAC;;;;;;AAMH,SAAS,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE;EACnC,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC;EAC1C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACnB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;EAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,QAAQ,CAAC;EACtD,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;;EAErC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;IACf,MAAM;MACJ,KAAK,CAAC,2CAA2C,CAAC,CAAC;GACtD;;EAED,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;IACpB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;MACvB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;KAC5B,MAAM;MACL,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;KACzB;GACF,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;IAChC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC;GAC9B;CACF;;;;;;AAMD,WAAW,CAAC,KAAK,GAAG,MAAM,CAAC;;;;;;AAM3B,WAAW,CAAC,MAAM,GAAG,SAAS,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE;EACjD,IAAI,MAAM,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;EAC7C,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;CAC3B,CAAC;;;;;;AAMF,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,GAAG,EAAE;;;EAC3C,IAAI,GAAG,GAAG,EAAE;MACR,IAAI;MACJ,IAAI;MACJ,IAAI;MACJ,GAAG,CAAC;;EAER,OAAO,GAAG,EAAE;;IAEV,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACrC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;MACd,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACvC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;QAClB,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;YAC3BA,MAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAChCA,MAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,GAAGA,MAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;OACtC,MAAM;QACL,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,GAAG,IAAI,CAAC;OACb;MACD,GAAG,IAAIA,MAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;MAC5C,SAAS;KACV;;;IAGD,IAAI,CAACA,MAAI,CAAC,MAAM,KAAK,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;MACpD,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MACtB,IAAI,GAAG,IAAI,CAAC;MACZ,GAAG,IAAIA,MAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;MAC5C,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MAClC,IAAI,CAACA,MAAI,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;QACxCA,MAAI,CAAC,MAAM,GAAG,IAAI,CAAC;OACpB,MAAM,IAAIA,MAAI,CAAC,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;QAChDA,MAAI,CAAC,MAAM,GAAG,KAAK,CAAC;OACrB;MACD,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,IAAIA,MAAI,CAAC,OAAO,CAAC,QAAQ;UACxBA,MAAI,CAAC,OAAO,CAAC,SAAS;YACpBA,MAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;UAChB,GAAG,CAAC,CAAC,CAAC,CAAA;MACV,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACnC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,GAAG,IAAI,CAAC;MACnB,GAAG,IAAIA,MAAI,CAAC,UAAU,CAAC,GAAG,EAAE;QAC1B,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QACZ,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;OACd,CAAC,CAAC;MACHA,MAAI,CAAC,MAAM,GAAG,KAAK,CAAC;MACpB,SAAS;KACV;;;IAGD,IAAI,CAAC,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;YAC/B,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;MAC1C,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;MAC/C,IAAI,GAAGA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;MACtC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QACvB,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QAChC,SAAS;OACV;MACDA,MAAI,CAAC,MAAM,GAAG,IAAI,CAAC;MACnB,GAAG,IAAIA,MAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;MAClCA,MAAI,CAAC,MAAM,GAAG,KAAK,CAAC;MACpB,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACrC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,IAAIA,MAAI,CAAC,QAAQ,CAAC,MAAM,CAACA,MAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC3D,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACjC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,IAAIA,MAAI,CAAC,QAAQ,CAAC,EAAE,CAACA,MAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MACvD,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACnC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,IAAIA,MAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;MACpD,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACjC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,IAAIA,MAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;MAC1B,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MAClC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,IAAIA,MAAI,CAAC,QAAQ,CAAC,GAAG,CAACA,MAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC9C,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACnC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,IAAIA,MAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAACA,MAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC5D,SAAS;KACV;;IAED,IAAI,GAAG,EAAE;MACP,MAAM;QACJ,KAAK,CAAC,yBAAyB,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;KACxD;GACF;;EAED,OAAO,GAAG,CAAC;CACZ,CAAC;;;;;;AAMF,WAAW,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,GAAG,EAAE,IAAI,EAAE;EACrD,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;MACxB,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;;EAEnD,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;MAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MACpD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACtD,CAAC;;;;;;AAMF,WAAW,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,IAAI,EAAE;EACjD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;EAC3C,OAAO,IAAI;;KAER,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC;;KAEzB,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC;;KAExB,OAAO,CAAC,yBAAyB,EAAE,UAAU,CAAC;;KAE9C,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;;KAEvB,OAAO,CAAC,8BAA8B,EAAE,UAAU,CAAC;;KAEnD,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;;KAEvB,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;CAChC,CAAC;;;;;;AAMF,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,IAAI,EAAE;EAC5C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;EACtC,IAAI,GAAG,GAAG,EAAE;MACR,CAAC,GAAG,IAAI,CAAC,MAAM;MACf,CAAC,GAAG,CAAC;MACL,EAAE,CAAC;;EAEP,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;IACjB,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,EAAE;MACvB,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;KAC5B;IACD,GAAG,IAAI,IAAI,GAAG,EAAE,GAAG,GAAG,CAAC;GACxB;;EAED,OAAO,GAAG,CAAC;CACZ,CAAC;;;;;;AAMF,SAAS,QAAQ,CAAC,OAAO,EAAE;EACzB,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;CAC9B;;AAED,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;EACtD,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;IAC1B,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7C,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,IAAI,EAAE;MAC/B,OAAO,GAAG,IAAI,CAAC;MACf,IAAI,GAAG,GAAG,CAAC;KACZ;GACF;;EAED,IAAI,CAAC,IAAI,EAAE;IACT,OAAO,aAAa;SACf,OAAO,GAAG,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrC,iBAAiB,CAAC;GACvB;;EAED,OAAO,oBAAoB;MACvB,IAAI,CAAC,OAAO,CAAC,UAAU;MACvB,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC;MAClB,IAAI;OACH,OAAO,GAAG,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;MACrC,mBAAmB,CAAC;CACzB,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,KAAK,EAAE;EAC9C,OAAO,gBAAgB,GAAG,KAAK,GAAG,iBAAiB,CAAC;CACrD,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE;EACvC,OAAO,IAAI,CAAC;CACb,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE;EACtD,OAAO,IAAI;MACP,KAAK;MACL,OAAO;MACP,IAAI,CAAC,OAAO,CAAC,YAAY;MACzB,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;MACzC,IAAI;MACJ,IAAI;MACJ,KAAK;MACL,KAAK;MACL,KAAK,CAAC;CACX,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,EAAE,GAAG,WAAW;EACjC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAC;CAClD,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,OAAO,EAAE;EAChD,IAAI,IAAI,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC;EACjC,OAAO,GAAG,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;CACxD,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,IAAI,EAAE;EAC3C,OAAO,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CAClC,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,IAAI,EAAE;EAC5C,OAAO,KAAK,GAAG,IAAI,GAAG,QAAQ,CAAC;CAChC,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,MAAM,EAAE,IAAI,EAAE;EAChD,OAAO,WAAW;MACd,WAAW;MACX,MAAM;MACN,YAAY;MACZ,WAAW;MACX,IAAI;MACJ,YAAY;MACZ,YAAY,CAAC;CAClB,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,OAAO,EAAE;EAC9C,OAAO,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;CACvC,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,OAAO,EAAE,KAAK,EAAE;EACtD,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;EACtC,IAAI,GAAG,GAAG,KAAK,CAAC,KAAK;MACjB,GAAG,GAAG,IAAI,GAAG,qBAAqB,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI;MACvD,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC;EACrB,OAAO,GAAG,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;CAC5C,CAAC;;;AAGF,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,IAAI,EAAE;EACzC,OAAO,UAAU,GAAG,IAAI,GAAG,WAAW,CAAC;CACxC,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,IAAI,EAAE;EACrC,OAAO,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC;CAChC,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,IAAI,EAAE;EAC3C,OAAO,QAAQ,GAAG,IAAI,GAAG,SAAS,CAAC;CACpC,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,EAAE,GAAG,WAAW;EACjC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;CAC9C,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,IAAI,EAAE;EACtC,OAAO,OAAO,GAAG,IAAI,GAAG,QAAQ,CAAC;CAClC,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;EACpD,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;IACzB,IAAI;MACF,IAAI,IAAI,GAAG,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SAC1C,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;SACtB,WAAW,EAAE,CAAC;KAClB,CAAC,OAAO,CAAC,EAAE;MACV,OAAO,EAAE,CAAC;KACX;IACD,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;MACxE,OAAO,EAAE,CAAC;KACX;GACF;EACD,IAAI,GAAG,GAAG,WAAW,GAAG,IAAI,GAAG,GAAG,CAAC;EACnC,IAAI,KAAK,EAAE;IACT,GAAG,IAAI,UAAU,GAAG,KAAK,GAAG,GAAG,CAAC;GACjC;EACD,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,MAAM,CAAC;EAC3B,OAAO,GAAG,CAAC;CACZ,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;EACrD,IAAI,GAAG,GAAG,YAAY,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,GAAG,CAAC;EACvD,IAAI,KAAK,EAAE;IACT,GAAG,IAAI,UAAU,GAAG,KAAK,GAAG,GAAG,CAAC;GACjC;EACD,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,GAAG,GAAG,CAAC;EACvC,OAAO,GAAG,CAAC;CACZ,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE;EACvC,OAAO,IAAI,CAAC;CACb,CAAC;;;;;;AAMF,SAAS,MAAM,CAAC,OAAO,EAAE;EACvB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;EACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EAClB,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC;EAC1C,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,QAAQ,CAAC;EAC9D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;EACtC,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;CACtC;;;;;;AAMD,MAAM,CAAC,KAAK,GAAG,SAAS,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE;EAC9C,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;EAC3C,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;CAC1B,CAAC;;;;;;AAMF,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,GAAG,EAAE;;;EACrC,IAAI,CAAC,MAAM,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;EACtE,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;;EAE5B,IAAI,GAAG,GAAG,EAAE,CAAC;EACb,OAAO,IAAI,CAAC,IAAI,EAAE,EAAE;IAClB,GAAG,IAAIA,MAAI,CAAC,GAAG,EAAE,CAAC;GACnB;;EAED,OAAO,GAAG,CAAC;CACZ,CAAC;;;;;;AAMF,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,WAAW;EACjC,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;CACvC,CAAC;;;;;;AAMF,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,WAAW;EACjC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;CACjD,CAAC;;;;;;AAMF,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,WAAW;;;EACtC,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;;EAE3B,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,EAAE;IAClC,IAAI,IAAI,IAAI,GAAGA,MAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC;GACjC;;EAED,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CACjC,CAAC;;;;;;AAMF,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,WAAW;;;EAChC,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI;IACrB,KAAK,OAAO,EAAE;MACZ,OAAO,EAAE,CAAC;KACX;IACD,KAAK,IAAI,EAAE;MACT,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;KAC3B;IACD,KAAK,SAAS,EAAE;MACd,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO;QAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,KAAK;QAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KACpB;IACD,KAAK,MAAM,EAAE;MACX,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI;QACvC,IAAI,CAAC,KAAK,CAAC,IAAI;QACf,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;KACvB;IACD,KAAK,OAAO,EAAE;MACZ,IAAI,MAAM,GAAG,EAAE;UACX,IAAI,GAAG,EAAE;UACT,CAAC;UACD,GAAG;UACH,IAAI;UACJ,KAAK;UACL,CAAC,CAAC;;;MAGN,IAAI,GAAG,EAAE,CAAC;MACV,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC7C,KAAK,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAEA,MAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,IAAI,IAAIA,MAAI,CAAC,QAAQ,CAAC,SAAS;UAC7BA,MAAI,CAAC,MAAM,CAAC,MAAM,CAACA,MAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;UACxC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAEA,MAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;SAC7C,CAAC;OACH;MACD,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;MAEvC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC5C,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;;QAE1B,IAAI,GAAG,EAAE,CAAC;QACV,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;UAC/B,IAAI,IAAIA,MAAI,CAAC,QAAQ,CAAC,SAAS;YAC7BA,MAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1B,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAEA,MAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;WAC9C,CAAC;SACH;;QAED,IAAI,IAAIA,MAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;OACtC;MACD,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;KAC1C;IACD,KAAK,kBAAkB,EAAE;MACvB,IAAI,IAAI,GAAG,EAAE,CAAC;;MAEd,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,gBAAgB,EAAE;QAC5C,IAAI,IAAIA,MAAI,CAAC,GAAG,EAAE,CAAC;OACpB;;MAED,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KACvC;IACD,KAAK,YAAY,EAAE;MACjB,IAAI,IAAI,GAAG,EAAE;UACT,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;;MAEjC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,UAAU,EAAE;QACtC,IAAI,IAAIA,MAAI,CAAC,GAAG,EAAE,CAAC;OACpB;;MAED,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KAC1C;IACD,KAAK,iBAAiB,EAAE;MACtB,IAAI,IAAI,GAAG,EAAE,CAAC;;MAEd,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,eAAe,EAAE;QAC3C,IAAI,IAAIA,MAAI,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM;YAC9BA,MAAI,CAAC,SAAS,EAAE;YAChBA,MAAI,CAAC,GAAG,EAAE,CAAC;OAChB;;MAED,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACrC;IACD,KAAK,kBAAkB,EAAE;MACvB,IAAI,IAAI,GAAG,EAAE,CAAC;;MAEd,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,eAAe,EAAE;QAC3C,IAAI,IAAIA,MAAI,CAAC,GAAG,EAAE,CAAC;OACpB;;MAED,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACrC;IACD,KAAK,MAAM,EAAE;MACX,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;UAChD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;UACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;MACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACjC;IACD,KAAK,WAAW,EAAE;MAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;KACrE;IACD,KAAK,MAAM,EAAE;MACX,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;KAClD;GACF;CACF,CAAC;;;;;;AAMF,SAAS,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE;EAC5B,OAAO,IAAI;KACR,OAAO,CAAC,CAAC,MAAM,GAAG,cAAc,GAAG,IAAI,EAAE,OAAO,CAAC;KACjD,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;KACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;KACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;KACvB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;CAC3B;;AAED,SAAS,QAAQ,CAAC,IAAI,EAAE;;EAEtB,OAAO,IAAI,CAAC,OAAO,CAAC,2CAA2C,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE;IAC9E,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IACpB,IAAI,CAAC,KAAK,OAAO,EAAE,EAAA,OAAO,GAAG,CAAC,EAAA;IAC9B,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;MACvB,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;UACtB,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;UACjD,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;KAC1C;IACD,OAAO,EAAE,CAAC;GACX,CAAC,CAAC;CACJ;;AAED,SAAS,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE;EAC3B,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;EACrB,GAAG,GAAG,GAAG,IAAI,EAAE,CAAC;EAChB,OAAO,SAAS,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE;IAC9B,IAAI,CAAC,IAAI,EAAE,EAAA,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,EAAA;IACzC,GAAG,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC;IACxB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IACxC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACjC,OAAO,IAAI,CAAC;GACb,CAAC;CACH;;AAED,SAAS,IAAI,GAAG,EAAE;AAClB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;;AAEjB,SAAS,KAAK,CAAC,GAAG,EAAE;;;EAClB,IAAI,CAAC,GAAG,CAAC;MACL,MAAM;MACN,GAAG,CAAC;;EAER,OAAO,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAChC,MAAM,GAAGK,WAAS,CAAC,CAAC,CAAC,CAAC;IACtB,KAAK,GAAG,IAAI,MAAM,EAAE;MAClB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;QACrD,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;OACxB;KACF;GACF;;EAED,OAAO,GAAG,CAAC;CACZ;;;;;;;AAOD,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE;EAClC,IAAI,QAAQ,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;IACzC,IAAI,CAAC,QAAQ,EAAE;MACb,QAAQ,GAAG,GAAG,CAAC;MACf,GAAG,GAAG,IAAI,CAAC;KACZ;;IAED,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;;IAE5C,IAAI,SAAS,GAAG,GAAG,CAAC,SAAS;QACzB,MAAM;QACN,OAAO;QACP,CAAC,GAAG,CAAC,CAAC;;IAEV,IAAI;MACF,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;KAC7B,CAAC,OAAO,CAAC,EAAE;MACV,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;KACpB;;IAED,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;;IAExB,IAAI,IAAI,GAAG,SAAS,GAAG,EAAE;MACvB,IAAI,GAAG,EAAE;QACP,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;QAC1B,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;OACtB;;MAED,IAAI,GAAG,CAAC;;MAER,IAAI;QACF,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;OACjC,CAAC,OAAO,CAAC,EAAE;QACV,GAAG,GAAG,CAAC,CAAC;OACT;;MAED,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;;MAE1B,OAAO,GAAG;UACN,QAAQ,CAAC,GAAG,CAAC;UACb,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KACzB,CAAC;;IAEF,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;MACtC,OAAO,IAAI,EAAE,CAAC;KACf;;IAED,OAAO,GAAG,CAAC,SAAS,CAAC;;IAErB,IAAI,CAAC,OAAO,EAAE,EAAA,OAAO,IAAI,EAAE,CAAC,EAAA;;IAE5B,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;MAC7B,CAAC,SAAS,KAAK,EAAE;QACf,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;UACzB,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,CAAC;SAC5B;QACD,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,GAAG,EAAE,IAAI,EAAE;UAC3D,IAAI,GAAG,EAAE,EAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAA;UAC1B,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE;YACvC,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,CAAC;WAC5B;UACD,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;UAClB,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;UACrB,EAAE,OAAO,IAAI,IAAI,EAAE,CAAC;SACrB,CAAC,CAAC;OACJ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;KACf;;IAED,OAAO;GACR;EACD,IAAI;IACF,IAAI,GAAG,EAAE,EAAA,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,EAAA;IAC/C,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;GAC/C,CAAC,OAAO,CAAC,EAAE;IACV,CAAC,CAAC,OAAO,IAAI,yDAAyD,CAAC;IACvE,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE;MACnC,OAAO,+BAA+B;UAClC,MAAM,CAAC,CAAC,CAAC,OAAO,GAAG,EAAE,EAAE,IAAI,CAAC;UAC5B,QAAQ,CAAC;KACd;IACD,MAAM,CAAC,CAAC;GACT;CACF;;;;;;AAMD,MAAM,CAAC,OAAO;AACd,MAAM,CAAC,UAAU,GAAG,SAAS,GAAG,EAAE;EAChC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;EAC5B,OAAO,MAAM,CAAC;CACf,CAAC;;AAEF,MAAM,CAAC,QAAQ,GAAG;EAChB,GAAG,EAAE,IAAI;EACT,MAAM,EAAE,IAAI;EACZ,MAAM,EAAE,KAAK;EACb,QAAQ,EAAE,KAAK;EACf,QAAQ,EAAE,KAAK;EACf,SAAS,EAAE,IAAI;EACf,MAAM,EAAE,IAAI;EACZ,UAAU,EAAE,KAAK;EACjB,MAAM,EAAE,KAAK;EACb,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,OAAO;EACnB,WAAW,EAAE,KAAK;EAClB,YAAY,EAAE,EAAE;EAChB,QAAQ,EAAE,IAAI,QAAQ;EACtB,KAAK,EAAE,KAAK;CACb,CAAC;;;;;;AAMF,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;;AAE7B,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;;AAE3B,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;;AAEzB,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;AACjC,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC;;AAExC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC;;AAEtB,IAAI,QAAa,KAAK,WAAW,IAAI,QAAc,KAAK,QAAQ,EAAE;EAChE,cAAc,GAAG,MAAM,CAAC;CACzB,MAAM,IAAI,OAAOiC,SAAM,KAAK,UAAU,IAAIA,SAAM,CAAC,GAAG,EAAE;EACrDA,SAAM,CAAC,WAAW,EAAE,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC;CACvC,MAAM;EACL,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;CACtB;;CAEA,EAAE,IAAI,CAAC,WAAW;EACjB,OAAO,IAAI,KAAK,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,GAAGC,cAAM,CAAC,CAAC;CAClE,EAAE,CAAC,CAAC;;;ACnwCL,MAAM,CAAC,UAAU,CAAC;EAChB,GAAG,EAAE,IAAI;EACT,WAAW,EAAE,IAAI;CAClB,CAAC,CAAC;;AAEH,eAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjC7C,IAAI,gBAAgB,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;EACzE,gBAAgB,CAAC,OAAO,CAAC,UAAA,EAAE,EAAC;IAC1BA,IAAI,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC;;IAE3B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACpCA,IAAI,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IAC9D,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;;IAEzB,EAAE,CAAC,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;GAChC,CAAC,CAAC;CACJ,CAAA;;;;;;;ACdD,IAAI,KAAK,GAAG,CAAC,OAAO,MAAM,KAAK,WAAW;GACvC,MAAM;;EAEP,CAAC,OAAO,iBAAiB,KAAK,WAAW,IAAI,IAAI,YAAY,iBAAiB;IAC5E,IAAI;IACJ,EAAE;EACJ,CAAC;;;;;;;;AAQH,IAAI,KAAK,GAAG,CAAC,UAAU;;;AAGvB,IAAI,IAAI,GAAG,0BAA0B,CAAC;AACtC,IAAI,QAAQ,GAAG,CAAC,CAAC;;AAEjB,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG;CACrB,IAAI,EAAE;EACL,MAAM,EAAE,UAAU,MAAM,EAAE;GACzB,IAAI,MAAM,YAAY,KAAK,EAAE;IAC5B,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3E,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,OAAO,EAAE;IAC3C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM;IACN,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACnF;GACD;;EAED,IAAI,EAAE,UAAU,CAAC,EAAE;GAClB,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;GACtE;;EAED,KAAK,EAAE,UAAU,GAAG,EAAE;GACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;IACjB,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1D;GACD,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC;GACnB;;;EAGD,KAAK,EAAE,UAAU,CAAC,EAAE;GACnB,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;GAE1B,QAAQ,IAAI;IACX,KAAK,QAAQ;KACZ,IAAI,KAAK,GAAG,EAAE,CAAC;;KAEf,KAAK,IAAI,GAAG,IAAI,CAAC,EAAE;MAClB,IAAI,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;OAC1B,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;OAClC;MACD;;KAED,OAAO,KAAK,CAAC;;IAEd,KAAK,OAAO;;KAEX,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAChE;;GAED,OAAO,CAAC,CAAC;GACT;EACD;;CAED,SAAS,EAAE;EACV,MAAM,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE;GAC5B,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;;GAEzC,KAAK,IAAI,GAAG,IAAI,KAAK,EAAE;IACtB,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB;;GAED,OAAO,IAAI,CAAC;GACZ;;;;;;;;;;;EAWD,YAAY,EAAE,UAAU,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;GACrD,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC;GAC3B,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;;GAE3B,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE;IAC1B,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;;IAEtB,KAAK,IAAI,QAAQ,IAAI,MAAM,EAAE;KAC5B,IAAI,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;MACpC,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;MACrC;KACD;;IAED,OAAO,OAAO,CAAC;IACf;;GAED,IAAI,GAAG,GAAG,EAAE,CAAC;;GAEb,KAAK,IAAI,KAAK,IAAI,OAAO,EAAE;;IAE1B,IAAI,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;;KAElC,IAAI,KAAK,IAAI,MAAM,EAAE;;MAEpB,KAAK,IAAI,QAAQ,IAAI,MAAM,EAAE;;OAE5B,IAAI,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;QACpC,GAAG,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjC;OACD;MACD;;KAED,GAAG,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;KAC5B;IACD;;;GAGD,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,GAAG,EAAE,KAAK,EAAE;IACjD,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,MAAM,EAAE;KAC5C,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;KAChB;IACD,CAAC,CAAC;;GAEH,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;GAC1B;;;EAGD,GAAG,EAAE,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;GACzC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;GACxB,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE;IAChB,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;KACxB,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC;;KAErC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;MACnE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;MACnC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;MAC/C;UACI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;MACvE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;MACnC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;MAC5C;KACD;IACD;GACD;EACD;CACD,OAAO,EAAE,EAAE;;CAEX,YAAY,EAAE,SAAS,KAAK,EAAE,QAAQ,EAAE;EACvC,IAAI,GAAG,GAAG;GACT,QAAQ,EAAE,QAAQ;GAClB,QAAQ,EAAE,kGAAkG;GAC5G,CAAC;;EAEF,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;;EAExC,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;;EAEvE,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG;GAChD,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,KAAK,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;GAC1D;EACD;;CAED,gBAAgB,EAAE,SAAS,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE;;EAEpD,IAAI,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;;EAExC,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;GAC9C,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;GAC3B;;EAED,IAAI,MAAM,EAAE;GACX,QAAQ,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;GACpE,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;GAChC;;;EAGD,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,YAAY,GAAG,QAAQ,CAAC;;;EAGvG,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;;EAE5B,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;GACjC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,YAAY,GAAG,QAAQ,CAAC;GACrG;;EAED,IAAI,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC;;EAE/B,IAAI,GAAG,GAAG;GACT,OAAO,EAAE,OAAO;GAChB,QAAQ,EAAE,QAAQ;GAClB,OAAO,EAAE,OAAO;GAChB,IAAI,EAAE,IAAI;GACV,CAAC;;EAEF,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;;EAExC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;GAC9B,IAAI,GAAG,CAAC,IAAI,EAAE;IACb,GAAG,CAAC,OAAO,CAAC,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC;IACnC;GACD,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;GAC7B,OAAO;GACP;;EAED,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;;EAErC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;GAC1B,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;;GAEpC,MAAM,CAAC,SAAS,GAAG,SAAS,GAAG,EAAE;IAChC,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,IAAI,CAAC;;IAE/B,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;;IAElC,GAAG,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG,CAAC,eAAe,CAAC;;IAE5C,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAC7B,CAAC;;GAEF,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;IACjC,QAAQ,EAAE,GAAG,CAAC,QAAQ;IACtB,IAAI,EAAE,GAAG,CAAC,IAAI;IACd,cAAc,EAAE,IAAI;IACpB,CAAC,CAAC,CAAC;GACJ;OACI;GACJ,GAAG,CAAC,eAAe,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;;GAEvE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;;GAElC,GAAG,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG,CAAC,eAAe,CAAC;;GAE5C,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;GAEnC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;GACpC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;GAC7B;EACD;;CAED,SAAS,EAAE,UAAU,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE;EAC7C,IAAI,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;EACvC,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;EACxD;;CAED,QAAQ,EAAE,SAAS,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE;EAC3C,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;;EAEpB,IAAI,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;;EAEpB,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;;EAExB,IAAI,IAAI,EAAE;GACT,KAAK,IAAI,KAAK,IAAI,IAAI,EAAE;IACvB,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B;;GAED,OAAO,OAAO,CAAC,IAAI,CAAC;GACpB;;EAED,SAAS,EAAE,KAAK,IAAI,KAAK,IAAI,OAAO,EAAE;GACrC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;IACrD,SAAS;IACT;;GAED,IAAI,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;GAC9B,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,OAAO,IAAI,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC;;GAEvE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;IACzC,IAAI,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC;KACxB,MAAM,GAAG,OAAO,CAAC,MAAM;KACvB,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU;KACjC,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM;KACzB,gBAAgB,GAAG,CAAC;KACpB,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;;IAEvB,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE;;KAEtC,IAAI,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;KAC5D,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,GAAG,GAAG,CAAC,CAAC;KAC9D;;IAED,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC;;;IAGrC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;;KAErE,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;;KAEpB,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;;MAEhC,MAAM,SAAS,CAAC;MAChB;;KAED,IAAI,GAAG,YAAY,KAAK,EAAE;MACzB,SAAS;MACT;;KAED,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;;KAEtB,IAAI,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;SACzB,MAAM,GAAG,CAAC,CAAC;;;KAGf,IAAI,CAAC,KAAK,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;MAC/C,OAAO,CAAC,SAAS,GAAG,GAAG,CAAC;MACxB,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;MAC3B,IAAI,CAAC,KAAK,EAAE;OACX,MAAM;OACN;;MAED,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,IAAI,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;UACvD,EAAE,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM;UAClC,CAAC,GAAG,CAAC;UACL,CAAC,GAAG,GAAG,CAAC;;MAEZ,KAAK,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE;OACrD,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;;OAEtB,IAAI,IAAI,IAAI,CAAC,EAAE;QACd,EAAE,CAAC,CAAC;QACJ,GAAG,GAAG,CAAC,CAAC;QACR;OACD;;;;;;MAMD,IAAI,MAAM,CAAC,CAAC,CAAC,YAAY,KAAK,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE;OACvD,SAAS;OACT;;;MAGD,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;MACf,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;MACzB,KAAK,CAAC,KAAK,IAAI,GAAG,CAAC;MACnB;;KAED,IAAI,CAAC,KAAK,EAAE;MACX,SAAS;MACT;;KAED,GAAG,UAAU,EAAE;MACd,gBAAgB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;MACnC;;KAED,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,GAAG,gBAAgB;SACrC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;SACxC,EAAE,GAAG,IAAI,GAAG,KAAK,CAAC,MAAM;SACxB,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;SAC3B,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;;KAE1B,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;;KAEvB,IAAI,MAAM,EAAE;MACX,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;MAClB;;KAED,IAAI,OAAO,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;;KAEhG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;KAEnB,IAAI,KAAK,EAAE;MACV,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;MACjB;;KAED,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;KAC3C;IACD;GACD;;EAED,OAAO,MAAM,CAAC;EACd;;CAED,KAAK,EAAE;EACN,GAAG,EAAE,EAAE;;EAEP,GAAG,EAAE,UAAU,IAAI,EAAE,QAAQ,EAAE;GAC9B,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;;GAExB,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;;GAEhC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;GAC3B;;EAED,GAAG,EAAE,UAAU,IAAI,EAAE,GAAG,EAAE;GACzB,IAAI,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;;GAElC,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;IACpC,OAAO;IACP;;GAED,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG;IACnD,QAAQ,CAAC,GAAG,CAAC,CAAC;IACd;GACD;EACD;CACD,CAAC;;AAEF,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,SAAS,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE;CACxE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;CACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;CACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;;CAEnB,IAAI,CAAC,MAAM,GAAG,CAAC,UAAU,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;CAC1C,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;CACvB,CAAC;;AAEF,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE;CAC/C,IAAI,OAAO,CAAC,IAAI,QAAQ,EAAE;EACzB,OAAO,CAAC,CAAC;EACT;;CAED,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE;EAC/B,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,OAAO,EAAE;GAC9B,OAAO,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;GAC7C,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;EACZ;;CAED,IAAI,GAAG,GAAG;EACT,IAAI,EAAE,CAAC,CAAC,IAAI;EACZ,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC;EACrD,GAAG,EAAE,MAAM;EACX,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC;EAC1B,UAAU,EAAE,EAAE;EACd,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,MAAM;EACd,CAAC;;CAEF,IAAI,GAAG,CAAC,IAAI,IAAI,SAAS,EAAE;EAC1B,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC;EACtC;;CAED,IAAI,CAAC,CAAC,KAAK,EAAE;EACZ,IAAI,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,OAAO,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;EACrE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;EACjD;;CAED,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;;CAEzB,IAAI,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE;EAC/D,OAAO,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,GAAG,CAAC;EAChF,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;CAEb,OAAO,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,UAAU,GAAG,GAAG,GAAG,UAAU,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;;CAElJ,CAAC;;AAEF,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;CACpB,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;;EAE5B,OAAO,KAAK,CAAC,KAAK,CAAC;EACnB;;CAED,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,GAAG,EAAE;EAC/C,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;MAC9B,IAAI,GAAG,OAAO,CAAC,QAAQ;MACvB,IAAI,GAAG,OAAO,CAAC,IAAI;MACnB,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;;EAE5C,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;EAC9D,IAAI,cAAc,EAAE;GACnB,KAAK,CAAC,KAAK,EAAE,CAAC;GACd;EACD,EAAE,KAAK,CAAC,CAAC;;CAEV,OAAO,KAAK,CAAC,KAAK,CAAC;CACnB;;;AAGD,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;;AAEpG,IAAI,MAAM,EAAE;CACX,CAAC,CAAC,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC;;CAExB,IAAI,QAAQ,CAAC,gBAAgB,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE;EACrE,GAAG,QAAQ,CAAC,UAAU,KAAK,SAAS,EAAE;GACrC,IAAI,MAAM,CAAC,qBAAqB,EAAE;IACjC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IAC7C,MAAM;IACN,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IACtC;GACD;OACI;GACJ,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC;GAC9D;EACD;CACD;;AAED,OAAO,KAAK,CAAC,KAAK,CAAC;;CAElB,GAAG,CAAC;;AAEL,IAAI,QAAa,KAAK,WAAW,IAAI,MAAM,CAAC,OAAO,EAAE;CACpD,cAAc,GAAG,KAAK,CAAC;CACvB;;;AAGD,IAAI,OAAO6C,cAAM,KAAK,WAAW,EAAE;CAClCA,cAAM,CAAC,KAAK,GAAG,KAAK,CAAC;CACrB;;;;;;;AAOD,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG;CACxB,SAAS,EAAE,iBAAiB;CAC5B,QAAQ,EAAE,gBAAgB;CAC1B,SAAS,EAAE,qBAAqB;CAChC,OAAO,EAAE,yBAAyB;CAClC,KAAK,EAAE;EACN,OAAO,EAAE,uGAAuG;EAChH,MAAM,EAAE;GACP,KAAK,EAAE;IACN,OAAO,EAAE,iBAAiB;IAC1B,MAAM,EAAE;KACP,aAAa,EAAE,OAAO;KACtB,WAAW,EAAE,cAAc;KAC3B;IACD;GACD,YAAY,EAAE;IACb,OAAO,EAAE,iCAAiC;IAC1C,MAAM,EAAE;KACP,aAAa,EAAE,QAAQ;KACvB;IACD;GACD,aAAa,EAAE,MAAM;GACrB,WAAW,EAAE;IACZ,OAAO,EAAE,WAAW;IACpB,MAAM,EAAE;KACP,WAAW,EAAE,cAAc;KAC3B;IACD;;GAED;EACD;CACD,QAAQ,EAAE,mBAAmB;CAC7B,CAAC;;;AAGF,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,EAAE;;CAErC,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;EAC1B,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;EAC5D;CACD,CAAC,CAAC;;AAEH,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;AAC7C,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;AAC9C,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;AAChD,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;;;;;;;AAO7C,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG;CACrB,SAAS,EAAE,kBAAkB;CAC7B,QAAQ,EAAE;EACT,OAAO,EAAE,2BAA2B;EACpC,MAAM,EAAE;GACP,MAAM,EAAE,SAAS;;GAEjB;EACD;CACD,KAAK,EAAE,8DAA8D;CACrE,UAAU,EAAE,8BAA8B;CAC1C,QAAQ,EAAE;EACT,OAAO,EAAE,6CAA6C;EACtD,MAAM,EAAE,IAAI;EACZ;CACD,UAAU,EAAE,wBAAwB;CACpC,WAAW,EAAE,iBAAiB;CAC9B,UAAU,EAAE,mBAAmB;CAC/B,aAAa,EAAE,UAAU;CACzB,CAAC;;AAEF,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;;AAElF,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE;CAC3B,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,EAAE;EAC7C,OAAO,EAAE;GACR,OAAO,EAAE,yCAAyC;GAClD,UAAU,EAAE,IAAI;GAChB,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG;GAC3B,KAAK,EAAE,cAAc;GACrB;EACD,CAAC,CAAC;;CAEH,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE;EACpD,YAAY,EAAE;GACb,OAAO,EAAE,sBAAsB;GAC/B,MAAM,EAAE;IACP,WAAW,EAAE;KACZ,OAAO,EAAE,YAAY;KACrB,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM;KACzC;IACD,aAAa,EAAE,uBAAuB;IACtC,YAAY,EAAE;KACb,OAAO,EAAE,KAAK;KACd,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG;KAC3B;IACD;GACD,KAAK,EAAE,cAAc;GACrB;EACD,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;CAC/B;;;;;;AAMD,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG;CACvB,SAAS,EAAE;EACV;GACC,OAAO,EAAE,2BAA2B;GACpC,UAAU,EAAE,IAAI;GAChB;EACD;GACC,OAAO,EAAE,kBAAkB;GAC3B,UAAU,EAAE,IAAI;GAChB;EACD;CACD,QAAQ,EAAE;EACT,OAAO,EAAE,8CAA8C;EACvD,MAAM,EAAE,IAAI;EACZ;CACD,YAAY,EAAE;EACb,OAAO,EAAE,sGAAsG;EAC/G,UAAU,EAAE,IAAI;EAChB,MAAM,EAAE;GACP,WAAW,EAAE,SAAS;GACtB;EACD;CACD,SAAS,EAAE,0GAA0G;CACrH,SAAS,EAAE,kBAAkB;CAC7B,UAAU,EAAE,mBAAmB;CAC/B,QAAQ,EAAE,+CAA+C;CACzD,UAAU,EAAE,yDAAyD;CACrE,aAAa,EAAE,eAAe;CAC9B,CAAC;;;;;;;AAOF,KAAK,CAAC,SAAS,CAAC,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE;CAC5D,SAAS,EAAE,2TAA2T;CACtU,QAAQ,EAAE,8EAA8E;;CAExF,UAAU,EAAE,uDAAuD;CACnE,UAAU,EAAE,kEAAkE;CAC9E,CAAC,CAAC;;AAEH,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,SAAS,EAAE;CACrD,OAAO,EAAE;EACR,OAAO,EAAE,8EAA8E;EACvF,UAAU,EAAE,IAAI;EAChB,MAAM,EAAE,IAAI;EACZ;CACD,CAAC,CAAC;;AAEH,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,QAAQ,EAAE;CACpD,iBAAiB,EAAE;EAClB,OAAO,EAAE,uBAAuB;EAChC,MAAM,EAAE,IAAI;EACZ,MAAM,EAAE;GACP,eAAe,EAAE;IAChB,OAAO,EAAE,aAAa;IACtB,MAAM,EAAE;KACP,2BAA2B,EAAE;MAC5B,OAAO,EAAE,WAAW;MACpB,KAAK,EAAE,aAAa;MACpB;KACD,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,UAAU;KAChC;IACD;GACD,QAAQ,EAAE,SAAS;GACnB;EACD;CACD,CAAC,CAAC;;AAEH,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE;CAC3B,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,EAAE;EAC7C,QAAQ,EAAE;GACT,OAAO,EAAE,2CAA2C;GACpD,UAAU,EAAE,IAAI;GAChB,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,UAAU;GAClC,KAAK,EAAE,qBAAqB;GAC5B;EACD,CAAC,CAAC;CACH;;AAED,KAAK,CAAC,SAAS,CAAC,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC;;;;;;AAMhD,CAAC,YAAY;CACZ,IAAI,OAAO,IAAI,KAAK,WAAW,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;EAC5F,OAAO;EACP;;CAED,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,WAAW;;EAErC,IAAI,UAAU,GAAG;GAChB,IAAI,EAAE,YAAY;GAClB,IAAI,EAAE,QAAQ;GACd,IAAI,EAAE,MAAM;GACZ,KAAK,EAAE,YAAY;GACnB,MAAM,EAAE,YAAY;GACpB,IAAI,EAAE,MAAM;GACZ,KAAK,EAAE,OAAO;GACd,GAAG,EAAE,GAAG;GACR,KAAK,EAAE,OAAO;GACd,CAAC;;EAEF,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE;GAC3B,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,GAAG,EAAE;IAC7F,IAAI,GAAG,GAAG,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;;IAEvC,IAAI,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC;IAC3B,IAAI,IAAI,GAAG,gCAAgC,CAAC;IAC5C,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;KAC9C,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;KAC3B;;IAED,IAAI,MAAM,EAAE;KACX,QAAQ,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KACpD;;IAED,IAAI,CAAC,QAAQ,EAAE;KACd,IAAI,SAAS,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KACrD,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;KAC9C;;IAED,IAAI,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC1C,IAAI,CAAC,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;;IAExC,GAAG,CAAC,WAAW,GAAG,EAAE,CAAC;;IAErB,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;;IAE9B,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;;IAEtB,IAAI,GAAG,GAAG,IAAI,cAAc,EAAE,CAAC;;IAE/B,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;;IAE3B,GAAG,CAAC,kBAAkB,GAAG,YAAY;KACpC,IAAI,GAAG,CAAC,UAAU,IAAI,CAAC,EAAE;;MAExB,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,YAAY,EAAE;OACzC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,YAAY,CAAC;;OAEpC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;OAC7B;WACI,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE;OAC3B,IAAI,CAAC,WAAW,GAAG,UAAU,GAAG,GAAG,CAAC,MAAM,GAAG,wBAAwB,GAAG,GAAG,CAAC,UAAU,CAAC;OACvF;WACI;OACJ,IAAI,CAAC,WAAW,GAAG,0CAA0C,CAAC;OAC9D;MACD;KACD,CAAC;;IAEF,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC,CAAC;GACH;;EAED,CAAC;;CAEF,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;;CAExE,GAAG,CAAC;;;ACxxBL,aAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjC7C,IAAI,YAAY,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;EAClE,YAAY,CAAC,OAAO,CAAC,UAAA,EAAE,EAAC;IACtBA,IAAI,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC;IAC7B,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC;IAClBA,IAAI,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IAC3CA,IAAI,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE;;MAEnC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;MACpCA,IAAI,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;MAChC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;MAC9D,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;MACzBA,IAAI,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;MACjC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;MACjB,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;KACnB,MAAM;MACL,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;KACnB;IACDA,IAAI,WAAW,GAAG,OAAO,CAAC;IAC1B,IAAI8C,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;MAC7B,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,QAAQ,CAAC,CAAC;MAChD,WAAW,GAAGA,KAAK,CAAC,SAAS,CAAC,OAAO,EAAEA,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;KACnE;IACD,CAAC,CAAC,SAAS,GAAG,WAAW,CAAC;GAC3B,CAAC,CAAC;CACJ,CAAA;;AC5BD,cAAe,SAAS,GAAG,EAAE,IAAI,EAAE;;EAEjC,IAAI,SAAS,GAAG,GAAG,CAAC,gBAAgB;IAClC,GAAG,CAAC,IAAI;IACR,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS;GACrC,CAAC;EACF,OAAO,SAAS,CAAC,QAAQ,EAAE,EAAE;IAC3B,IAAI,CAAC,GAAG,SAAS,CAAC,WAAW;QACzB,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC;IACvB,IAAI,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE;MACzB,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;MACpB,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;MACzB,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC;KACpB;GACF;CACF,CAAA;;AAED,SAAS,UAAU,CAAC,IAAI,EAAE;EACxB,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;EAChC,IAAI,MAAM,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;EAC1L,OAAO,MAAM;SACN,MAAM,CAAC,QAAQ,KAAK,QAAQ;SAC5B,MAAM,CAAC,QAAQ,KAAK,OAAO;SAC3B,MAAM,CAAC,QAAQ,KAAK,MAAM;SAC1B,MAAM,CAAC,QAAQ,KAAK,KAAK;SACzB,MAAM,CAAC,QAAQ,KAAK,MAAM;SAC1B,MAAM,CAAC,QAAQ,KAAK,WAAW;SAC/B,MAAM,CAAC,QAAQ,KAAK,WAAW;SAC/B,MAAM,CAAC,QAAQ,KAAK,SAAS;SAC7B,MAAM,CAAC,QAAQ,KAAK,SAAS;SAC7B,MAAM,CAAC,QAAQ,KAAK,iBAAiB;SACrC,MAAM,CAAC,QAAQ,KAAK,WAAW;SAC/B,MAAM,CAAC,QAAQ,KAAK,CAAC;SACrB,CAAC,MAAM,CAAC;CAChB;;;;;;;;;;;;;AAaD,SAAS,WAAW,CAAC,IAAI,CAAC;;;EAGxB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;EACrC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;;;EAGtD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;;;EAGnC,IAAI,IAAI,GAAG,QAAQ,CAAC;EACpB,IAAI,sBAAsB,GAAG,WAAW,CAAC;EACzC,IAAI,oBAAoB,GAAG,mBAAmB,CAAC;;EAE/C,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC;EACzD,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC;;EAEvD,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,MAAM,CAAC,IAAI,EAAE;;EAEpB,IAAI,GAAG,IAAI;KACR,OAAO,CAAC,4BAA4B,EAAE,YAAY,CAAC;KACnD,OAAO,CAAC,2CAA2C,EAAE,YAAY,CAAC;KAClE,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC;KAChC,OAAO,CAAC,cAAc,EAAE,YAAY,CAAC;KACrC,OAAO,CAAC,mBAAmB,EAAE,YAAY,CAAC;KAC1C,OAAO,CAAC,oCAAoC,EAAE,YAAY,CAAC;KAC3D,OAAO,CAAC,gEAAgE,EAAE,YAAY,CAAC;KACvF,OAAO,CAAC,+FAA+F,EAAE,UAAU,CAAC;KACpH,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC;KACzB,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC;KAC5B,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;;;EAG3B,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;EACjC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;EACjC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;EACjC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;;EAEjC,OAAO,IAAI,CAAC;CACb,AAED,AAMC,AAAC;;;;AC/FF,eAAe,SAAS,GAAG,EAAE;EAC3B9C,IAAI,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;EACpC,CAAC,CAAC,WAAW,GAAG+C,MAAI,CAAC;EACrB,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;CAC1C,CAAA;;ACND;;AAEA,uBAAe,SAAS,IAAI,EAAE;;;EAG5B,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC;;EAE9B,IAAI,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;EACpD,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC;MAClG,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;MACrC,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,eAAe,CAAC;;EAElG,IAAI,QAAQ;IACV,CAAC,SAAS,GAAG;;MAEX,EAAE,KAAK,EAAE;QACP,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE,sCAAsC;QAC7C,WAAW,EAAE,2CAA2C;QACxD,oBAAoB,EAAE,wFAAwF;OAC/G,CAAC;;MAEF,EAAE,IAAI,EAAE;QACN,CAAC,YAAY,EAAE,QAAQ,CAAC;QACxB,CAAC,SAAS,EAAE,eAAe,CAAC;QAC5B,CAAC,SAAS,EAAE;UACV,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;UAC5C,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAC7C,CAAC;QACF,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EACzC,CAAC;;MAEF,CAAC,IAAI,EAAE;QACL,CAAC,OAAO,EAAE;;UAER,CAAC,gBAAgB,EAAE;YACjB,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YAC3D,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YAC1F,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YACzB,CAAC,QAAQ,EAAE;cACT,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;cACvB,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAC7B,CAAC,EACH,CAAC;;UAEF,CAAC,aAAa,EAAE;YACd,CAAC,gBAAgB,EAAE;cACjB,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;cAC1B,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,EAC3B,CAAC;YACF,CAAC,cAAc,EAAE;cACf,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EACtB,CAAC;YACF,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EACpB,CAAC;;UAEF,CAAC,eAAe,EAAE;YAChB,CAAC,MAAM,EAAE;cACP,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EACpB,CAAC;YACF,EAAE,YAAY;cACZ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,MAAM,EAAE,GAAG,EAAE,SAAG;gBAChC,CAAC,WAAW,EAAE;kBACZ,EAAE,KAAK,EAAE;oBACP,gBAAgB,EAAE,QAAQ;oBAC1B,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,OAAO,GAAG,YAAY;mBAC7C,CAAC;kBACF,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC;kBAC9B,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC;kBAC1B,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC;;iBAElC,CAAC;eACH,GAAA,CAAC;aACH;YACD,CAAC,gBAAgB,EAAE;gBACf,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;gBAC1B,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACrB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;aAC7B,CAAC;YACF,EAAE,cAAc,EAAE;cAChB,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC;aACxB,CAAC;YACF,CAAC,QAAQ,EAAE;cACT,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;;cAEf,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,EACrB,CAAC;YACF,CAAC,aAAa;cACZ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAA,GAAG,EAAC,SACnB,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAA,CAAC;aAC/C;;WAEF,CAAC,EAEH,CAAC,EACH,CAAC,EACH,CAAC,CAAC;;EAEL,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC;CACtB,CAAA;;AAED,SAAS,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC;EAC7B,IAAI,GAAG,IAAI,SAAS,EAAE,EAAA,OAAO,EAAE,CAAC,EAAA;EAChC,IAAI,IAAI,GAAG,EAAE,CAAC;EACd,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;EAC/B,IAAI,OAAO,IAAI,GAAG;IAChB,EAAA,IAAI,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAA;EACxC,IAAI,QAAQ,IAAI,GAAG;IACjB,EAAA,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAA;EACzE,IAAI,SAAS,IAAI,GAAG;IAClB,EAAA,IAAI,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAA;EAC1C,IAAI,WAAW,IAAI,GAAG;IACpB,EAAA,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAA;EAC3C,IAAI,QAAQ,IAAI,GAAG;IACjB,EAAA,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAA;EAClC,IAAI,OAAO,IAAI,GAAG;IAChB,EAAA,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAA;EAChC,IAAI,KAAK,IAAI,GAAG;IACd,EAAA,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAA;EAC5B,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;CACxB;;AAED,SAAS,GAAG,CAAC,GAAG,EAAE;;EAEhB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,EAAA,OAAO,GAAG,CAAC,EAAA;EACxC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,EAAA,OAAO,EAAE,CAAC,GAAG,CAAC,EAAA;EAC3C/C,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC5B,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,EAAA,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,EAAA;EACvEA,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;EACnB,IAAI,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;EAC7B,IAAI,IAAI,GAAG,EAAE,CAAC;EACd,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9B,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,KAAK,IAAI,CAAC,KAAK,YAAY,EAAE;MAC3B,IAAI,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;MAC1B,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MACnC,IAAI,OAAO,IAAI,QAAQ,EAAE;QACvB,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;OACrB,MAAM;;QAEL,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;OACnB;KACF;GACF,MAAM;IACL,OAAO,GAAG,YAAY,CAAC;GACxB;EACD,IAAI,OAAO,IAAI,SAAS,CAAC;IACvB,OAAO,GAAG,WAAW,CAAA;GACtB;;EAEDA,IAAI,WAAW,GAAG,EAAE,CAAC;EACrB,KAAK,IAAI,CAAC,IAAI,IAAI,EAAE;IAClB,WAAW,IAAI,GAAE,GAAE,CAAC,QAAI,IAAE,IAAI,CAAC,CAAC,CAAC,CAAA,OAAG,CAAA;GACrC;;;EAGD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACzB,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,UAAA,CAAC,EAAC,SAAG,IAAI,GAAG,CAAC,GAAA,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC/C,IAAI,MAAM,GAAG,GAAE,GAAE,IAAI,GAAG,WAAW,QAAI,GAAE,OAAO,SAAK,GAAE,IAAI,MAAE,CAAE;GAChE,MAAM;IACL,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;IACvB,IAAI,MAAM,GAAG,GAAE,GAAE,IAAI,GAAG,WAAW,MAAE,GAAE,OAAO,OAAG,GAAE,IAAI,MAAE,CAAE;GAC5D;EACD,OAAO,MAAM,CAAC;CACf;;;;ACpKD0C,IAAMC,MAAI,GAAG,8tCAoET,GAAE,IAAI,iLASV,CAAA;;AAEA,aAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjC3C,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;EACxC,GAAG,EAAE,EAAE;IACL,EAAE,CAAC,SAAS,GAAG2C,MAAI,CAAC;GACrB,MAAM;IACL3C,IAAI,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAC5C,MAAM,CAAC,SAAS,GAAG2C,MAAI,CAAC;IACxB3C,IAAI,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;GACtC;CACF,CAAA;;ACzFDA,IAAI2C,MAAI,GAAG,6yBAyCP,GAAE,IAAI,2ZAaV,CAAE;;AAEF,aAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjC3C,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;EACxC,GAAG,EAAE,EAAE;IACL,EAAE,CAAC,SAAS,GAAG2C,MAAI,CAAC;GACrB,MAAM;IACL3C,IAAI,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAC5C,MAAM,CAAC,SAAS,GAAG2C,MAAI,CAAC;IACxB3C,IAAI,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;GACvB;CACF,CAAA;;ACjDD,SAAS,iBAAiB,CAAC,GAAG,EAAE;EAC9B,IAAI,CAAC,GAAG,CAAC,CAAC;EACV,MAAM,CAAC,GAAG,CAAC,CAAC;CACb;;AAED,SAAS,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE;EAC/B,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACvB,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACxB,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACtB,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EAChB,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EAClB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACpB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACpB+C,MAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EAChB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACpB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACpB,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACnB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;CACrB;;;AAGD,GAAG,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE;EAC5B/C,IAAI,IAAI,GAAG,EAAE,CAAC;EACd,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;EACnC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,UAAC,KAAK,EAAE;IAC3D,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;;IAEpC,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE;MACpF,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;KAC/B;IACD,gBAAgB,CAAC,IAAI,CAAC,CAAC;GACxB,CAAC,CAAC;CACJ;;;AAGD,SAASgD,QAAM,CAAC,GAAG,EAAE,IAAI,EAAE;EACzB,iBAAiB,CAAC,GAAG,CAAC,CAAC;EACvB,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;;EAExBhD,IAAI,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,qCAAqC,CAAC,CAAC;EACjE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,AAAC;CAC5C;;;AAGD,SAAS,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE;EAC7B,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EAClB,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;CACnB,AAED,AACA,AACA,AAA8C;;;;;;;;"} \ No newline at end of file +{"version":3,"file":null,"sources":["../components/html.js","../components/styles.js","../node_modules/js-yaml/lib/js-yaml/common.js","../node_modules/js-yaml/lib/js-yaml/exception.js","../node_modules/js-yaml/lib/js-yaml/mark.js","../node_modules/js-yaml/lib/js-yaml/type.js","../node_modules/js-yaml/lib/js-yaml/schema.js","../node_modules/js-yaml/lib/js-yaml/type/str.js","../node_modules/js-yaml/lib/js-yaml/type/seq.js","../node_modules/js-yaml/lib/js-yaml/type/map.js","../node_modules/js-yaml/lib/js-yaml/schema/failsafe.js","../node_modules/js-yaml/lib/js-yaml/type/null.js","../node_modules/js-yaml/lib/js-yaml/type/bool.js","../node_modules/js-yaml/lib/js-yaml/type/int.js","../node_modules/js-yaml/lib/js-yaml/type/float.js","../node_modules/js-yaml/lib/js-yaml/schema/json.js","../node_modules/js-yaml/lib/js-yaml/schema/core.js","../node_modules/js-yaml/lib/js-yaml/type/timestamp.js","../node_modules/js-yaml/lib/js-yaml/type/merge.js","../node_modules/js-yaml/lib/js-yaml/type/binary.js","../node_modules/js-yaml/lib/js-yaml/type/omap.js","../node_modules/js-yaml/lib/js-yaml/type/pairs.js","../node_modules/js-yaml/lib/js-yaml/type/set.js","../node_modules/js-yaml/lib/js-yaml/schema/default_safe.js","../node_modules/js-yaml/lib/js-yaml/type/js/undefined.js","../node_modules/js-yaml/lib/js-yaml/type/js/regexp.js","../node_modules/js-yaml/lib/js-yaml/type/js/function.js","../node_modules/js-yaml/lib/js-yaml/schema/default_full.js","../node_modules/js-yaml/lib/js-yaml/loader.js","../node_modules/js-yaml/lib/js-yaml/dumper.js","../node_modules/js-yaml/lib/js-yaml.js","../node_modules/js-yaml/index.js","../components/front-matter.js","../node_modules/bibtex-parse-js/bibtexParse.js","../components/bibliography.js","../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/utcMinute.js","../node_modules/d3-time/src/utcHour.js","../node_modules/d3-time/src/utcDay.js","../node_modules/d3-time/src/utcWeek.js","../node_modules/d3-time/src/utcMonth.js","../node_modules/d3-time/src/utcYear.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-time-format/src/isoFormat.js","../node_modules/d3-time-format/src/isoParse.js","../components/expand-data.js","../../node_modules/escape-html/index.js","../components/meta.js","../components/banner.js","../node_modules/mustache/mustache.js","../components/byline.js","../components/appendix.js","../components/appendix-distill.js","../components/citation.js","../components/footnote.js","../node_modules/marked/lib/marked.js","../components/markdown.js","../node_modules/prismjs/prism.js","../components/code.js","../components/typeset.js","../components/hover-box-include.js","../components/generate-crossref.js","../components/header.js","../components/footer.js","../index.js"],"sourcesContent":["export default function(dom) {\n if (!dom.querySelector(\"html\").getAttribute(\"lang\")) {\n dom.querySelector(\"html\").setAttribute(\"lang\", \"en\")\n }\n\n let head = dom.querySelector(\"head\");\n\n if (!dom.querySelector(\"meta[charset]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"charset\", \"utf-8\");\n head.appendChild(meta);\n }\n if (!dom.querySelector(\"meta[name=viewport]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"name\", \"viewport\");\n meta.setAttribute(\"content\", \"width=device-width, initial-scale=1\");\n head.appendChild(meta);\n }\n}\n","import base from './styles-base.css';\nimport layout from './styles-layout.css';\nimport article from './styles-article.css';\nimport code from './styles-code.css';\nimport print from './styles-print.css';\n\nexport default function(dom) {\n let s = dom.createElement(\"style\");\n s.textContent = base + layout + article + code + print;\n dom.querySelector(\"head\").appendChild(s);\n}\n","'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n var result = this.name + ': ';\n\n result += this.reason || '(unknown reason)';\n\n if (!compact && this.mark) {\n result += ' ' + this.mark.toString();\n }\n\n return result;\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n\nvar common = require('./common');\n\n\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\n\n\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head, start, tail, end, snippet;\n\n if (!this.buffer) return null;\n\n indent = indent || 4;\n maxLength = maxLength || 75;\n\n head = '';\n start = this.position;\n\n while (start > 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n\n tail = '';\n end = this.position;\n\n while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n\n snippet = this.buffer.slice(start, end);\n\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' +\n common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\n\nMark.prototype.toString = function toString(compact) {\n var snippet, where = '';\n\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n if (!compact) {\n snippet = this.getSnippet();\n\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n\n return where;\n};\n\n\nmodule.exports = Mark;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name, result) {\n var exclude = [];\n\n schema.include.forEach(function (includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n\n schema[name].forEach(function (currentType) {\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n exclude.push(previousIndex);\n }\n });\n\n result.push(currentType);\n });\n\n return result.filter(function (type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {}\n }, index, length;\n\n function collectType(type) {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n\n this.implicit.forEach(function (type) {\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n });\n\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\n\nSchema.DEFAULT = null;\n\n\nSchema.create = function createSchema() {\n var schemas, types;\n\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n\n if (!schemas.every(function (schema) { return schema instanceof Schema; })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n\n if (!types.every(function (type) { return type instanceof Type; })) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n return new Schema({\n include: schemas,\n explicit: types\n });\n};\n\n\nmodule.exports = Schema;\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 8\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 10 (except 0) or base 60\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch === ':') break;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n if (!hasDigits) return false;\n\n // if !base60 - done;\n if (ch !== ':') return true;\n\n // base60 almost not used, no needs to optimize\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch, base, digits = [];\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value, 16);\n return sign * parseInt(value, 8);\n }\n\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseInt(v, 10));\n });\n\n value = 0;\n base = 1;\n\n digits.forEach(function (d) {\n value += (d * base);\n base *= 60;\n });\n\n return sign * value;\n\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (object) { return '0b' + object.toString(2); },\n octal: function (object) { return '0' + object.toString(8); },\n decimal: function (object) { return object.toString(10); },\n hexadecimal: function (object) { return '0x' + object.toString(16).toUpperCase(); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n '^(?:[-+]?(?:[0-9][0-9_]*)\\\\.[0-9_]*(?:[eE][-+][0-9]+)?' +\n '|\\\\.[0-9_]+(?:[eE][-+][0-9]+)?' +\n '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' +\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data)) return false;\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign, base, digits;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n\n } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n\n value = 0.0;\n base = 1;\n\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n\n return sign * value;\n\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./failsafe')\n ],\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./json')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\nvar NodeBuffer;\n\ntry {\n // A trick for browserified version, to not include `Buffer` shim\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n // Wrap into Buffer for NodeJS and leave Array for browser\n if (NodeBuffer) return new NodeBuffer(result);\n\n return result;\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./core')\n ],\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n return true;\n}\n\nfunction constructJavascriptUndefined() {\n /*eslint-disable no-undefined*/\n return undefined;\n}\n\nfunction representJavascriptUndefined() {\n return '';\n}\n\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n if (data === null) return false;\n if (data.length === 0) return false;\n\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // if regexp starts with '/' it can have modifiers and must be properly closed\n // `/foo/gim` - modifiers tail can be maximum 3 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n\n if (modifiers.length > 3) return false;\n // if expression starts with /, is should be properly terminated\n if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n }\n\n return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // `/foo/gim` - tail can be maximum 4 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n\n return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object /*, style*/) {\n var result = '/' + object.source + '/';\n\n if (object.global) result += 'g';\n if (object.multiline) result += 'm';\n if (object.ignoreCase) result += 'i';\n\n return result;\n}\n\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n","'use strict';\n\nvar esprima;\n\n// Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n// If not found - try to fallback to window.esprima. If not\n// found too - then fail to parse.\n//\ntry {\n // workaround to exclude package from browserify list.\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n /*global window */\n if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n if (data === null) return false;\n\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true });\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction constructJavascriptFunction(data) {\n /*jslint evil:true*/\n\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true }),\n params = [],\n body;\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n throw new Error('Failed to resolve function');\n }\n\n ast.body[0].expression.params.forEach(function (param) {\n params.push(param.name);\n });\n\n body = ast.body[0].expression.body.range;\n\n // Esprima's ranges include the first '{' and the last '}' characters on\n // function expressions. So cut them out.\n /*eslint-disable no-new-func*/\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n}\n\nfunction representJavascriptFunction(object /*, style*/) {\n return object.toString();\n}\n\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n","// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [\n require('./default_safe')\n ],\n explicit: [\n require('../type/js/undefined'),\n require('../type/js/regexp'),\n require('../type/js/function')\n ]\n});\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00);\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n return new YAMLException(\n message,\n new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length;\n _position < _length;\n _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode) {\n var index, quantity;\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n throwError(state, 'duplicated mapping key');\n }\n _result[keyNode] = valueNode;\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else {\n break; // Reading is done. Go to the epilogue.\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if (state.lineIndent > nodeIndent && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!state.anchorMap.hasOwnProperty(alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag !== null && state.tag !== '!') {\n if (state.tag === '?') {\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length;\n typeIndex < typeQuantity;\n typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only assigned to plain scalars. So, it isn't\n // needed to check for 'kind' conformity.\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = {};\n state.anchorMap = {};\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n var documents = loadDocuments(input, options), index, length;\n\n for (index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nfunction safeLoadAll(input, output, options) {\n loadAll(input, output, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nfunction safeLoad(input, options) {\n return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// Simplified test for values allowed after the first character in plain style.\nfunction isPlainSafe(c) {\n // Uses a subset of nb-char - c-flow-indicator - \":\" - \"#\"\n // where nb-char ::= c-printable - b-char - c-byte-order-mark.\n return isPrintable(c) && c !== 0xFEFF\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // - \":\" - \"#\"\n && c !== CHAR_COLON\n && c !== CHAR_SHARP;\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n return isPrintable(c) && c !== 0xFEFF\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {\n var i;\n var char;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(string.charCodeAt(0))\n && !isWhitespace(string.charCodeAt(string.length - 1));\n\n if (singleLineOnly) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n return plain && !testAmbiguousType(string)\n ? STYLE_PLAIN : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (string[0] === ' ' && indentPerLevel > 9) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey) {\n state.dump = (function () {\n if (string.length === 0) {\n return \"''\";\n }\n if (!state.noCompatMode &&\n DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n return \"'\" + string + \"'\";\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = (string[0] === ' ') ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char;\n var escapeSeq;\n\n for (var i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n result += !escapeSeq && isPrintable(char)\n ? string[i]\n : escapeSeq || encodeHex(char);\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level, object[index], false, false)) {\n if (index !== 0) _result += ', ';\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || index !== 0) {\n _result += generateNextLine(state, level);\n }\n _result += '- ' + state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (index !== 0) pairBuffer += ', ';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + ': ';\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || index !== 0) {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n state.tag = explicit ? type.tag : '?';\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n writeBlockSequence(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey);\n }\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n state.dump = '!<' + state.tag + '> ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n if (writeNode(state, 0, input, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nfunction safeDump(input, options) {\n return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n","'use strict';\n\n\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\n\n\nfunction deprecated(name) {\n return function () {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\n\n\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\n\n// Deprecated schema names from JS-YAML 2.0.x\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\n\n// Deprecated functions from JS-YAML 1.x.x\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","'use strict';\n\n\nvar yaml = require('./lib/js-yaml.js');\n\n\nmodule.exports = yaml;\n","import ymlParse from \"js-yaml\";\n\nexport default function(dom, data) {\n let localData = {};\n let el = dom.querySelector('script[type=\"text/front-matter\"]');\n if (el) {\n let text = el.textContent;\n localData = ymlParse.safeLoad(text);\n }\n\n data.title = localData.title ? localData.title : \"Untitled\";\n data.description = localData.description ? localData.description : \"No description.\";\n\n data.authors = localData.authors ? localData.authors : [];\n\n data.authors = data.authors.map((author, i) =>{\n let a = {};\n let name = Object.keys(author)[0];\n if ((typeof author) === \"string\") {\n name = author;\n } else {\n a.personalURL = author[name];\n }\n let names = name.split(\" \");\n a.name = name;\n a.firstName = names.slice(0, names.length - 1).join(\" \");\n a.lastName = names[names.length -1];\n if(localData.affiliations[i]) {\n let affiliation = Object.keys(localData.affiliations[i])[0];\n if ((typeof localData.affiliations[i]) === \"string\") {\n affiliation = localData.affiliations[i]\n } else {\n a.affiliationURL = localData.affiliations[i][affiliation];\n }\n a.affiliation = affiliation;\n }\n return a;\n });\n \n\n}\n","/* start bibtexParse 0.0.22 */\n\n//Original work by Henrik Muehe (c) 2010\n//\n//CommonJS port by Mikola Lysenko 2013\n//\n//Port to Browser lib by ORCID / RCPETERS\n//\n//Issues:\n//no comment handling within strings\n//no string concatenation\n//no variable values yet\n//Grammar implemented here:\n//bibtex -> (string | preamble | comment | entry)*;\n//string -> '@STRING' '{' key_equals_value '}';\n//preamble -> '@PREAMBLE' '{' value '}';\n//comment -> '@COMMENT' '{' value '}';\n//entry -> '@' key '{' key ',' key_value_list '}';\n//key_value_list -> key_equals_value (',' key_equals_value)*;\n//key_equals_value -> key '=' value;\n//value -> value_quotes | value_braces | key;\n//value_quotes -> '\"' .*? '\"'; // not quite\n//value_braces -> '{' .*? '\"'; // not quite\n(function(exports) {\n\n function BibtexParser() {\n \n this.months = [\"jan\", \"feb\", \"mar\", \"apr\", \"may\", \"jun\", \"jul\", \"aug\", \"sep\", \"oct\", \"nov\", \"dec\"];\n this.notKey = [',','{','}',' ','='];\n this.pos = 0;\n this.input = \"\";\n this.entries = new Array();\n\n this.currentEntry = \"\";\n\n this.setInput = function(t) {\n this.input = t;\n };\n\n this.getEntries = function() {\n return this.entries;\n };\n\n this.isWhitespace = function(s) {\n return (s == ' ' || s == '\\r' || s == '\\t' || s == '\\n');\n };\n\n this.match = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n this.pos += s.length;\n } else {\n throw \"Token mismatch, expected \" + s + \", found \"\n + this.input.substring(this.pos);\n };\n this.skipWhitespace(canCommentOut);\n };\n\n this.tryMatch = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n return true;\n } else {\n return false;\n };\n this.skipWhitespace(canCommentOut);\n };\n\n /* when search for a match all text can be ignored, not just white space */\n this.matchAt = function() {\n while (this.input.length > this.pos && this.input[this.pos] != '@') {\n this.pos++;\n };\n\n if (this.input[this.pos] == '@') {\n return true;\n };\n return false;\n };\n\n this.skipWhitespace = function(canCommentOut) {\n while (this.isWhitespace(this.input[this.pos])) {\n this.pos++;\n };\n if (this.input[this.pos] == \"%\" && canCommentOut == true) {\n while (this.input[this.pos] != \"\\n\") {\n this.pos++;\n };\n this.skipWhitespace(canCommentOut);\n };\n };\n\n this.value_braces = function() {\n var bracecount = 0;\n this.match(\"{\", false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '}') {\n if (bracecount > 0) {\n bracecount--;\n } else {\n var end = this.pos;\n this.match(\"}\", false);\n return this.input.substring(start, end);\n };\n } else if (this.input[this.pos] == '{') {\n bracecount++;\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value\";\n };\n };\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.value_comment = function() {\n var str = '';\n var brcktCnt = 0;\n while (!(this.tryMatch(\"}\", false) && brcktCnt == 0)) {\n str = str + this.input[this.pos];\n if (this.input[this.pos] == '{')\n brcktCnt++;\n if (this.input[this.pos] == '}')\n brcktCnt--;\n if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n this.pos++;\n };\n return str;\n };\n\n this.value_quotes = function() {\n this.match('\"', false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '\"') {\n var end = this.pos;\n this.match('\"', false);\n return this.input.substring(start, end);\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n }\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.single_value = function() {\n var start = this.pos;\n if (this.tryMatch(\"{\")) {\n return this.value_braces();\n } else if (this.tryMatch('\"')) {\n return this.value_quotes();\n } else {\n var k = this.key();\n if (k.match(\"^[0-9]+$\"))\n return k;\n else if (this.months.indexOf(k.toLowerCase()) >= 0)\n return k.toLowerCase();\n else\n throw \"Value expected:\" + this.input.substring(start) + ' for key: ' + k;\n \n };\n };\n\n this.value = function() {\n var values = [];\n values.push(this.single_value());\n while (this.tryMatch(\"#\")) {\n this.match(\"#\");\n values.push(this.single_value());\n };\n return values.join(\"\");\n };\n\n this.key = function() {\n var start = this.pos;\n while (true) {\n if (this.pos >= this.input.length) {\n throw \"Runaway key\";\n };\n // а-яА-Я is Cyrillic\n //console.log(this.input[this.pos]);\n if (this.notKey.indexOf(this.input[this.pos]) >= 0) {\n return this.input.substring(start, this.pos);\n } else {\n this.pos++;\n \n };\n };\n };\n\n this.key_equals_value = function() {\n var key = this.key();\n if (this.tryMatch(\"=\")) {\n this.match(\"=\");\n var val = this.value();\n return [ key, val ];\n } else {\n throw \"... = value expected, equals sign missing:\"\n + this.input.substring(this.pos);\n };\n };\n\n this.key_value_list = function() {\n var kv = this.key_equals_value();\n this.currentEntry['entryTags'] = {};\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n while (this.tryMatch(\",\")) {\n this.match(\",\");\n // fixes problems with commas at the end of a list\n if (this.tryMatch(\"}\")) {\n break;\n }\n ;\n kv = this.key_equals_value();\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n };\n };\n\n this.entry_body = function(d) {\n this.currentEntry = {};\n this.currentEntry['citationKey'] = this.key();\n this.currentEntry['entryType'] = d.substring(1);\n this.match(\",\");\n this.key_value_list();\n this.entries.push(this.currentEntry);\n };\n\n this.directive = function() {\n this.match(\"@\");\n return \"@\" + this.key();\n };\n\n this.preamble = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'PREAMBLE';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.comment = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'COMMENT';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.entry = function(d) {\n this.entry_body(d);\n };\n\n this.bibtex = function() {\n while (this.matchAt()) {\n var d = this.directive();\n this.match(\"{\");\n if (d == \"@STRING\") {\n this.string();\n } else if (d == \"@PREAMBLE\") {\n this.preamble();\n } else if (d == \"@COMMENT\") {\n this.comment();\n } else {\n this.entry(d);\n }\n this.match(\"}\");\n };\n };\n };\n \n exports.toJSON = function(bibtex) {\n var b = new BibtexParser();\n b.setInput(bibtex);\n b.bibtex();\n return b.entries;\n };\n\n /* added during hackathon don't hate on me */\n exports.toBibtex = function(json) {\n var out = '';\n for ( var i in json) {\n out += \"@\" + json[i].entryType;\n out += '{';\n if (json[i].citationKey)\n out += json[i].citationKey + ', ';\n if (json[i].entry)\n out += json[i].entry ;\n if (json[i].entryTags) {\n var tags = '';\n for (var jdx in json[i].entryTags) {\n if (tags.length != 0)\n tags += ', ';\n tags += jdx + '= {' + json[i].entryTags[jdx] + '}';\n }\n out += tags;\n }\n out += '}\\n\\n';\n }\n return out;\n \n };\n\n})(typeof exports === 'undefined' ? this['bibtexParse'] = {} : exports);\n\n/* end bibtexParse */\n","import bibtexParse from \"bibtex-parse-js\";\n\nexport default function(dom, data) {\n let el = dom.querySelector('script[type=\"text/bibliography\"]');\n let citations = [];\n let bibliography = {};\n //TODO If we don't have a local element, make a request for the document.\n if (el) {\n let rawBib = el.textContent;\n let parsed = bibtexParse.toJSON(rawBib);\n if(parsed) {\n parsed.forEach(e => {\n for (var k in e.entryTags){\n var val = e.entryTags[k];\n val = val.replace(/[\\t\\n ]+/g, \" \");\n val = val.replace(/{\\\\[\"^`\\.'acu~Hvs]( )?([a-zA-Z])}/g,\n (full, x, char) => char);\n val = val.replace(/{\\\\([a-zA-Z])}/g,\n (full, char) => char);\n e.entryTags[k.toLowerCase()] = val;\n }\n bibliography[e.citationKey] = e.entryTags;\n bibliography[e.citationKey].type = e.entryType;\n });\n }\n\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach(el => {\n let key = el.getAttribute(\"key\");\n if (key) {\n let citationKeys = key.split(\",\");\n citationKeys.forEach(key => {\n if (citations.indexOf(key) == -1){\n citations.push(key);\n if (!(key in bibliography)){\n console.warn(\"No bibliography entry found for: \" + key);\n }\n }\n });\n }\n });\n }\n data.bibliography = bibliography;\n data.citations = citations;\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(new Date(+start)); while (offseti(start, step), floori(start), start < stop)\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) while (--step >= 0) while (offseti(date, 1), !test(date)) {} // eslint-disable-line no-empty\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(Math.floor(date / durationSecond) * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(Math.floor(date / durationMinute) * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute} from \"./duration\";\n\nvar hour = interval(function(date) {\n var offset = date.getTimezoneOffset() * durationMinute % durationHour;\n if (offset < 0) offset += durationHour;\n date.setTime(Math.floor((+date - offset) / durationHour) * durationHour + offset);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval\";\nimport {durationWeek} from \"./duration\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {timeDay, timeSunday, timeMonday, timeYear, utcDay, utcSunday, utcMonday, utcYear} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"S\": formatSeconds,\n \"U\": formatWeekNumberSunday,\n \"w\": formatWeekdayNumber,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"S\": formatUTCSeconds,\n \"U\": formatUTCWeekNumberSunday,\n \"w\": formatUTCWeekdayNumber,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"S\": parseSeconds,\n \"U\": parseWeekNumberSunday,\n \"w\": parseWeekdayNumber,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0);\n if (i != string.length) return null;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n var day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?:\\:?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekdayNumber(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekdayNumber(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {timeFormat} from \"d3-time-format\";\n\nexport default function(dom, data) {\n\n data.authors = data.authors || [];\n\n // paths\n if (!data.distillPath && !data.url) {\n data.url = \"http://distill.pub/\";\n } else if (!data.url) {\n data.url = \"http://distill.pub/\" + data.distillPath;\n }\n data.githubUrl = \"https://github.com/\" + data.githubPath;\n\n data.previewURL = data.previewURL ? data.previewURL : data.url + \"/thumbnail.jpg\"\n\n // Homepage\n //data.homepage = !post.noHomepage;\n data.journal = data.journal || {};\n\n // Dates\n if (data.publishedDate){//} && data.journal) {\n data.volume = data.publishedDate.getFullYear() - 2015;\n data.issue = data.publishedDate.getMonth() + 1;\n }\n\n data.publishedDate = data.publishedDate ? data.publishedDate : new Date(\"Invalid\");\n data.updatedDate = data.updatedDate ? data.updatedDate : new Date(\"Invalid\");\n\n data.publishedDateRFC\n let RFC = timeFormat(\"%a, %d %b %Y %H:%M:%S %Z\");\n let months = [\"Jan\", \"Feb\", \"March\", \"April\", \"May\", \"June\", \"July\", \"Aug\", \"Sept\", \"Oct\", \"Nov\", \"Dec\"];\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n data.publishedDateRFC = RFC(data.publishedDate);\n data.publishedYear = data.publishedDate.getFullYear();\n data.publishedMonth = months[data.publishedDate.getMonth()];\n data.publishedDay = data.publishedDate.getDate();\n data.publishedMonthPadded = zeroPad(data.publishedDate.getMonth() + 1);\n data.publishedDayPadded = zeroPad(data.publishedDate.getDate());\n data.updatedDateRFC = RFC(data.updatedDate);\n\n if (data.authors.length > 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \", et al.\";\n } else if (data.authors.length === 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \" & \" + data.authors[1].lastName;\n } else if (data.authors.length === 1) {\n data.concatenatedAuthors = data.authors[0].lastName\n }\n\n data.bibtexAuthors = data.authors.map(function(author){\n return author.lastName + \", \" + author.firstName;\n }).join(\" and \");\n\n data.slug = data.authors.length ? data.authors[0].lastName.toLowerCase() + data.publishedYear + data.title.split(\" \")[0].toLowerCase() : \"Untitled\";\n\n}\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","import favicon from './distill-favicon.base64';\nimport escape from 'escape-html';\n\nexport default function(dom, data) {\n let head = dom.querySelector(\"head\");\n let appendHead = html => appendHtml(head, html);\n\n function meta(name, content, force) {\n if (content || force)\n appendHead(` \\n`);\n }\n\n appendHead(`\n \n \n \n \n ${data.title}\n `);\n\n appendHead(`\n \n \n \n `);\n data.authors.forEach((a) => {\n appendHtml(head, `\n `)\n });\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n // if this is a proprer article, generate Google Scholar meta data\n if (data.doiSuffix){\n appendHead(`\n \\n`);\n\n meta(\"citation_title\", data.title);\n //meta(\"citation_fulltext_html_url\", data.url);\n meta(\"citation_volume\", data.volume);\n meta(\"citation_issue\", data.issue);\n meta(\"citation_firstpage\", data.doiSuffix? `e${data.doiSuffix}` : undefined);\n meta(\"citation_doi\", data.doi);\n\n let journal = data.journal || {};\n meta(\"citation_journal_title\", journal.full_title || journal.title);\n meta(\"citation_journal_abbrev\", journal.abbrev_title);\n meta(\"citation_issn\", journal.issn);\n meta(\"citation_publisher\", journal.publisher);\n meta(\"citation_fulltext_world_readable\", \"\", true);\n\n if (data.publishedDate){\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n meta(\"citation_online_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n // Should we do something different here?\n meta(\"citation_publication_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n }\n\n (data.authors || []).forEach((a) => {\n meta(\"citation_author\", `${a.lastName}, ${a.firstName}`);\n meta(\"citation_author_institution\", a.affiliation);\n });\n\n if (data.citations) {\n data.citations.forEach(key => {\n let d = data.bibliography[key];\n if(!d) {\n console.warn(\"No bibliography data fround for \" + key)\n } else {\n meta(\"citation_reference\", citation_meta_content(data.bibliography[key]) )\n };\n });\n }\n }\n}\n\nfunction appendHtml(el, html) {\n el.innerHTML += html;\n}\n\nfunction citation_meta_content(ref){\n // Special test for arxiv\n var content = `citation_title=${ref.title};`;\n\n let name_strings = ref.author.split(\" and \").forEach(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1].trim();\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n content += `citation_author=${firsts} ${last};`;\n });\n\n if (\"year\" in ref) {\n content += `citation_publication_date=${ref.year};`;\n }\n\n var arxiv_id_search = /https?:\\/\\/arxiv\\.org\\/pdf\\/([0-9]*\\.[0-9]*)\\.pdf/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /https?:\\/\\/arxiv\\.org\\/abs\\/([0-9]*\\.[0-9]*)/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /arXiv preprint arXiv:([0-9]*\\.[0-9]*)/.exec(ref.journal);\n if (arxiv_id_search && arxiv_id_search[1]){\n content += `citation_arxiv_id=${arxiv_id_search[1]};`;\n return content;\n }\n if (\"journal\" in ref){\n content += `citation_journal_title=${ref.journal};`;\n }\n if (\"volume\" in ref) {\n content += `citation_volume=${ref.volume};`;\n }\n if (\"issue\" in ref || \"number\" in ref){\n content += `citation_number=${ref.issue || ref.number};`;\n }\n /*content += `citation_first_page=${};`;\n content += `citation_publication_date=${};`;*/\n return content;\n}\n","const html = `\n\n
    This article is a draft, awaiting review for publication in Distill
    \n`;\n\nexport default function(dom, data) {\n let banner = dom.createElement(\"dt-banner\");\n banner.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(banner, b.firstChild);\n banner.addEventListener(\"click\", function() {\n banner.style.display = \"none\";\n });\n}\n","/*!\n * mustache.js - Logic-less {{mustache}} templates with JavaScript\n * http://github.com/janl/mustache.js\n */\n\n/*global define: false Mustache: true*/\n\n(function defineMustache (global, factory) {\n if (typeof exports === 'object' && exports && typeof exports.nodeName !== 'string') {\n factory(exports); // CommonJS\n } else if (typeof define === 'function' && define.amd) {\n define(['exports'], factory); // AMD\n } else {\n global.Mustache = {};\n factory(global.Mustache); // script, wsh, asp\n }\n}(this, function mustacheFactory (mustache) {\n\n var objectToString = Object.prototype.toString;\n var isArray = Array.isArray || function isArrayPolyfill (object) {\n return objectToString.call(object) === '[object Array]';\n };\n\n function isFunction (object) {\n return typeof object === 'function';\n }\n\n /**\n * More correct typeof string handling array\n * which normally returns typeof 'object'\n */\n function typeStr (obj) {\n return isArray(obj) ? 'array' : typeof obj;\n }\n\n function escapeRegExp (string) {\n return string.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n }\n\n /**\n * Null safe way of checking whether or not an object,\n * including its prototype, has a given property\n */\n function hasProperty (obj, propName) {\n return obj != null && typeof obj === 'object' && (propName in obj);\n }\n\n // Workaround for https://issues.apache.org/jira/browse/COUCHDB-577\n // See https://github.com/janl/mustache.js/issues/189\n var regExpTest = RegExp.prototype.test;\n function testRegExp (re, string) {\n return regExpTest.call(re, string);\n }\n\n var nonSpaceRe = /\\S/;\n function isWhitespace (string) {\n return !testRegExp(nonSpaceRe, string);\n }\n\n var entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n function escapeHtml (string) {\n return String(string).replace(/[&<>\"'`=\\/]/g, function fromEntityMap (s) {\n return entityMap[s];\n });\n }\n\n var whiteRe = /\\s*/;\n var spaceRe = /\\s+/;\n var equalsRe = /\\s*=/;\n var curlyRe = /\\s*\\}/;\n var tagRe = /#|\\^|\\/|>|\\{|&|=|!/;\n\n /**\n * Breaks up the given `template` string into a tree of tokens. If the `tags`\n * argument is given here it must be an array with two string values: the\n * opening and closing tags used in the template (e.g. [ \"<%\", \"%>\" ]). Of\n * course, the default is to use mustaches (i.e. mustache.tags).\n *\n * A token is an array with at least 4 elements. The first element is the\n * mustache symbol that was used inside the tag, e.g. \"#\" or \"&\". If the tag\n * did not contain a symbol (i.e. {{myValue}}) this element is \"name\". For\n * all text that appears outside a symbol this element is \"text\".\n *\n * The second element of a token is its \"value\". For mustache tags this is\n * whatever else was inside the tag besides the opening symbol. For text tokens\n * this is the text itself.\n *\n * The third and fourth elements of the token are the start and end indices,\n * respectively, of the token in the original template.\n *\n * Tokens that are the root node of a subtree contain two more elements: 1) an\n * array of tokens in the subtree and 2) the index in the original template at\n * which the closing tag for that section begins.\n */\n function parseTemplate (template, tags) {\n if (!template)\n return [];\n\n var sections = []; // Stack to hold section tokens\n var tokens = []; // Buffer to hold the tokens\n var spaces = []; // Indices of whitespace tokens on the current line\n var hasTag = false; // Is there a {{tag}} on the current line?\n var nonSpace = false; // Is there a non-space char on the current line?\n\n // Strips all whitespace tokens array for the current line\n // if there was a {{#tag}} on it and otherwise only space.\n function stripSpace () {\n if (hasTag && !nonSpace) {\n while (spaces.length)\n delete tokens[spaces.pop()];\n } else {\n spaces = [];\n }\n\n hasTag = false;\n nonSpace = false;\n }\n\n var openingTagRe, closingTagRe, closingCurlyRe;\n function compileTags (tagsToCompile) {\n if (typeof tagsToCompile === 'string')\n tagsToCompile = tagsToCompile.split(spaceRe, 2);\n\n if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)\n throw new Error('Invalid tags: ' + tagsToCompile);\n\n openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\\\s*');\n closingTagRe = new RegExp('\\\\s*' + escapeRegExp(tagsToCompile[1]));\n closingCurlyRe = new RegExp('\\\\s*' + escapeRegExp('}' + tagsToCompile[1]));\n }\n\n compileTags(tags || mustache.tags);\n\n var scanner = new Scanner(template);\n\n var start, type, value, chr, token, openSection;\n while (!scanner.eos()) {\n start = scanner.pos;\n\n // Match any text between tags.\n value = scanner.scanUntil(openingTagRe);\n\n if (value) {\n for (var i = 0, valueLength = value.length; i < valueLength; ++i) {\n chr = value.charAt(i);\n\n if (isWhitespace(chr)) {\n spaces.push(tokens.length);\n } else {\n nonSpace = true;\n }\n\n tokens.push([ 'text', chr, start, start + 1 ]);\n start += 1;\n\n // Check for whitespace on the current line.\n if (chr === '\\n')\n stripSpace();\n }\n }\n\n // Match the opening tag.\n if (!scanner.scan(openingTagRe))\n break;\n\n hasTag = true;\n\n // Get the tag type.\n type = scanner.scan(tagRe) || 'name';\n scanner.scan(whiteRe);\n\n // Get the tag value.\n if (type === '=') {\n value = scanner.scanUntil(equalsRe);\n scanner.scan(equalsRe);\n scanner.scanUntil(closingTagRe);\n } else if (type === '{') {\n value = scanner.scanUntil(closingCurlyRe);\n scanner.scan(curlyRe);\n scanner.scanUntil(closingTagRe);\n type = '&';\n } else {\n value = scanner.scanUntil(closingTagRe);\n }\n\n // Match the closing tag.\n if (!scanner.scan(closingTagRe))\n throw new Error('Unclosed tag at ' + scanner.pos);\n\n token = [ type, value, start, scanner.pos ];\n tokens.push(token);\n\n if (type === '#' || type === '^') {\n sections.push(token);\n } else if (type === '/') {\n // Check section nesting.\n openSection = sections.pop();\n\n if (!openSection)\n throw new Error('Unopened section \"' + value + '\" at ' + start);\n\n if (openSection[1] !== value)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + start);\n } else if (type === 'name' || type === '{' || type === '&') {\n nonSpace = true;\n } else if (type === '=') {\n // Set the tags for the next time around.\n compileTags(value);\n }\n }\n\n // Make sure there are no open sections when we're done.\n openSection = sections.pop();\n\n if (openSection)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + scanner.pos);\n\n return nestTokens(squashTokens(tokens));\n }\n\n /**\n * Combines the values of consecutive text tokens in the given `tokens` array\n * to a single token.\n */\n function squashTokens (tokens) {\n var squashedTokens = [];\n\n var token, lastToken;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n if (token) {\n if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {\n lastToken[1] += token[1];\n lastToken[3] = token[3];\n } else {\n squashedTokens.push(token);\n lastToken = token;\n }\n }\n }\n\n return squashedTokens;\n }\n\n /**\n * Forms the given array of `tokens` into a nested tree structure where\n * tokens that represent a section have two additional items: 1) an array of\n * all tokens that appear in that section and 2) the index in the original\n * template that represents the end of that section.\n */\n function nestTokens (tokens) {\n var nestedTokens = [];\n var collector = nestedTokens;\n var sections = [];\n\n var token, section;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n switch (token[0]) {\n case '#':\n case '^':\n collector.push(token);\n sections.push(token);\n collector = token[4] = [];\n break;\n case '/':\n section = sections.pop();\n section[5] = token[2];\n collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;\n break;\n default:\n collector.push(token);\n }\n }\n\n return nestedTokens;\n }\n\n /**\n * A simple string scanner that is used by the template parser to find\n * tokens in template strings.\n */\n function Scanner (string) {\n this.string = string;\n this.tail = string;\n this.pos = 0;\n }\n\n /**\n * Returns `true` if the tail is empty (end of string).\n */\n Scanner.prototype.eos = function eos () {\n return this.tail === '';\n };\n\n /**\n * Tries to match the given regular expression at the current position.\n * Returns the matched text if it can match, the empty string otherwise.\n */\n Scanner.prototype.scan = function scan (re) {\n var match = this.tail.match(re);\n\n if (!match || match.index !== 0)\n return '';\n\n var string = match[0];\n\n this.tail = this.tail.substring(string.length);\n this.pos += string.length;\n\n return string;\n };\n\n /**\n * Skips all text until the given regular expression can be matched. Returns\n * the skipped string, which is the entire tail if no match can be made.\n */\n Scanner.prototype.scanUntil = function scanUntil (re) {\n var index = this.tail.search(re), match;\n\n switch (index) {\n case -1:\n match = this.tail;\n this.tail = '';\n break;\n case 0:\n match = '';\n break;\n default:\n match = this.tail.substring(0, index);\n this.tail = this.tail.substring(index);\n }\n\n this.pos += match.length;\n\n return match;\n };\n\n /**\n * Represents a rendering context by wrapping a view object and\n * maintaining a reference to the parent context.\n */\n function Context (view, parentContext) {\n this.view = view;\n this.cache = { '.': this.view };\n this.parent = parentContext;\n }\n\n /**\n * Creates a new context using the given view with this context\n * as the parent.\n */\n Context.prototype.push = function push (view) {\n return new Context(view, this);\n };\n\n /**\n * Returns the value of the given name in this context, traversing\n * up the context hierarchy if the value is absent in this context's view.\n */\n Context.prototype.lookup = function lookup (name) {\n var cache = this.cache;\n\n var value;\n if (cache.hasOwnProperty(name)) {\n value = cache[name];\n } else {\n var context = this, names, index, lookupHit = false;\n\n while (context) {\n if (name.indexOf('.') > 0) {\n value = context.view;\n names = name.split('.');\n index = 0;\n\n /**\n * Using the dot notion path in `name`, we descend through the\n * nested objects.\n *\n * To be certain that the lookup has been successful, we have to\n * check if the last object in the path actually has the property\n * we are looking for. We store the result in `lookupHit`.\n *\n * This is specially necessary for when the value has been set to\n * `undefined` and we want to avoid looking up parent contexts.\n **/\n while (value != null && index < names.length) {\n if (index === names.length - 1)\n lookupHit = hasProperty(value, names[index]);\n\n value = value[names[index++]];\n }\n } else {\n value = context.view[name];\n lookupHit = hasProperty(context.view, name);\n }\n\n if (lookupHit)\n break;\n\n context = context.parent;\n }\n\n cache[name] = value;\n }\n\n if (isFunction(value))\n value = value.call(this.view);\n\n return value;\n };\n\n /**\n * A Writer knows how to take a stream of tokens and render them to a\n * string, given a context. It also maintains a cache of templates to\n * avoid the need to parse the same template twice.\n */\n function Writer () {\n this.cache = {};\n }\n\n /**\n * Clears all cached templates in this writer.\n */\n Writer.prototype.clearCache = function clearCache () {\n this.cache = {};\n };\n\n /**\n * Parses and caches the given `template` and returns the array of tokens\n * that is generated from the parse.\n */\n Writer.prototype.parse = function parse (template, tags) {\n var cache = this.cache;\n var tokens = cache[template];\n\n if (tokens == null)\n tokens = cache[template] = parseTemplate(template, tags);\n\n return tokens;\n };\n\n /**\n * High-level method that is used to render the given `template` with\n * the given `view`.\n *\n * The optional `partials` argument may be an object that contains the\n * names and templates of partials that are used in the template. It may\n * also be a function that is used to load partial templates on the fly\n * that takes a single argument: the name of the partial.\n */\n Writer.prototype.render = function render (template, view, partials) {\n var tokens = this.parse(template);\n var context = (view instanceof Context) ? view : new Context(view);\n return this.renderTokens(tokens, context, partials, template);\n };\n\n /**\n * Low-level method that renders the given array of `tokens` using\n * the given `context` and `partials`.\n *\n * Note: The `originalTemplate` is only ever used to extract the portion\n * of the original template that was contained in a higher-order section.\n * If the template doesn't use higher-order sections, this argument may\n * be omitted.\n */\n Writer.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate) {\n var buffer = '';\n\n var token, symbol, value;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n value = undefined;\n token = tokens[i];\n symbol = token[0];\n\n if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate);\n else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate);\n else if (symbol === '>') value = this.renderPartial(token, context, partials, originalTemplate);\n else if (symbol === '&') value = this.unescapedValue(token, context);\n else if (symbol === 'name') value = this.escapedValue(token, context);\n else if (symbol === 'text') value = this.rawValue(token);\n\n if (value !== undefined)\n buffer += value;\n }\n\n return buffer;\n };\n\n Writer.prototype.renderSection = function renderSection (token, context, partials, originalTemplate) {\n var self = this;\n var buffer = '';\n var value = context.lookup(token[1]);\n\n // This function is used to render an arbitrary template\n // in the current context by higher-order sections.\n function subRender (template) {\n return self.render(template, context, partials);\n }\n\n if (!value) return;\n\n if (isArray(value)) {\n for (var j = 0, valueLength = value.length; j < valueLength; ++j) {\n buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate);\n }\n } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {\n buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate);\n } else if (isFunction(value)) {\n if (typeof originalTemplate !== 'string')\n throw new Error('Cannot use higher-order sections without the original template');\n\n // Extract the portion of the original template that the section contains.\n value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);\n\n if (value != null)\n buffer += value;\n } else {\n buffer += this.renderTokens(token[4], context, partials, originalTemplate);\n }\n return buffer;\n };\n\n Writer.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate) {\n var value = context.lookup(token[1]);\n\n // Use JavaScript's definition of falsy. Include empty arrays.\n // See https://github.com/janl/mustache.js/issues/186\n if (!value || (isArray(value) && value.length === 0))\n return this.renderTokens(token[4], context, partials, originalTemplate);\n };\n\n Writer.prototype.renderPartial = function renderPartial (token, context, partials) {\n if (!partials) return;\n\n var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\n if (value != null)\n return this.renderTokens(this.parse(value), context, partials, value);\n };\n\n Writer.prototype.unescapedValue = function unescapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return value;\n };\n\n Writer.prototype.escapedValue = function escapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return mustache.escape(value);\n };\n\n Writer.prototype.rawValue = function rawValue (token) {\n return token[1];\n };\n\n mustache.name = 'mustache.js';\n mustache.version = '2.3.0';\n mustache.tags = [ '{{', '}}' ];\n\n // All high-level mustache.* functions use this writer.\n var defaultWriter = new Writer();\n\n /**\n * Clears all cached templates in the default writer.\n */\n mustache.clearCache = function clearCache () {\n return defaultWriter.clearCache();\n };\n\n /**\n * Parses and caches the given template in the default writer and returns the\n * array of tokens it contains. Doing this ahead of time avoids the need to\n * parse templates on the fly as they are rendered.\n */\n mustache.parse = function parse (template, tags) {\n return defaultWriter.parse(template, tags);\n };\n\n /**\n * Renders the `template` with the given `view` and `partials` using the\n * default writer.\n */\n mustache.render = function render (template, view, partials) {\n if (typeof template !== 'string') {\n throw new TypeError('Invalid template! Template should be a \"string\" ' +\n 'but \"' + typeStr(template) + '\" was given as the first ' +\n 'argument for mustache#render(template, view, partials)');\n }\n\n return defaultWriter.render(template, view, partials);\n };\n\n // This is here for backwards compatibility with 0.4.x.,\n /*eslint-disable */ // eslint wants camel cased function name\n mustache.to_html = function to_html (template, view, partials, send) {\n /*eslint-enable*/\n\n var result = mustache.render(template, view, partials);\n\n if (isFunction(send)) {\n send(result);\n } else {\n return result;\n }\n };\n\n // Export the escaping function so that the user may override it.\n // See https://github.com/janl/mustache.js/issues/244\n mustache.escape = escapeHtml;\n\n // Export these mainly for testing, but also for advanced usage.\n mustache.Scanner = Scanner;\n mustache.Context = Context;\n mustache.Writer = Writer;\n\n return mustache;\n}));\n","import mustache from \"mustache\";\n\nconst html = `\n\n\n`;\n\nconst template = `\n
    \n
    \n {{#authors}}\n
    \n {{#personalURL}}\n {{name}}\n {{/personalURL}}\n {{^personalURL}}\n
    {{name}}
    \n {{/personalURL}}\n {{#affiliation}}\n {{#affiliationURL}}\n {{affiliation}}\n {{/affiliationURL}}\n {{^affiliationURL}}\n
    {{affiliation}}
    \n {{/affiliationURL}}\n {{/affiliation}}\n
    \n {{/authors}}\n
    \n {{#publishedYear}}\n
    \n
    {{publishedMonth}}. {{publishedDay}}
    \n
    {{publishedYear}}
    \n
    \n {{/publishedYear}}\n {{#publishedYear}}\n \n
    Citation:
    \n
    {{concatenatedAuthors}}, {{publishedYear}}
    \n
    \n {{/publishedYear}}\n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-byline');\n if (el) {\n el.innerHTML = html + mustache.render(template, data);\n }\n}\n","const templateHTML = `\n\n\n
    \n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-appendix')\n if (el) {\n let userHTML = el.innerHTML;\n el.innerHTML = templateHTML;\n let newHTML = \"\";\n\n // If we have some footnotes on the page, render a container for the footnote list.\n if (dom.querySelector(\"dt-fn\")) {\n newHTML = newHTML + `

    Footnotes

    `;\n }\n\n // If we have any citations on the page, render a container for the bibliography.\n if (dom.querySelector(\"dt-cite\")) {\n newHTML = newHTML + `

    References

    `;\n }\n\n let div = el.querySelector(\"div.l-body\")\n div.innerHTML = userHTML + newHTML;\n }\n\n}\n","export default function(dom, data) {\n let el = dom.querySelector('dt-appendix > div');\n if (el) {\n let existingHTML = el.innerHTML;\n let newHTML = \"\";\n\nnewHTML += `

    Updates and Corrections

    \n

    View all changes to this article since it was first published. If you see a mistake or want to suggest a change, please create an issue on GitHub.

    `;\n\nnewHTML += `

    Citations and Reuse

    \n

    Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on GitHub. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: “Figure from …”.

    `;\n\nnewHTML += `

    For attribution in academic contexts, please cite this work as

    \n
    ${data.concatenatedAuthors}, \"${data.title}\", ${data.journal.title}, ${data.publishedYear}. http://doi.org/${data.doi}
    `;\n\nnewHTML += `

    BibTeX citation

    \n
    @article{${data.slug},\n  author = {${data.bibtexAuthors}},\n  title = {${data.title}},\n  journal = {${data.journal.title}},\n  year = {${data.publishedYear}},\n  url = {${data.url}},\n  doi = {${data.doi}}\n}
    `;\n\n el.innerHTML = existingHTML + newHTML;\n }\n}","export default function(dom, data) {\n let css = `\n dt-cite {\n color: hsla(206, 90%, 20%, 0.7);\n }\n dt-cite .citation-number {\n cursor: default;\n white-space: nowrap;\n font-family: -apple-system, BlinkMacSystemFont, \"Roboto\", Helvetica, sans-serif;\n font-size: 75%;\n color: hsla(206, 90%, 20%, 0.7);\n display: inline-block;\n line-height: 1.1em;\n text-align: center;\n position: relative;\n top: -2px;\n margin: 0 2px;\n }\n figcaption dt-cite .citation-number {\n font-size: 11px;\n font-weight: normal;\n top: -2px;\n line-height: 1em;\n }\n `;\n\n let style = dom.createElement(\"style\");\n style.textContent = css;\n dom.querySelector(\"body\").appendChild(style);\n\n let citations = data.citations;\n /*if (data.citations) {\n citations = Object.keys(data.citations).map(c => data.citations[c]);\n citations.sort((a, b) => {\n return a.author.localeCompare(b.author);\n });\n }*/\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach((el,n) => {\n var key = el.getAttribute(\"key\");\n if (key) {\n var keys = key.split(\",\");\n var cite_string = inline_cite_short(keys);\n var cite_hover_str = \"\";\n keys.map((key,n) => {\n if (n>0) cite_hover_str += \"

    \";\n cite_hover_str += hover_cite(data.bibliography[key]);\n });\n cite_hover_str = cite_hover_str.replace(/\"/g, \"'\")\n var orig_string = el.innerHTML;\n if (orig_string != \"\") orig_string += \" \";\n el.innerHTML = `${orig_string}${cite_string}`;\n }\n });\n\n let bibEl = dom.querySelector(\"dt-bibliography\");\n if (bibEl) {\n let ol = dom.createElement(\"ol\");\n citations.forEach(key => {\n let el = dom.createElement(\"li\");\n el.innerHTML = bibliography_cite(data.bibliography[key]);\n ol.appendChild(el);\n })\n bibEl.appendChild(ol);\n }\n\n function inline_cite_short(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var n = data.citations.indexOf(key)+1;\n return \"\"+n;\n } else {\n return \"?\";\n }\n }\n return \"[\"+keys.map(cite_string).join(\", \")+\"]\";\n }\n\n function inline_cite_long(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var ent = data.bibliography[key];\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var year = ent.year;\n if (names.length == 1) return names[0] + \", \" + year;\n if (names.length == 2) return names[0] + \" & \" + names[1] + \", \" + year;\n if (names.length > 2) return names[0] + \", et al., \" + year;\n } else {\n return \"?\";\n }\n }\n return keys.map(cite_string).join(\", \");\n }\n\n function author_string(ent, template, sep, finalSep){\n var names = ent.author.split(\" and \");\n let name_strings = names.map(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1];\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n var initials = \"\";\n if (firsts != undefined) {\n initials = firsts.trim().split(\" \").map(s => s.trim()[0]);\n initials = initials.join(\".\")+\".\";\n }\n return template.replace(\"${F}\", firsts)\n .replace(\"${L}\", last)\n .replace(\"${I}\", initials);\n });\n if (names.length > 1) {\n var str = name_strings.slice(0, names.length-1).join(sep);\n str += (finalSep || sep) + name_strings[names.length-1];\n return str;\n } else {\n return name_strings[0];\n }\n }\n\n function venue_string(ent) {\n var cite = (ent.journal || ent.booktitle || \"\")\n if (\"volume\" in ent){\n var issue = ent.issue || ent.number;\n issue = (issue != undefined)? \"(\"+issue+\")\" : \"\";\n cite += \", Vol \" + ent.volume + issue;\n }\n if (\"pages\" in ent){\n cite += \", pp. \" + ent.pages\n }\n if (cite != \"\") cite += \". \"\n if (\"publisher\" in ent){\n cite += ent.publisher;\n if (cite[cite.length-1] != \".\") cite += \".\";\n }\n return cite;\n }\n\n function link_string(ent){\n if (\"url\" in ent){\n var url = ent.url;\n var arxiv_match = (/arxiv\\.org\\/abs\\/([0-9\\.]*)/).exec(url);\n if (arxiv_match != null){\n url = `http://arxiv.org/pdf/${arxiv_match[1]}.pdf`;\n }\n\n if (url.slice(-4) == \".pdf\"){\n var label = \"PDF\";\n } else if (url.slice(-5) == \".html\") {\n var label = \"HTML\";\n }\n return `  [${label||\"link\"}]`;\n }/* else if (\"doi\" in ent){\n return `  [DOI]`;\n }*/ else {\n return \"\";\n }\n }\n function doi_string(ent, new_line){\n if (\"doi\" in ent) {\n return `${new_line?\"
    \":\"\"} DOI: ${ent.doi}`;\n } else {\n return \"\";\n }\n }\n\n function bibliography_cite(ent, fancy){\n if (ent){\n var cite = \"\" + ent.title + \" \"\n cite += link_string(ent) + \"
    \";\n cite += author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += venue_string(ent);\n cite += doi_string(ent);\n return cite\n /*var cite = author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += \"\" + ent.title + \". \";\n cite += venue_string(ent);\n cite += doi_string(ent);\n cite += link_string(ent);\n return cite*/\n } else {\n return \"?\";\n }\n }\n\n function hover_cite(ent){\n if (ent){\n var cite = \"\";\n cite += \"\" + ent.title + \"\";\n cite += link_string(ent);\n cite += \"
    \"\n\n var a_str = author_string(ent, \"${I} ${L}\", \", \") + \".\";\n var v_str = venue_string(ent).trim() + \" \" + ent.year + \". \" + doi_string(ent, true);\n\n if ((a_str+v_str).length < Math.min(40, ent.title.length)) {\n cite += a_str + \" \" + v_str;\n } else {\n cite += a_str + \"
    \" + v_str;\n }\n return cite;\n } else {\n return \"?\";\n }\n }\n\n\n //https://scholar.google.com/scholar?q=allintitle%3ADocument+author%3Aolah\n function get_GS_URL(ent){\n if (ent){\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var title = ent.title.split(\" \")//.replace(/[,:]/, \"\")\n var url = \"http://search.labs.crossref.org/dois?\"//\"\"https://scholar.google.com/scholar?\"\n url += uris({q: names.join(\" \") + \" \" + title.join(\" \")})\n }\n\n }\n}\n","export default function(dom, data) {\n\n var fnTags = [].slice.apply(dom.querySelectorAll(\"dt-fn\"));\n var fnContent = [];\n fnTags.forEach((el,n) => {\n var content = el.innerHTML;\n fnContent.push(content);\n n = (n+1)+\"\";\n var key = \"fn-\"+n;\n var escaped_content = content.replace(/\"/g, \"'\");\n el.innerHTML = `${n}`;\n });\n\n let fnList = dom.querySelector(\"dt-fn-list\");\n if (fnList) {\n let ol = dom.createElement(\"ol\");\n fnContent.forEach(content => {\n let el = dom.createElement(\"li\");\n el.innerHTML = content;\n ol.appendChild(el);\n })\n fnList.appendChild(ol);\n }\n\n}\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n */\n\n;(function() {\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^( *[-*_]){3,} *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,\n nptable: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n blockquote: /^( *>[^\\n]+(\\n(?!def)[^\\n]+)*\\n*)+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n table: noop,\n paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,\n text: /^[^\\n]+/\n};\n\nblock.bullet = /(?:[*+-]|\\d+\\.)/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = replace(block.item, 'gm')\n (/bull/g, block.bullet)\n ();\n\nblock.list = replace(block.list)\n (/bull/g, block.bullet)\n ('hr', '\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))')\n ('def', '\\\\n+(?=' + block.def.source + ')')\n ();\n\nblock.blockquote = replace(block.blockquote)\n ('def', block.def)\n ();\n\nblock._tag = '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'\n + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'\n + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|[^\\\\w\\\\s@]*@)\\\\b';\n\nblock.html = replace(block.html)\n ('comment', //)\n ('closed', /<(tag)[\\s\\S]+?<\\/\\1>/)\n ('closing', /])*?>/)\n (/tag/g, block._tag)\n ();\n\nblock.paragraph = replace(block.paragraph)\n ('hr', block.hr)\n ('heading', block.heading)\n ('lheading', block.lheading)\n ('blockquote', block.blockquote)\n ('tag', '<' + block._tag)\n ('def', block.def)\n ();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]*?)\\s*\\1 *(?:\\n+|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = replace(block.paragraph)\n ('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n ();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top, bq) {\n var src = src.replace(/^ +$/gm, '')\n , next\n , loose\n , cap\n , bull\n , b\n , item\n , space\n , i\n , l;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic\n ? cap.replace(/\\n+$/, '')\n : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top, true);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n\n this.tokens.push({\n type: 'list_start',\n ordered: bull.length > 1\n });\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n this.tokens.push({\n type: loose\n ? 'loose_item_start'\n : 'list_item_start'\n });\n\n // Recurse.\n this.token(item, false, bq);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if ((!bq && top) && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.links[cap[1].toLowerCase()] = {\n href: cap[2],\n title: cap[3]\n };\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i]\n .replace(/^ *\\| *| *\\| *$/g, '')\n .split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n autolink: /^<([^ >]+(@|:\\/)[^ >]+)>/,\n url: noop,\n tag: /^|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^\\b_((?:[^_]|__)+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n code: /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n text: /^[\\s\\S]+?(?=[\\\\?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\ninline.link = replace(inline.link)\n ('inside', inline._inside)\n ('href', inline._href)\n ();\n\ninline.reflink = replace(inline.reflink)\n ('inside', inline._inside)\n ();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: replace(inline.escape)('])', '~|])')(),\n url: /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n text: replace(inline.text)\n (']|', '~]|')\n ('|', '|https?://|')\n ()\n});\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: replace(inline.br)('{2,}', '*')(),\n text: replace(inline.gfm.text)('{2,}', '*')()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer;\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new\n Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n var out = ''\n , link\n , text\n , href\n , cap;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += cap[1];\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = cap[1].charAt(6) === ':'\n ? this.mangle(cap[1].substring(7))\n : this.mangle(cap[1]);\n href = this.mangle('mailto:') + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n src = src.substring(cap[0].length);\n text = escape(cap[1]);\n href = text;\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^/i.test(cap[0])) {\n this.inLink = false;\n }\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0]\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out += this.outputLink(cap, {\n href: cap[2],\n title: cap[3]\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2], true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = escape(link.href)\n , title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = ''\n , l = text.length\n , i = 0\n , ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || {};\n}\n\nRenderer.prototype.code = function(code, lang, escaped) {\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '\\n
    ';\n }\n\n return '
    '\n    + (escaped ? code : escape(code, true))\n    + '\\n
    \\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '
    \\n' + quote + '
    \\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw) {\n return ''\n + text\n + '\\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n};\n\nRenderer.prototype.list = function(body, ordered) {\n var type = ordered ? 'ol' : 'ul';\n return '<' + type + '>\\n' + body + '\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '
  • ' + text + '
  • \\n';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '

    ' + text + '

    \\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + '\\n'\n + body\n + '\\n'\n + '
    \\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '\\n' + content + '\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' style=\"text-align:' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.em = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? '
    ' : '
    ';\n};\n\nRenderer.prototype.del = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n if (this.options.sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return '';\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0) {\n return '';\n }\n }\n var out = '
    ';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n var out = '\"'' : '>';\n return out;\n};\n\nRenderer.prototype.text = function(text) {\n return text;\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer;\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options, renderer) {\n var parser = new Parser(options, renderer);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options, this.renderer);\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n this.token.text);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = ''\n , body = ''\n , i\n , row\n , cell\n , flags\n , j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n flags = { header: true, align: this.token.align[i] };\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n var body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n var body = ''\n , ordered = this.token.ordered;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered);\n }\n case 'list_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'loose_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'html': {\n var html = !this.token.pre && !this.options.pedantic\n ? this.inline.output(this.token.text)\n : this.token.text;\n return this.renderer.html(html);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n }\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n return html\n .replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\nfunction unescape(html) {\n\t// explicitly match decimal, hex, and named HTML entities \n return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/g, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction replace(regex, opt) {\n regex = regex.source;\n opt = opt || '';\n return function self(name, val) {\n if (!name) return new RegExp(regex, opt);\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return self;\n };\n}\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1\n , target\n , key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n\n var highlight = opt.highlight\n , tokens\n , pending\n , i = 0;\n\n try {\n tokens = Lexer.lex(src, opt)\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/chjj/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occured:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n sanitizer: null,\n mangle: true,\n smartLists: false,\n silent: false,\n highlight: null,\n langPrefix: 'lang-',\n smartypants: false,\n headerPrefix: '',\n renderer: new Renderer,\n xhtml: false\n};\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.parse = marked;\n\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n this.marked = marked;\n}\n\n}).call(function() {\n return this || (typeof window !== 'undefined' ? window : global);\n}());\n","import marked from 'marked';\n\nmarked.setOptions({\n gfm: true,\n smartypants: true\n});\n\nexport default function(dom, data) {\n let markdownElements = [].slice.call(dom.querySelectorAll('[markdown]'));\n markdownElements.forEach(el => {\n let content = el.innerHTML;\n // Set default indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n\n el.innerHTML = marked(content);\n });\n}\n","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = _self.Prism = {\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/ text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\tbreak tokenloop;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t delNum = 1;\n\n\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t to = match.index + match[0].length,\n\t\t\t\t\t\t k = i,\n\t\t\t\t\t\t p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && p < to; ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t match = match[0].slice(lookbehindLength),\n\t\t\t\t\t to = from + match.length,\n\t\t\t\t\t before = str.slice(0, from),\n\t\t\t\t\t after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (env.type == 'comment') {\n\t\tenv.attributes['spellcheck'] = 'true';\n\t}\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n \t// In worker\n\t_self.addEventListener('message', function(evt) {\n\t\tvar message = JSON.parse(evt.data),\n\t\t lang = message.language,\n\t\t code = message.code,\n\t\t immediateClose = message.immediateClose;\n\n\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\tif (immediateClose) {\n\t\t\t_self.close();\n\t\t}\n\t}, false);\n\n\treturn _self.Prism;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (document.addEventListener && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': //,\n\t'prolog': /<\\?[\\w\\W]+?\\?>/,\n\t'doctype': //i,\n\t'cdata': //i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\w\\W])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:('|\")[\\w\\W]*?(\\1)|[^\\s>]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /[=>\"']/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\w\\W]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^\\{\\}\\s][^\\{\\};]*?(?=\\s*\\{)/,\n\t'string': {\n\t\tpattern: /(\"|')(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'property': /(\\b|\\B)[\\w-]+(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|').*?\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\w\\W]*?\\*\\//,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[a-z0-9_\\.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /(\\.|\\\\)/\n\t\t}\n\t},\n\t'keyword': /\\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(0x[\\dA-Fa-f]+|0b[01]+|0o[0-7]+|\\d*\\.?\\d+([Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*(?=\\()/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*\\*?|\\/|~|\\^|%|\\.{3}/\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[.+?]|\\\\.|[^/\\\\\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\\\\\|\\\\?[^\\\\])*?`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript'\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tif(Array.prototype.forEach) { // Check to prevent error in IE8\n\t\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\t\tvar language, parent = pre;\n\t\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\t\tparent = parent.parentNode;\n\t\t\t\t}\n\n\t\t\t\tif (parent) {\n\t\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t\t}\n\n\t\t\t\tif (!language) {\n\t\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t\t}\n\n\t\t\t\tvar code = document.createElement('code');\n\t\t\t\tcode.className = 'language-' + language;\n\n\t\t\t\tpre.textContent = '';\n\n\t\t\t\tcode.textContent = 'Loading…';\n\n\t\t\t\tpre.appendChild(code);\n\n\t\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\t\txhr.open('GET', src, true);\n\n\t\t\t\txhr.onreadystatechange = function () {\n\t\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\txhr.send(null);\n\t\t\t});\n\t\t}\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\n})();\n","import Prism from \"prismjs\";\n\nexport default function(dom, data) {\n let codeElements = [].slice.call(dom.querySelectorAll(\"dt-code\"));\n codeElements.forEach(el => {\n let content = el.textContent;\n el.innerHTML = \"\";\n let language = el.getAttribute(\"language\");\n let c = dom.createElement(\"code\");\n if (el.getAttribute(\"block\") === \"\") {\n // Let's normalize the tab indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n let p = dom.createElement(\"pre\");\n p.appendChild(c);\n el.appendChild(p);\n } else {\n el.appendChild(c);\n }\n let highlighted = content;\n if (Prism.languages[language]) {\n c.setAttribute(\"class\", \"language-\" + language);\n highlighted = Prism.highlight(content, Prism.languages[language]);\n }\n c.innerHTML = highlighted;\n });\n}\n","export default function(dom, data) {\n\n var textNodes = dom.createTreeWalker(\n dom.body,\n dom.defaultView.NodeFilter.SHOW_TEXT\n );\n while (textNodes.nextNode()) {\n var n = textNodes.currentNode,\n text = n.nodeValue;\n if (text && acceptNode(n)) {\n text = quotes(text);\n text = punctuation(text);\n n.nodeValue = text;\n }\n }\n}\n\nfunction acceptNode(node) {\n var parent = node.parentElement;\n var isMath = (parent && parent.getAttribute && parent.getAttribute(\"class\")) ? parent.getAttribute(\"class\").includes(\"katex\") || parent.getAttribute(\"class\").includes(\"MathJax\") : false;\n return parent &&\n parent.nodeName !== \"SCRIPT\" &&\n parent.nodeName !== \"STYLE\" &&\n parent.nodeName !== \"CODE\" &&\n parent.nodeName !== \"PRE\" &&\n parent.nodeName !== \"SPAN\" &&\n parent.nodeName !== \"DT-HEADER\" &&\n parent.nodeName !== \"DT-BYLINE\" &&\n parent.nodeName !== \"DT-MATH\" &&\n parent.nodeName !== \"DT-CODE\" &&\n parent.nodeName !== \"DT-BIBLIOGRAPHY\" &&\n parent.nodeName !== \"DT-FOOTER\" &&\n parent.nodeType !== 8 && //comment nodes\n !isMath;\n}\n\n\n/*!\n * typeset - Typesetting for the web\n * @version v0.1.6\n * @link https://github.com/davidmerfield/Typeset.js\n * @author David Merfield\n */\n // which has a CC0 license\n // http://creativecommons.org/publicdomain/zero/1.0/\n\n\nfunction punctuation(text){\n\n // Dashes\n text = text.replace(/--/g, '\\u2014');\n text = text.replace(/ \\u2014 /g,\"\\u2009\\u2014\\u2009\"); //this has thin spaces\n\n // Elipses\n text = text.replace(/\\.\\.\\./g,'…');\n\n // Nbsp for punc with spaces\n var NBSP = \"\\u00a0\";\n var NBSP_PUNCTUATION_START = /([«¿¡]) /g;\n var NBSP_PUNCTUATION_END = / ([\\!\\?:;\\.,‽»])/g;\n\n text = text.replace(NBSP_PUNCTUATION_START, '$1' + NBSP);\n text = text.replace(NBSP_PUNCTUATION_END, NBSP + '$1');\n\n return text;\n}\n\nfunction quotes(text) {\n\n text = text\n .replace(/(\\W|^)\"([^\\s\\!\\?:;\\.,‽»])/g, '$1\\u201c$2') // beginning \"\n .replace(/(\\u201c[^\"]*)\"([^\"]*$|[^\\u201c\"]*\\u201c)/g, '$1\\u201d$2') // ending \"\n .replace(/([^0-9])\"/g,'$1\\u201d') // remaining \" at end of word\n .replace(/(\\W|^)'(\\S)/g, '$1\\u2018$2') // beginning '\n .replace(/([a-z])'([a-z])/ig, '$1\\u2019$2') // conjunction's possession\n .replace(/((\\u2018[^']*)|[a-z])'([^0-9]|$)/ig, '$1\\u2019$3') // ending '\n .replace(/(\\u2018)([0-9]{2}[^\\u2019]*)(\\u2018([^0-9]|$)|$|\\u2019[a-z])/ig, '\\u2019$2$3') // abbrev. years like '93\n .replace(/(\\B|^)\\u2018(?=([^\\u2019]*\\u2019\\b)*([^\\u2019\\u2018]*\\W[\\u2019\\u2018]\\b|[^\\u2019\\u2018]*$))/ig, '$1\\u2019') // backwards apostrophe\n .replace(/'''/g, '\\u2034') // triple prime\n .replace(/(\"|'')/g, '\\u2033') // double prime\n .replace(/'/g, '\\u2032');\n\n // Allow escaped quotes\n text = text.replace(/\\\\“/, '\\\"');\n text = text.replace(/\\\\”/, '\\\"');\n text = text.replace(/\\\\’/, '\\'');\n text = text.replace(/\\\\‘/, '\\'');\n\n return text;\n}\n\nfunction ligatures(text){\n\n text = text.replace(/fi/g, 'fi');\n text = text.replace(/fl/g, 'fl');\n\n return text;\n};\n","import code from './hover-box.txt';\n\nexport default function(dom) {\n let s = dom.createElement(\"script\");\n s.textContent = code;\n dom.querySelector(\"body\").appendChild(s);\n}\n","//import xml from \"xml\";\n\nexport default function(data) {\n\n\n var date = data.publishedDate;\n\n var batch_timestamp = Math.floor(Date.now() / 1000);\n var batch_id = data.authors.length ? data.authors[0].lastName.toLowerCase().slice(0,20) : \"Anonymous\";\n batch_id += \"_\" + date.getFullYear();\n batch_id += \"_\" + data.title.split(\" \")[0].toLowerCase().slice(0,20) + \"_\" + batch_timestamp;\n // generate XML\n var crf_data =\n {doi_batch : [\n\n { _attr: {\n version: \"4.3.7\",\n xmlns: \"http://www.crossref.org/schema/4.3.7\",\n \"xmlns:xsi\": \"http://www.w3.org/2001/XMLSchema-instance\",\n \"xsi:schemaLocation\": \"http://www.crossref.org/schema/4.3.7 http://www.crossref.org/schemas/crossref4.3.7.xsd\",\n }},\n\n { head: [\n {doi_batch_id: batch_id},\n {timestamp: batch_timestamp},\n {depositor: [\n {depositor_name: data.journal.publisherName},\n {email_address: data.journal.publisherEmail},\n ]},\n {registrant: data.journal.publisherName},\n ]},\n\n {body: [\n {journal: [\n\n {journal_metadata: [\n {full_title: data.journal.full_title || data.journal.title},\n {abbrev_title: data.journal.abbrev_title || data.journal.title || data.journal.full_title},\n {issn: data.journal.issn},\n {doi_data: [\n {doi: data.journal.doi},\n {resource: data.journal.url},\n ]},\n ]},\n\n {journal_issue: [\n {publication_date: [\n {month: date.getMonth()+1},\n {year: date.getFullYear()},\n ]},\n {journal_volume: [\n {volume: data.volume},\n ]},\n {issue: data.issue},\n ]},\n\n {journal_article: [\n {titles: [\n {title: data.title},\n ]},\n { contributors:\n data.authors.map((author, ind) => (\n {person_name: [\n { _attr: {\n contributor_role: \"author\",\n sequence: (ind == 0)? \"first\" : \"additional\"\n }},\n {given_name: author.firstName},\n {surname: author.lastName},\n {affiliation: author.affiliation}\n // TODO: ORCID?\n ]}\n ))\n },\n {publication_date: [\n {month: date.getMonth()+1},\n {day: date.getDate()},\n {year: date.getFullYear()}\n ]},\n { publisher_item: [\n {item_number: data.doi}\n ]},\n {doi_data: [\n {doi: data.doi},\n //{timestamp: \"\"},\n {resource: data.url},\n ]},\n {citation_list:\n data.citations.map(key =>\n citation_xml(key, data.bibliography[key]))\n }\n\n ]},\n\n ]},\n ]},\n ]};\n\n return xml(crf_data);\n}\n\nfunction citation_xml(key, ent){\n if (ent == undefined) return {};\n var info = [];\n info.push({_attr: {key: key}});\n if (\"title\" in ent)\n info.push({article_title: ent.title});\n if (\"author\" in ent)\n info.push({author: ent.author.split(\" and \")[0].split(\",\")[0].trim()});\n if (\"journal\" in ent)\n info.push({journal_title: ent.journal});\n if (\"booktitle\" in ent)\n info.push({volume_title: ent.booktitle});\n if (\"volume\" in ent)\n info.push({volume: ent.volume});\n if (\"issue\" in ent)\n info.push({issue: ent.issue});\n if (\"doi\" in ent)\n info.push({doi: ent.doi});\n return {citation: info}\n}\n\nfunction xml(obj) {\n //console.log(typeof(obj), obj)\n if (typeof obj === 'string') return obj;\n if (typeof obj === 'number') return \"\"+obj;\n let keys = Object.keys(obj);\n if (keys.length != 1) console.error(\"can't interpret \", obj, \"as xml\");\n let name = keys[0];\n var full_content = obj[name];\n var attr = {};\n if (Array.isArray(full_content)){\n var content = [];\n for (var i in full_content) {\n var obj = full_content[i];\n var obj_name = Object.keys(obj)[0];\n if (\"_attr\" == obj_name) {\n attr = obj[\"_attr\"];\n } else {\n //console.log(Object.keys(obj)[0])\n content.push(obj);\n }\n }\n } else {\n content = full_content;\n }\n if (content == undefined){\n content = \"undefined\"\n }\n\n let attr_string = \"\";\n for (var k in attr) {\n attr_string += ` ${k}=\\\"${attr[k]}\\\"`\n }\n\n //console.log(typeof content, Array.isArray(content), content instanceof String, content)\n if (Array.isArray(content)){\n content = content.map(xml);\n content = content.join(\"\\n\").split(\"\\n\");\n content = content.map(s => \" \" + s).join(\"\\n\")\n var result = `<${name}${attr_string}>\\n${content}\\n`;\n } else {\n content = xml(content);\n var result = `<${name}${attr_string}>${content}`;\n }\n return result;\n}\n","import logo from \"./distill-logo.svg\";\n\nconst html = `\n\n\n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-header\");\n if(el) {\n el.innerHTML = html;\n } else {\n let header = dom.createElement(\"dt-header\");\n header.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(header, b.firstChild);\n }\n}\n","import logo from \"./distill-logo.svg\";\n\nlet html = `\n\n\n
    \n
    \n \n ${logo}\n Distill\n \n is dedicated to clear explanations of machine learning\n
    \n
    \n About\n Submit\n Prize\n RSS\n Twitter\n
    \n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-footer\");\n if(el) {\n el.innerHTML = html;\n } else {\n let footer = dom.createElement(\"dt-footer\");\n footer.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.appendChild(footer);\n }\n}\n","import html from \"./components/html\";\nimport styles from \"./components/styles\";\nimport frontMatter from \"./components/front-matter\";\nimport bibliography from \"./components/bibliography\";\nimport expandData from \"./components/expand-data\";\nimport meta from \"./components/meta\";\nimport banner from \"./components/banner\";\nimport byline from \"./components/byline\";\nimport appendix from \"./components/appendix\";\nimport appendixDistill from \"./components/appendix-distill\";\nimport citation from \"./components/citation\";\nimport footnote from \"./components/footnote\";\nimport markdown from \"./components/markdown\";\nimport code from \"./components/code\";\nimport typeset from \"./components/typeset\";\nimport hoverBox from \"./components/hover-box-include\";\nimport generateCrossref from \"./components/generate-crossref\";\nimport header from \"./components/header\";\nimport footer from \"./components/footer\";\n\nfunction renderImmediately(dom) {\n html(dom);\n styles(dom);\n}\n\nfunction renderOnLoad(dom, data) {\n frontMatter(dom, data);\n bibliography(dom, data);\n expandData(dom, data);\n meta(dom, data);\n byline(dom, data);\n appendix(dom, data);\n markdown(dom, data);\n code(dom, data);\n citation(dom, data);\n footnote(dom, data);\n typeset(dom, data);\n hoverBox(dom, data);\n}\n\n// If we are in a browser, render automatically...\nif(window && window.document) {\n let data = {};\n renderImmediately(window.document);\n window.document.addEventListener(\"DOMContentLoaded\", (event) => {\n renderOnLoad(window.document, data);\n // Add a banner if we're not on localhost.\n if (window.location.hostname !== \"localhost\" && window.location.origin !== \"file://\") {\n banner(window.document, data);\n }\n generateCrossref(data);\n // console.log(data);\n });\n}\n\n// If we are in node...\nfunction render(dom, data) {\n renderImmediately(dom);\n renderOnLoad(dom, data);\n // Remove script tag so it doesn't run again in the client\n let s = dom.querySelector('script[src*=\"distill.pub/template\"]');\n if (s) { s.parentElement.removeChild(s); };\n}\n\n// Distill specific rendering\nfunction distillify(dom, data) {\n header(dom, data);\n appendixDistill(dom, data);\n footer(dom, data);\n}\n\nexport {render as render};\nexport {distillify as distillify};\nexport {generateCrossref as generateCrossref};\n"],"names":["let","meta","YAMLException","common","require$$0","Mark","this","Type","require$$1","require$$2","type","arguments","Schema","require$$3","require$$4","require$$5","require","_hasOwnProperty","_toString","require$$6","require$$7","_require","DEFAULT_SAFE_SCHEMA","DEFAULT_FULL_SCHEMA","loadAll","load","safeLoadAll","safeLoad","State","dump","safeDump","require$$8","require$$9","ymlParse","interval","day","timeDay","timeYear","timeSunday","timeMonday","locale","escape","const","html","define","global","Prism","code","render"],"mappings":"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"} \ No newline at end of file diff --git a/examples/article.html b/examples/article.html index 81df0b5..f6ec6e3 100644 --- a/examples/article.html +++ b/examples/article.html @@ -22,6 +22,7 @@

    Test for owner's possessive.

    Test for "quoting a passage." And another sentence. Or two.

    We can also cite external publications.

    +

    We should also be testing footnotesThis will become a hoverable footnote..

    The citation is presented inline like this: (a number that displays more information on hover). If you have an appendix, a bibliography is automatically created and populated in it.

    -

    Distill chose a numerical inline citation style to improve readability of citation dense articles and because many of the benefits of longer citations are obviated by dispalying more information on hover. However, we consider it good style to mention author last names if you discuss something at length and it fits into the flow well -- the authors are human and it's nice for them to have the community associate them with their work.

    +

    Distill chose a numerical inline citation style to improve readability of citation dense articles and because many of the benefits of longer citations are obviated by displaying more information on hover. However, we consider it good style to mention author last names if you discuss something at length and it fits into the flow well -- the authors are human and it's nice for them to have the community associate them with their work.


    From c24a1d0485e3fe1cb524d64f582ff398a2fb1dc6 Mon Sep 17 00:00:00 2001 From: Shan Carter Date: Thu, 13 Apr 2017 12:52:59 -0700 Subject: [PATCH 25/42] Fixing katex incompatibility --- components/typeset.js | 19 +++++++------ dist/template.js | 64 ++++++++++++++++++++++++++++++++++++------- dist/template.js.map | 2 +- 3 files changed, 66 insertions(+), 19 deletions(-) diff --git a/components/typeset.js b/components/typeset.js index 164db84..03fbc85 100644 --- a/components/typeset.js +++ b/components/typeset.js @@ -51,16 +51,19 @@ function punctuation(text){ text = text.replace(/--/g, '\u2014'); text = text.replace(/ \u2014 /g,"\u2009\u2014\u2009"); //this has thin spaces + // The following are temporary commented out because incompatibility + // with katex + // Elipses - text = text.replace(/\.\.\./g,'…'); + // text = text.replace(/\.\.\./g,'…'); // Nbsp for punc with spaces - var NBSP = "\u00a0"; - var NBSP_PUNCTUATION_START = /([«¿¡]) /g; - var NBSP_PUNCTUATION_END = / ([\!\?:;\.,‽»])/g; + // var NBSP = "\u00a0"; + // var NBSP_PUNCTUATION_START = /([«¿¡]) /g; + // var NBSP_PUNCTUATION_END = / ([\!\?:;\.,‽»])/g; - text = text.replace(NBSP_PUNCTUATION_START, '$1' + NBSP); - text = text.replace(NBSP_PUNCTUATION_END, NBSP + '$1'); + // text = text.replace(NBSP_PUNCTUATION_START, '$1' + NBSP); + // text = text.replace(NBSP_PUNCTUATION_END, NBSP + '$1'); return text; } @@ -91,8 +94,8 @@ function quotes(text) { function ligatures(text){ - text = text.replace(/fi/g, 'fi'); - text = text.replace(/fl/g, 'fl'); + // text = text.replace(/fi/g, 'fi'); + // text = text.replace(/fl/g, 'fl'); return text; }; diff --git a/dist/template.js b/dist/template.js index fe5e6b6..b742221 100644 --- a/dist/template.js +++ b/dist/template.js @@ -6119,6 +6119,25 @@ var citation = function(dom, data) { return a.author.localeCompare(b.author); }); }*/ + + var appendCiteHoverDiv = (function() { + function nodeFromString(str) { + var div = dom.createElement("div"); + div.innerHTML = str; + return div.firstChild; + } + var hover_boxes_container = nodeFromString("
    "); + dom.querySelector("body").appendChild(hover_boxes_container); + var hover_n = 0; + return function appendHoverDiv(content) { + var id = "dt-cite-hover-box-" + hover_n; + hover_n += 1; + var str = "
    " + content + "
    "; + var div = nodeFromString(str); + hover_boxes_container.appendChild(div); + return id; + } + })(); var citeTags = [].slice.apply(dom.querySelectorAll("dt-cite")); citeTags.forEach(function (el,n) { @@ -6131,10 +6150,11 @@ var citation = function(dom, data) { if (n>0) { cite_hover_str += "

    "; } cite_hover_str += hover_cite(data.bibliography[key]); }); - cite_hover_str = cite_hover_str.replace(/"/g, "'"); + var ref_id = appendCiteHoverDiv(cite_hover_str); + //cite_hover_str = cite_hover_str.replace(/"/g, "'") var orig_string = el.innerHTML; if (orig_string != "") { orig_string += " "; } - el.innerHTML = "" + orig_string + "" + cite_string + ""; + el.innerHTML = "" + orig_string + "" + cite_string + ""; } }); @@ -6319,15 +6339,36 @@ var citation = function(dom, data) { var footnote = function(dom, data) { + var appendFootnoteHoverDiv = (function() { + function nodeFromString(str) { + var div = dom.createElement("div"); + div.innerHTML = str; + return div.firstChild; + } + var hover_boxes_container = nodeFromString("
    "); + dom.querySelector("body").appendChild(hover_boxes_container); + var hover_n = 0; + return function appendHoverDiv(content) { + var id = "dt-fn-hover-box-" + hover_n; + hover_n += 1; + var str = "
    " + content + "
    "; + var div = nodeFromString(str); + hover_boxes_container.appendChild(div); + return id; + } + })(); + + var fnTags = [].slice.apply(dom.querySelectorAll("dt-fn")); var fnContent = []; fnTags.forEach(function (el,n) { var content = el.innerHTML; + var ref_id = appendFootnoteHoverDiv(content); fnContent.push(content); n = (n+1)+""; var key = "fn-"+n; var escaped_content = content.replace(/"/g, "'"); - el.innerHTML = "" + n + ""; + el.innerHTML = "" + n + ""; }); var fnList = dom.querySelector("dt-fn-list"); @@ -8541,16 +8582,19 @@ function punctuation(text){ text = text.replace(/--/g, '\u2014'); text = text.replace(/ \u2014 /g,"\u2009\u2014\u2009"); //this has thin spaces + // The following are temporary commented out because incompatibility + // with katex + // Elipses - text = text.replace(/\.\.\./g,'…'); + // text = text.replace(/\.\.\./g,'…'); // Nbsp for punc with spaces - var NBSP = "\u00a0"; - var NBSP_PUNCTUATION_START = /([«¿¡]) /g; - var NBSP_PUNCTUATION_END = / ([\!\?:;\.,‽»])/g; + // var NBSP = "\u00a0"; + // var NBSP_PUNCTUATION_START = /([«¿¡]) /g; + // var NBSP_PUNCTUATION_END = / ([\!\?:;\.,‽»])/g; - text = text.replace(NBSP_PUNCTUATION_START, '$1' + NBSP); - text = text.replace(NBSP_PUNCTUATION_END, NBSP + '$1'); + // text = text.replace(NBSP_PUNCTUATION_START, '$1' + NBSP); + // text = text.replace(NBSP_PUNCTUATION_END, NBSP + '$1'); return text; } @@ -8579,7 +8623,7 @@ function quotes(text) { return text; } -var code$2 = "// DistillHoverBox\n//=====================================\n\nfunction DistillHoverBox(key, pos){\n\n if (!(key in DistillHoverBox.contentMap)){\n console.error(\"No DistillHoverBox content registered for key\", key);\n }\n if (key in DistillHoverBox.liveBoxes) {\n console.error(\"There already exists a DistillHoverBox for key\", key);\n } else {\n for (var k in DistillHoverBox.liveBoxes)\n DistillHoverBox.liveBoxes[k].remove();\n DistillHoverBox.liveBoxes[key] = this;\n }\n this.key = key;\n\n var pretty = window.innerWidth > 600;\n\n var padding = pretty? 18 : 12;\n var outer_padding = pretty ? 18 : 0;\n var bbox = document.querySelector(\"body\").getBoundingClientRect();\n var left = pos[0] - bbox.left, top = pos[1] - bbox.top;\n var width = Math.min(window.innerWidth-2*outer_padding, 648);\n left = Math.min(left, window.innerWidth-width-outer_padding);\n width = width - 2*padding;\n\n var str = `
    \n ${DistillHoverBox.contentMap[key]}\n
    `;\n\n this.div = appendBody(str);\n\n DistillHoverBox.bind (this.div, key);\n}\n\nDistillHoverBox.prototype.remove = function remove(){\n if (this.div) this.div.remove();\n if (this.timeout) clearTimeout(this.timeout);\n delete DistillHoverBox.liveBoxes[this.key];\n}\n\nDistillHoverBox.prototype.stopTimeout = function stopTimeout() {\n if (this.timeout) clearTimeout(this.timeout);\n}\n\nDistillHoverBox.prototype.extendTimeout = function extendTimeout(T) {\n //console.log(\"extend\", T)\n var this_ = this;\n this.stopTimeout();\n this.timeout = setTimeout(() => this_.remove(), T);\n}\n\nDistillHoverBox.liveBoxes = {};\nDistillHoverBox.contentMap = {};\n\nDistillHoverBox.bind = function bind(node, key) {\n if (typeof node == \"string\"){\n node = document.querySelector(node);\n }\n node.addEventListener(\"mouseover\", () => {\n var bbox = node.getBoundingClientRect();\n if (!(key in DistillHoverBox.liveBoxes)){\n new DistillHoverBox(key, [bbox.right, bbox.bottom]);\n }\n DistillHoverBox.liveBoxes[key].stopTimeout();\n });\n node.addEventListener(\"mouseout\", () => {\n if (key in DistillHoverBox.liveBoxes){\n DistillHoverBox.liveBoxes[key].extendTimeout(250);\n }\n });\n node.addEventListener(\"touchend\", () => {\n if (key in DistillHoverBox.liveBoxes){\n DistillHoverBox.liveBoxes[key].extendTimeout(250);\n }\n });\n\n}\n\n\nfunction appendBody(str){\n var node = nodeFromString(str);\n var body = document.querySelector(\"body\");\n body.appendChild(node);\n return node;\n}\n\nfunction nodeFromString(str) {\n var div = document.createElement(\"div\");\n div.innerHTML = str;\n return div.firstChild;\n}\n\nvar hover_es = document.querySelectorAll(\"span[data-hover]\");\nhover_es = [].slice.apply(hover_es);\nhover_es.forEach((e,n) => {\n var key = \"hover-\"+n;\n var content = e.getAttribute(\"data-hover\");\n DistillHoverBox.contentMap[key] = content;\n DistillHoverBox.bind(e, key);\n});\n"; +var code$2 = "\n\nfunction nodeFromString(str) {\n var div = document.createElement(\"div\");\n div.innerHTML = str;\n return div.firstChild;\n}\n\nfunction make_hover_css(pos) {\n var pretty = window.innerWidth > 600;\n var padding = pretty? 18 : 12;\n var outer_padding = pretty ? 18 : 0;\n var bbox = document.querySelector(\"body\").getBoundingClientRect();\n var left = pos[0] - bbox.left, top = pos[1] - bbox.top;\n var width = Math.min(window.innerWidth-2*outer_padding, 648);\n left = Math.min(left, window.innerWidth-width-outer_padding);\n width = width - 2*padding;\n return (`position: absolute;\n background-color: #FFF;\n opacity: 0.95;\n max-width: ${width}px;\n top: ${top}px;\n left: ${left}px;\n border: 1px solid rgba(0, 0, 0, 0.25);\n padding: ${padding}px;\n border-radius: ${pretty? 3 : 0}px;\n box-shadow: 0px 2px 10px 2px rgba(0, 0, 0, 0.2);\n z-index: ${1e6};`);\n}\n\n\nfunction DtHoverBox(div_id) {\n this.div = document.querySelector(\"#\"+div_id);\n this.visible = false;\n this.bind(this.div);\n DtHoverBox.box_map[div_id] = this;\n}\n\nDtHoverBox.box_map = {};\n\nDtHoverBox.get_box = function get_box(div_id) {\n if (div_id in DtHoverBox.box_map) {\n return DtHoverBox.box_map[div_id];\n } else {\n return new DtHoverBox(div_id);\n }\n}\n\nDtHoverBox.prototype.show = function show(pos){\n this.visible = true;\n this.div.setAttribute(\"style\", make_hover_css(pos) );\n for (var box_id in DtHoverBox.box_map) {\n var box = DtHoverBox.box_map[box_id];\n if (box != this) box.hide();\n }\n}\n\nDtHoverBox.prototype.hide = function hide(){\n this.visible = false;\n if (this.div) this.div.setAttribute(\"style\", \"display:none\");\n if (this.timeout) clearTimeout(this.timeout);\n}\n\nDtHoverBox.prototype.stopTimeout = function stopTimeout() {\n if (this.timeout) clearTimeout(this.timeout);\n}\n\nDtHoverBox.prototype.extendTimeout = function extendTimeout(T) {\n //console.log(\"extend\", T)\n var this_ = this;\n this.stopTimeout();\n this.timeout = setTimeout(() => this_.hide(), T);\n}\n\nDtHoverBox.prototype.bind = function bind(node) {\n if (typeof node == \"string\"){\n node = document.querySelector(node);\n }\n node.addEventListener(\"mouseover\", () => {\n var bbox = node.getBoundingClientRect();\n if (!this.visible) this.show([bbox.right, bbox.bottom]);\n this.stopTimeout();\n });\n node.addEventListener(\"mouseout\", () => this.extendTimeout(250) );\n node.addEventListener(\"touchend\", () => this.extendTimeout(250) );\n}\n\nvar hover_es = document.querySelectorAll(\"span[data-hover-ref]\");\nhover_es = [].slice.apply(hover_es);\nhover_es.forEach((e,n) => {\n var ref_id = e.getAttribute(\"data-hover-ref\");\n DtHoverBox.get_box(ref_id).bind(e);\n})\n"; var hoverBox = function(dom) { var s = dom.createElement("script"); diff --git a/dist/template.js.map b/dist/template.js.map index 306a1d0..56e5fbd 100644 --- a/dist/template.js.map +++ b/dist/template.js.map @@ -1 +1 @@ -{"version":3,"file":null,"sources":["../components/html.js","../components/styles.js","../node_modules/js-yaml/lib/js-yaml/common.js","../node_modules/js-yaml/lib/js-yaml/exception.js","../node_modules/js-yaml/lib/js-yaml/mark.js","../node_modules/js-yaml/lib/js-yaml/type.js","../node_modules/js-yaml/lib/js-yaml/schema.js","../node_modules/js-yaml/lib/js-yaml/type/str.js","../node_modules/js-yaml/lib/js-yaml/type/seq.js","../node_modules/js-yaml/lib/js-yaml/type/map.js","../node_modules/js-yaml/lib/js-yaml/schema/failsafe.js","../node_modules/js-yaml/lib/js-yaml/type/null.js","../node_modules/js-yaml/lib/js-yaml/type/bool.js","../node_modules/js-yaml/lib/js-yaml/type/int.js","../node_modules/js-yaml/lib/js-yaml/type/float.js","../node_modules/js-yaml/lib/js-yaml/schema/json.js","../node_modules/js-yaml/lib/js-yaml/schema/core.js","../node_modules/js-yaml/lib/js-yaml/type/timestamp.js","../node_modules/js-yaml/lib/js-yaml/type/merge.js","../node_modules/js-yaml/lib/js-yaml/type/binary.js","../node_modules/js-yaml/lib/js-yaml/type/omap.js","../node_modules/js-yaml/lib/js-yaml/type/pairs.js","../node_modules/js-yaml/lib/js-yaml/type/set.js","../node_modules/js-yaml/lib/js-yaml/schema/default_safe.js","../node_modules/js-yaml/lib/js-yaml/type/js/undefined.js","../node_modules/js-yaml/lib/js-yaml/type/js/regexp.js","../node_modules/js-yaml/lib/js-yaml/type/js/function.js","../node_modules/js-yaml/lib/js-yaml/schema/default_full.js","../node_modules/js-yaml/lib/js-yaml/loader.js","../node_modules/js-yaml/lib/js-yaml/dumper.js","../node_modules/js-yaml/lib/js-yaml.js","../node_modules/js-yaml/index.js","../components/front-matter.js","../node_modules/bibtex-parse-js/bibtexParse.js","../components/bibliography.js","../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/utcMinute.js","../node_modules/d3-time/src/utcHour.js","../node_modules/d3-time/src/utcDay.js","../node_modules/d3-time/src/utcWeek.js","../node_modules/d3-time/src/utcMonth.js","../node_modules/d3-time/src/utcYear.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-time-format/src/isoFormat.js","../node_modules/d3-time-format/src/isoParse.js","../components/data.js","../../node_modules/escape-html/index.js","../components/meta.js","../components/banner.js","../node_modules/mustache/mustache.js","../components/byline.js","../components/appendix.js","../components/appendix-distill.js","../components/citation.js","../components/footnote.js","../node_modules/marked/lib/marked.js","../components/markdown.js","../node_modules/prismjs/prism.js","../components/code.js","../components/typeset.js","../components/hover-box-include.js","../components/generate-crossref.js","../components/header.js","../components/footer.js","../index.js"],"sourcesContent":["export default function(dom) {\n if (!dom.querySelector(\"html\").getAttribute(\"lang\")) {\n dom.querySelector(\"html\").setAttribute(\"lang\", \"en\")\n }\n\n let head = dom.querySelector(\"head\");\n\n if (!dom.querySelector(\"meta[charset]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"charset\", \"utf-8\");\n head.appendChild(meta);\n }\n if (!dom.querySelector(\"meta[name=viewport]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"name\", \"viewport\");\n meta.setAttribute(\"content\", \"width=device-width, initial-scale=1\");\n head.appendChild(meta);\n }\n}\n","import base from './styles-base.css';\nimport layout from './styles-layout.css';\nimport article from './styles-article.css';\nimport code from './styles-code.css';\nimport print from './styles-print.css';\n\nexport default function(dom) {\n let s = dom.createElement(\"style\");\n s.textContent = base + layout + article + code + print;\n dom.querySelector(\"head\").appendChild(s);\n}\n","'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n var result = this.name + ': ';\n\n result += this.reason || '(unknown reason)';\n\n if (!compact && this.mark) {\n result += ' ' + this.mark.toString();\n }\n\n return result;\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n\nvar common = require('./common');\n\n\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\n\n\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head, start, tail, end, snippet;\n\n if (!this.buffer) return null;\n\n indent = indent || 4;\n maxLength = maxLength || 75;\n\n head = '';\n start = this.position;\n\n while (start > 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n\n tail = '';\n end = this.position;\n\n while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n\n snippet = this.buffer.slice(start, end);\n\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' +\n common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\n\nMark.prototype.toString = function toString(compact) {\n var snippet, where = '';\n\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n if (!compact) {\n snippet = this.getSnippet();\n\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n\n return where;\n};\n\n\nmodule.exports = Mark;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name, result) {\n var exclude = [];\n\n schema.include.forEach(function (includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n\n schema[name].forEach(function (currentType) {\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n exclude.push(previousIndex);\n }\n });\n\n result.push(currentType);\n });\n\n return result.filter(function (type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {}\n }, index, length;\n\n function collectType(type) {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n\n this.implicit.forEach(function (type) {\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n });\n\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\n\nSchema.DEFAULT = null;\n\n\nSchema.create = function createSchema() {\n var schemas, types;\n\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n\n if (!schemas.every(function (schema) { return schema instanceof Schema; })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n\n if (!types.every(function (type) { return type instanceof Type; })) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n return new Schema({\n include: schemas,\n explicit: types\n });\n};\n\n\nmodule.exports = Schema;\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 8\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 10 (except 0) or base 60\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch === ':') break;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n if (!hasDigits) return false;\n\n // if !base60 - done;\n if (ch !== ':') return true;\n\n // base60 almost not used, no needs to optimize\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch, base, digits = [];\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value, 16);\n return sign * parseInt(value, 8);\n }\n\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseInt(v, 10));\n });\n\n value = 0;\n base = 1;\n\n digits.forEach(function (d) {\n value += (d * base);\n base *= 60;\n });\n\n return sign * value;\n\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (object) { return '0b' + object.toString(2); },\n octal: function (object) { return '0' + object.toString(8); },\n decimal: function (object) { return object.toString(10); },\n hexadecimal: function (object) { return '0x' + object.toString(16).toUpperCase(); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n '^(?:[-+]?(?:[0-9][0-9_]*)\\\\.[0-9_]*(?:[eE][-+][0-9]+)?' +\n '|\\\\.[0-9_]+(?:[eE][-+][0-9]+)?' +\n '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' +\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data)) return false;\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign, base, digits;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n\n } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n\n value = 0.0;\n base = 1;\n\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n\n return sign * value;\n\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./failsafe')\n ],\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./json')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\nvar NodeBuffer;\n\ntry {\n // A trick for browserified version, to not include `Buffer` shim\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n // Wrap into Buffer for NodeJS and leave Array for browser\n if (NodeBuffer) return new NodeBuffer(result);\n\n return result;\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./core')\n ],\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n return true;\n}\n\nfunction constructJavascriptUndefined() {\n /*eslint-disable no-undefined*/\n return undefined;\n}\n\nfunction representJavascriptUndefined() {\n return '';\n}\n\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n if (data === null) return false;\n if (data.length === 0) return false;\n\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // if regexp starts with '/' it can have modifiers and must be properly closed\n // `/foo/gim` - modifiers tail can be maximum 3 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n\n if (modifiers.length > 3) return false;\n // if expression starts with /, is should be properly terminated\n if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n }\n\n return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // `/foo/gim` - tail can be maximum 4 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n\n return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object /*, style*/) {\n var result = '/' + object.source + '/';\n\n if (object.global) result += 'g';\n if (object.multiline) result += 'm';\n if (object.ignoreCase) result += 'i';\n\n return result;\n}\n\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n","'use strict';\n\nvar esprima;\n\n// Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n// If not found - try to fallback to window.esprima. If not\n// found too - then fail to parse.\n//\ntry {\n // workaround to exclude package from browserify list.\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n /*global window */\n if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n if (data === null) return false;\n\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true });\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction constructJavascriptFunction(data) {\n /*jslint evil:true*/\n\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true }),\n params = [],\n body;\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n throw new Error('Failed to resolve function');\n }\n\n ast.body[0].expression.params.forEach(function (param) {\n params.push(param.name);\n });\n\n body = ast.body[0].expression.body.range;\n\n // Esprima's ranges include the first '{' and the last '}' characters on\n // function expressions. So cut them out.\n /*eslint-disable no-new-func*/\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n}\n\nfunction representJavascriptFunction(object /*, style*/) {\n return object.toString();\n}\n\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n","// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [\n require('./default_safe')\n ],\n explicit: [\n require('../type/js/undefined'),\n require('../type/js/regexp'),\n require('../type/js/function')\n ]\n});\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00);\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n return new YAMLException(\n message,\n new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length;\n _position < _length;\n _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode) {\n var index, quantity;\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n throwError(state, 'duplicated mapping key');\n }\n _result[keyNode] = valueNode;\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else {\n break; // Reading is done. Go to the epilogue.\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if (state.lineIndent > nodeIndent && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!state.anchorMap.hasOwnProperty(alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag !== null && state.tag !== '!') {\n if (state.tag === '?') {\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length;\n typeIndex < typeQuantity;\n typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only assigned to plain scalars. So, it isn't\n // needed to check for 'kind' conformity.\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = {};\n state.anchorMap = {};\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n var documents = loadDocuments(input, options), index, length;\n\n for (index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nfunction safeLoadAll(input, output, options) {\n loadAll(input, output, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nfunction safeLoad(input, options) {\n return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// Simplified test for values allowed after the first character in plain style.\nfunction isPlainSafe(c) {\n // Uses a subset of nb-char - c-flow-indicator - \":\" - \"#\"\n // where nb-char ::= c-printable - b-char - c-byte-order-mark.\n return isPrintable(c) && c !== 0xFEFF\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // - \":\" - \"#\"\n && c !== CHAR_COLON\n && c !== CHAR_SHARP;\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n return isPrintable(c) && c !== 0xFEFF\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {\n var i;\n var char;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(string.charCodeAt(0))\n && !isWhitespace(string.charCodeAt(string.length - 1));\n\n if (singleLineOnly) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n return plain && !testAmbiguousType(string)\n ? STYLE_PLAIN : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (string[0] === ' ' && indentPerLevel > 9) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey) {\n state.dump = (function () {\n if (string.length === 0) {\n return \"''\";\n }\n if (!state.noCompatMode &&\n DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n return \"'\" + string + \"'\";\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = (string[0] === ' ') ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char;\n var escapeSeq;\n\n for (var i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n result += !escapeSeq && isPrintable(char)\n ? string[i]\n : escapeSeq || encodeHex(char);\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level, object[index], false, false)) {\n if (index !== 0) _result += ', ';\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || index !== 0) {\n _result += generateNextLine(state, level);\n }\n _result += '- ' + state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (index !== 0) pairBuffer += ', ';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + ': ';\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || index !== 0) {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n state.tag = explicit ? type.tag : '?';\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n writeBlockSequence(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey);\n }\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n state.dump = '!<' + state.tag + '> ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n if (writeNode(state, 0, input, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nfunction safeDump(input, options) {\n return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n","'use strict';\n\n\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\n\n\nfunction deprecated(name) {\n return function () {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\n\n\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\n\n// Deprecated schema names from JS-YAML 2.0.x\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\n\n// Deprecated functions from JS-YAML 1.x.x\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","'use strict';\n\n\nvar yaml = require('./lib/js-yaml.js');\n\n\nmodule.exports = yaml;\n","import ymlParse from \"js-yaml\";\n\nexport default function(dom, data) {\n let localData = {};\n let el = dom.querySelector('script[type=\"text/front-matter\"]');\n if (el) {\n let text = el.textContent;\n localData = ymlParse.safeLoad(text);\n }\n\n data.title = localData.title ? localData.title : \"Untitled\";\n data.description = localData.description ? localData.description : \"No description.\";\n\n data.authors = localData.authors ? localData.authors : [];\n\n data.authors = data.authors.map((author, i) =>{\n let a = {};\n let name = Object.keys(author)[0];\n if ((typeof author) === \"string\") {\n name = author;\n } else {\n a.personalURL = author[name];\n }\n let names = name.split(\" \");\n a.name = name;\n a.firstName = names.slice(0, names.length - 1).join(\" \");\n a.lastName = names[names.length -1];\n if(localData.affiliations[i]) {\n let affiliation = Object.keys(localData.affiliations[i])[0];\n if ((typeof localData.affiliations[i]) === \"string\") {\n affiliation = localData.affiliations[i]\n } else {\n a.affiliationURL = localData.affiliations[i][affiliation];\n }\n a.affiliation = affiliation;\n }\n return a;\n });\n \n\n}\n","/* start bibtexParse 0.0.22 */\n\n//Original work by Henrik Muehe (c) 2010\n//\n//CommonJS port by Mikola Lysenko 2013\n//\n//Port to Browser lib by ORCID / RCPETERS\n//\n//Issues:\n//no comment handling within strings\n//no string concatenation\n//no variable values yet\n//Grammar implemented here:\n//bibtex -> (string | preamble | comment | entry)*;\n//string -> '@STRING' '{' key_equals_value '}';\n//preamble -> '@PREAMBLE' '{' value '}';\n//comment -> '@COMMENT' '{' value '}';\n//entry -> '@' key '{' key ',' key_value_list '}';\n//key_value_list -> key_equals_value (',' key_equals_value)*;\n//key_equals_value -> key '=' value;\n//value -> value_quotes | value_braces | key;\n//value_quotes -> '\"' .*? '\"'; // not quite\n//value_braces -> '{' .*? '\"'; // not quite\n(function(exports) {\n\n function BibtexParser() {\n \n this.months = [\"jan\", \"feb\", \"mar\", \"apr\", \"may\", \"jun\", \"jul\", \"aug\", \"sep\", \"oct\", \"nov\", \"dec\"];\n this.notKey = [',','{','}',' ','='];\n this.pos = 0;\n this.input = \"\";\n this.entries = new Array();\n\n this.currentEntry = \"\";\n\n this.setInput = function(t) {\n this.input = t;\n };\n\n this.getEntries = function() {\n return this.entries;\n };\n\n this.isWhitespace = function(s) {\n return (s == ' ' || s == '\\r' || s == '\\t' || s == '\\n');\n };\n\n this.match = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n this.pos += s.length;\n } else {\n throw \"Token mismatch, expected \" + s + \", found \"\n + this.input.substring(this.pos);\n };\n this.skipWhitespace(canCommentOut);\n };\n\n this.tryMatch = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n return true;\n } else {\n return false;\n };\n this.skipWhitespace(canCommentOut);\n };\n\n /* when search for a match all text can be ignored, not just white space */\n this.matchAt = function() {\n while (this.input.length > this.pos && this.input[this.pos] != '@') {\n this.pos++;\n };\n\n if (this.input[this.pos] == '@') {\n return true;\n };\n return false;\n };\n\n this.skipWhitespace = function(canCommentOut) {\n while (this.isWhitespace(this.input[this.pos])) {\n this.pos++;\n };\n if (this.input[this.pos] == \"%\" && canCommentOut == true) {\n while (this.input[this.pos] != \"\\n\") {\n this.pos++;\n };\n this.skipWhitespace(canCommentOut);\n };\n };\n\n this.value_braces = function() {\n var bracecount = 0;\n this.match(\"{\", false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '}') {\n if (bracecount > 0) {\n bracecount--;\n } else {\n var end = this.pos;\n this.match(\"}\", false);\n return this.input.substring(start, end);\n };\n } else if (this.input[this.pos] == '{') {\n bracecount++;\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value\";\n };\n };\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.value_comment = function() {\n var str = '';\n var brcktCnt = 0;\n while (!(this.tryMatch(\"}\", false) && brcktCnt == 0)) {\n str = str + this.input[this.pos];\n if (this.input[this.pos] == '{')\n brcktCnt++;\n if (this.input[this.pos] == '}')\n brcktCnt--;\n if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n this.pos++;\n };\n return str;\n };\n\n this.value_quotes = function() {\n this.match('\"', false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '\"') {\n var end = this.pos;\n this.match('\"', false);\n return this.input.substring(start, end);\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n }\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.single_value = function() {\n var start = this.pos;\n if (this.tryMatch(\"{\")) {\n return this.value_braces();\n } else if (this.tryMatch('\"')) {\n return this.value_quotes();\n } else {\n var k = this.key();\n if (k.match(\"^[0-9]+$\"))\n return k;\n else if (this.months.indexOf(k.toLowerCase()) >= 0)\n return k.toLowerCase();\n else\n throw \"Value expected:\" + this.input.substring(start) + ' for key: ' + k;\n \n };\n };\n\n this.value = function() {\n var values = [];\n values.push(this.single_value());\n while (this.tryMatch(\"#\")) {\n this.match(\"#\");\n values.push(this.single_value());\n };\n return values.join(\"\");\n };\n\n this.key = function() {\n var start = this.pos;\n while (true) {\n if (this.pos >= this.input.length) {\n throw \"Runaway key\";\n };\n // а-яА-Я is Cyrillic\n //console.log(this.input[this.pos]);\n if (this.notKey.indexOf(this.input[this.pos]) >= 0) {\n return this.input.substring(start, this.pos);\n } else {\n this.pos++;\n \n };\n };\n };\n\n this.key_equals_value = function() {\n var key = this.key();\n if (this.tryMatch(\"=\")) {\n this.match(\"=\");\n var val = this.value();\n return [ key, val ];\n } else {\n throw \"... = value expected, equals sign missing:\"\n + this.input.substring(this.pos);\n };\n };\n\n this.key_value_list = function() {\n var kv = this.key_equals_value();\n this.currentEntry['entryTags'] = {};\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n while (this.tryMatch(\",\")) {\n this.match(\",\");\n // fixes problems with commas at the end of a list\n if (this.tryMatch(\"}\")) {\n break;\n }\n ;\n kv = this.key_equals_value();\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n };\n };\n\n this.entry_body = function(d) {\n this.currentEntry = {};\n this.currentEntry['citationKey'] = this.key();\n this.currentEntry['entryType'] = d.substring(1);\n this.match(\",\");\n this.key_value_list();\n this.entries.push(this.currentEntry);\n };\n\n this.directive = function() {\n this.match(\"@\");\n return \"@\" + this.key();\n };\n\n this.preamble = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'PREAMBLE';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.comment = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'COMMENT';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.entry = function(d) {\n this.entry_body(d);\n };\n\n this.bibtex = function() {\n while (this.matchAt()) {\n var d = this.directive();\n this.match(\"{\");\n if (d == \"@STRING\") {\n this.string();\n } else if (d == \"@PREAMBLE\") {\n this.preamble();\n } else if (d == \"@COMMENT\") {\n this.comment();\n } else {\n this.entry(d);\n }\n this.match(\"}\");\n };\n };\n };\n \n exports.toJSON = function(bibtex) {\n var b = new BibtexParser();\n b.setInput(bibtex);\n b.bibtex();\n return b.entries;\n };\n\n /* added during hackathon don't hate on me */\n exports.toBibtex = function(json) {\n var out = '';\n for ( var i in json) {\n out += \"@\" + json[i].entryType;\n out += '{';\n if (json[i].citationKey)\n out += json[i].citationKey + ', ';\n if (json[i].entry)\n out += json[i].entry ;\n if (json[i].entryTags) {\n var tags = '';\n for (var jdx in json[i].entryTags) {\n if (tags.length != 0)\n tags += ', ';\n tags += jdx + '= {' + json[i].entryTags[jdx] + '}';\n }\n out += tags;\n }\n out += '}\\n\\n';\n }\n return out;\n \n };\n\n})(typeof exports === 'undefined' ? this['bibtexParse'] = {} : exports);\n\n/* end bibtexParse */\n","import bibtexParse from \"bibtex-parse-js\";\n\nexport default function(dom, data) {\n let el = dom.querySelector('script[type=\"text/bibliography\"]');\n let bibliography = {};\n //TODO If we don't have a local element, make a request for the document.\n if (el) {\n let rawBib = el.textContent;\n let parsed = bibtexParse.toJSON(rawBib);\n if(parsed) {\n parsed.forEach(e => {\n for (var k in e.entryTags){\n var val = e.entryTags[k];\n val = val.replace(/[\\t\\n ]+/g, \" \");\n val = val.replace(/{\\\\[\"^`\\.'acu~Hvs]( )?([a-zA-Z])}/g,\n (full, x, char) => char);\n val = val.replace(/{\\\\([a-zA-Z])}/g,\n (full, char) => char);\n e.entryTags[k.toLowerCase()] = val;\n }\n bibliography[e.citationKey] = e.entryTags;\n bibliography[e.citationKey].type = e.entryType;\n });\n }\n }\n data.bibliography = bibliography;\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(new Date(+start)); while (offseti(start, step), floori(start), start < stop)\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) while (--step >= 0) while (offseti(date, 1), !test(date)) {} // eslint-disable-line no-empty\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(Math.floor(date / durationSecond) * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(Math.floor(date / durationMinute) * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute} from \"./duration\";\n\nvar hour = interval(function(date) {\n var offset = date.getTimezoneOffset() * durationMinute % durationHour;\n if (offset < 0) offset += durationHour;\n date.setTime(Math.floor((+date - offset) / durationHour) * durationHour + offset);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval\";\nimport {durationWeek} from \"./duration\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {timeDay, timeSunday, timeMonday, timeYear, utcDay, utcSunday, utcMonday, utcYear} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"S\": formatSeconds,\n \"U\": formatWeekNumberSunday,\n \"w\": formatWeekdayNumber,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"S\": formatUTCSeconds,\n \"U\": formatUTCWeekNumberSunday,\n \"w\": formatUTCWeekdayNumber,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"S\": parseSeconds,\n \"U\": parseWeekNumberSunday,\n \"w\": parseWeekdayNumber,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0);\n if (i != string.length) return null;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n var day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?:\\:?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekdayNumber(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekdayNumber(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {timeFormat} from \"d3-time-format\";\n\nexport default function(dom, data) {\n\n //\n // Properties from source\n //\n\n // title: 'Attention and Augmented Recurrent Neural Networks',\n // description: 'A visual overview of neural attention, and the powerful extensions of neural networks being built on top of it.',\n // url: 'http://distill.pub/2016/augmented-rnns',\n // tags: [ 'rnn' ],\n // doiSuffix: 1,\n // doi: '10.23915/distill.00001',\n // volume: 1,\n // issue: 9,\n // distillPath: '2016/augmented-rnns',\n // githubPath: 'distillpub/post--augmented-rnns',\n // githubCompareUpdatesUrl: 'https://github.com/distillpub/post--augmented-rnns/compare/1596e094d8943d2dc0ea445d92071129c6419c59...3bd9209e0c24d020f87cf6152dcecc6017cbc193',\n // updatedDate: 2017-03-21T07:13:16.000Z,\n // publishedDate: 2016-09-08T07:00:00.000Z,\n // journal: {\n // \"title\": \"Distill\",\n // \"full_title\": \"Distill\",\n // \"abbrev_title\": \"Distill\",\n // \"url\": \"http://distill.pub\",\n // \"doi\": \"10.23915/distill\",\n // \"publisherName\": \"Distill Working Group\",\n // \"publisherEmail\": \"admin@distill.pub\",\n // \"issn\": \"2476-0757\",\n // \"editors\": [...],\n // \"committee\": [...]\n // }\n\n //\n // Computed Properties\n //\n\n // githubUrl: 'https://github.com/distillpub/post--augmented-rnns',\n // previewURL: 'http://distill.pub/2016/augmented-rnns/thumbnail.jpg',\n // publishedDateRFC: 'Thu, 08 Sep 2016 00:00:00 -0700',\n // publishedYear: 2016,\n // publishedMonth: 'Sept',\n // publishedDay: 8,\n // publishedMonthPadded: '09',\n // publishedDayPadded: '08',\n // updatedDateRFC: 'Tue, 21 Mar 2017 00:13:16 -0700',\n // concatenatedAuthors: 'Olah & Carter',\n // bibtexAuthors: 'Olah, Chris and Carter, Shan',\n // slug: 'olah2016attention'\n // authors: [\n // {\n // \"personalURL\": null,\n // \"name\": \"Chris Olah\",\n // \"firstName\": \"Chris\",\n // \"lastName\": \"Olah\",\n // \"affiliationURL\": null,\n // \"affiliation\": \"Google Brain\"\n // }\n // ],\n // bibliography: {\n // \"gregor2015draw\": {\n // \"title\": \"DRAW: A recurrent neural network for image generation\",\n // \"author\": \"Gregor, Karol and Danihelka, Ivo and Graves, Alex and Rezende, Danilo Jimenez and Wierstra, Daan\",\n // \"journal\": \"arXiv preprint arXiv:1502.04623\",\n // \"year\": \"2015\",\n // \"url\": \"https://arxiv.org/pdf/1502.04623.pdf\",\n // \"type\": \"article\"\n // },\n // ...\n // },\n // citations: [\n // \"gregor2015draw\",\n // \"mercier2011humans\",\n // \"dong2014image\",\n // \"dumoulin2016guide\",\n // \"mordvintsev2015inceptionism\"\n // ],\n\n\n // citations:\n let citations = [];\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach(el => {\n let key = el.getAttribute(\"key\");\n if (key) {\n let citationKeys = key.split(\",\");\n citationKeys.forEach(key => {\n if (citations.indexOf(key) == -1){\n citations.push(key);\n if (!(key in data.bibliography)){\n console.warn(\"No bibliography entry found for: \" + key);\n }\n }\n });\n }\n });\n data.citations = citations;\n\n\n data.authors = data.authors || [];\n\n // paths\n if (!data.distillPath && !data.url) {\n data.url = \"http://distill.pub/\";\n } else if (!data.url) {\n data.url = \"http://distill.pub/\" + data.distillPath;\n }\n data.githubUrl = \"https://github.com/\" + data.githubPath;\n\n data.previewURL = data.previewURL ? data.previewURL : data.url + \"/thumbnail.jpg\"\n\n // Homepage\n //data.homepage = !post.noHomepage;\n data.journal = data.journal || {};\n\n // Dates\n if (data.publishedDate){//} && data.journal) {\n data.volume = data.publishedDate.getFullYear() - 2015;\n data.issue = data.publishedDate.getMonth() + 1;\n }\n\n data.publishedDate = data.publishedDate ? data.publishedDate : new Date(\"Invalid\");\n data.updatedDate = data.updatedDate ? data.updatedDate : new Date(\"Invalid\");\n\n data.publishedDateRFC\n let RFC = timeFormat(\"%a, %d %b %Y %H:%M:%S %Z\");\n let months = [\"Jan\", \"Feb\", \"March\", \"April\", \"May\", \"June\", \"July\", \"Aug\", \"Sept\", \"Oct\", \"Nov\", \"Dec\"];\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n data.publishedDateRFC = RFC(data.publishedDate);\n data.publishedYear = data.publishedDate.getFullYear();\n data.publishedMonth = months[data.publishedDate.getMonth()];\n data.publishedDay = data.publishedDate.getDate();\n data.publishedMonthPadded = zeroPad(data.publishedDate.getMonth() + 1);\n data.publishedDayPadded = zeroPad(data.publishedDate.getDate());\n data.updatedDateRFC = RFC(data.updatedDate);\n\n if (data.authors.length > 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \", et al.\";\n } else if (data.authors.length === 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \" & \" + data.authors[1].lastName;\n } else if (data.authors.length === 1) {\n data.concatenatedAuthors = data.authors[0].lastName\n }\n\n data.bibtexAuthors = data.authors.map(function(author){\n return author.lastName + \", \" + author.firstName;\n }).join(\" and \");\n\n data.slug = data.authors.length ? data.authors[0].lastName.toLowerCase() + data.publishedYear + data.title.split(\" \")[0].toLowerCase() : \"Untitled\";\n\n}\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","import favicon from './distill-favicon.base64';\nimport escape from 'escape-html';\n\nexport default function(dom, data) {\n let head = dom.querySelector(\"head\");\n let appendHead = html => appendHtml(head, html);\n\n function meta(name, content, force) {\n if (content || force)\n appendHead(` \\n`);\n }\n\n appendHead(`\n \n \n \n \n ${data.title}\n `);\n\n appendHead(`\n \n \n \n `);\n data.authors.forEach((a) => {\n appendHtml(head, `\n `)\n });\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n // if this is a proprer article, generate Google Scholar meta data\n if (data.doiSuffix){\n appendHead(`\n \\n`);\n\n meta(\"citation_title\", data.title);\n //meta(\"citation_fulltext_html_url\", data.url);\n meta(\"citation_volume\", data.volume);\n meta(\"citation_issue\", data.issue);\n meta(\"citation_firstpage\", data.doiSuffix? `e${data.doiSuffix}` : undefined);\n meta(\"citation_doi\", data.doi);\n\n let journal = data.journal || {};\n meta(\"citation_journal_title\", journal.full_title || journal.title);\n meta(\"citation_journal_abbrev\", journal.abbrev_title);\n meta(\"citation_issn\", journal.issn);\n meta(\"citation_publisher\", journal.publisher);\n meta(\"citation_fulltext_world_readable\", \"\", true);\n\n if (data.publishedDate){\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n meta(\"citation_online_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n // Should we do something different here?\n meta(\"citation_publication_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n }\n\n (data.authors || []).forEach((a) => {\n meta(\"citation_author\", `${a.lastName}, ${a.firstName}`);\n meta(\"citation_author_institution\", a.affiliation);\n });\n\n if (data.citations) {\n data.citations.forEach(key => {\n let d = data.bibliography[key];\n if(!d) {\n console.warn(\"No bibliography data fround for \" + key)\n } else {\n meta(\"citation_reference\", citation_meta_content(data.bibliography[key]) )\n };\n });\n }\n }\n}\n\nfunction appendHtml(el, html) {\n el.innerHTML += html;\n}\n\nfunction citation_meta_content(ref){\n // Special test for arxiv\n var content = `citation_title=${ref.title};`;\n\n let name_strings = ref.author.split(\" and \").forEach(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1].trim();\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n content += `citation_author=${firsts} ${last};`;\n });\n\n if (\"year\" in ref) {\n content += `citation_publication_date=${ref.year};`;\n }\n\n var arxiv_id_search = /https?:\\/\\/arxiv\\.org\\/pdf\\/([0-9]*\\.[0-9]*)\\.pdf/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /https?:\\/\\/arxiv\\.org\\/abs\\/([0-9]*\\.[0-9]*)/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /arXiv preprint arXiv:([0-9]*\\.[0-9]*)/.exec(ref.journal);\n if (arxiv_id_search && arxiv_id_search[1]){\n content += `citation_arxiv_id=${arxiv_id_search[1]};`;\n return content;\n }\n if (\"journal\" in ref){\n content += `citation_journal_title=${ref.journal};`;\n }\n if (\"volume\" in ref) {\n content += `citation_volume=${ref.volume};`;\n }\n if (\"issue\" in ref || \"number\" in ref){\n content += `citation_number=${ref.issue || ref.number};`;\n }\n /*content += `citation_first_page=${};`;\n content += `citation_publication_date=${};`;*/\n return content;\n}\n","const html = `\n\n
    This article is a draft, awaiting review for publication in Distill
    \n`;\n\nexport default function(dom, data) {\n let banner = dom.createElement(\"dt-banner\");\n banner.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(banner, b.firstChild);\n banner.addEventListener(\"click\", function() {\n banner.style.display = \"none\";\n });\n}\n","/*!\n * mustache.js - Logic-less {{mustache}} templates with JavaScript\n * http://github.com/janl/mustache.js\n */\n\n/*global define: false Mustache: true*/\n\n(function defineMustache (global, factory) {\n if (typeof exports === 'object' && exports && typeof exports.nodeName !== 'string') {\n factory(exports); // CommonJS\n } else if (typeof define === 'function' && define.amd) {\n define(['exports'], factory); // AMD\n } else {\n global.Mustache = {};\n factory(global.Mustache); // script, wsh, asp\n }\n}(this, function mustacheFactory (mustache) {\n\n var objectToString = Object.prototype.toString;\n var isArray = Array.isArray || function isArrayPolyfill (object) {\n return objectToString.call(object) === '[object Array]';\n };\n\n function isFunction (object) {\n return typeof object === 'function';\n }\n\n /**\n * More correct typeof string handling array\n * which normally returns typeof 'object'\n */\n function typeStr (obj) {\n return isArray(obj) ? 'array' : typeof obj;\n }\n\n function escapeRegExp (string) {\n return string.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n }\n\n /**\n * Null safe way of checking whether or not an object,\n * including its prototype, has a given property\n */\n function hasProperty (obj, propName) {\n return obj != null && typeof obj === 'object' && (propName in obj);\n }\n\n // Workaround for https://issues.apache.org/jira/browse/COUCHDB-577\n // See https://github.com/janl/mustache.js/issues/189\n var regExpTest = RegExp.prototype.test;\n function testRegExp (re, string) {\n return regExpTest.call(re, string);\n }\n\n var nonSpaceRe = /\\S/;\n function isWhitespace (string) {\n return !testRegExp(nonSpaceRe, string);\n }\n\n var entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n function escapeHtml (string) {\n return String(string).replace(/[&<>\"'`=\\/]/g, function fromEntityMap (s) {\n return entityMap[s];\n });\n }\n\n var whiteRe = /\\s*/;\n var spaceRe = /\\s+/;\n var equalsRe = /\\s*=/;\n var curlyRe = /\\s*\\}/;\n var tagRe = /#|\\^|\\/|>|\\{|&|=|!/;\n\n /**\n * Breaks up the given `template` string into a tree of tokens. If the `tags`\n * argument is given here it must be an array with two string values: the\n * opening and closing tags used in the template (e.g. [ \"<%\", \"%>\" ]). Of\n * course, the default is to use mustaches (i.e. mustache.tags).\n *\n * A token is an array with at least 4 elements. The first element is the\n * mustache symbol that was used inside the tag, e.g. \"#\" or \"&\". If the tag\n * did not contain a symbol (i.e. {{myValue}}) this element is \"name\". For\n * all text that appears outside a symbol this element is \"text\".\n *\n * The second element of a token is its \"value\". For mustache tags this is\n * whatever else was inside the tag besides the opening symbol. For text tokens\n * this is the text itself.\n *\n * The third and fourth elements of the token are the start and end indices,\n * respectively, of the token in the original template.\n *\n * Tokens that are the root node of a subtree contain two more elements: 1) an\n * array of tokens in the subtree and 2) the index in the original template at\n * which the closing tag for that section begins.\n */\n function parseTemplate (template, tags) {\n if (!template)\n return [];\n\n var sections = []; // Stack to hold section tokens\n var tokens = []; // Buffer to hold the tokens\n var spaces = []; // Indices of whitespace tokens on the current line\n var hasTag = false; // Is there a {{tag}} on the current line?\n var nonSpace = false; // Is there a non-space char on the current line?\n\n // Strips all whitespace tokens array for the current line\n // if there was a {{#tag}} on it and otherwise only space.\n function stripSpace () {\n if (hasTag && !nonSpace) {\n while (spaces.length)\n delete tokens[spaces.pop()];\n } else {\n spaces = [];\n }\n\n hasTag = false;\n nonSpace = false;\n }\n\n var openingTagRe, closingTagRe, closingCurlyRe;\n function compileTags (tagsToCompile) {\n if (typeof tagsToCompile === 'string')\n tagsToCompile = tagsToCompile.split(spaceRe, 2);\n\n if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)\n throw new Error('Invalid tags: ' + tagsToCompile);\n\n openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\\\s*');\n closingTagRe = new RegExp('\\\\s*' + escapeRegExp(tagsToCompile[1]));\n closingCurlyRe = new RegExp('\\\\s*' + escapeRegExp('}' + tagsToCompile[1]));\n }\n\n compileTags(tags || mustache.tags);\n\n var scanner = new Scanner(template);\n\n var start, type, value, chr, token, openSection;\n while (!scanner.eos()) {\n start = scanner.pos;\n\n // Match any text between tags.\n value = scanner.scanUntil(openingTagRe);\n\n if (value) {\n for (var i = 0, valueLength = value.length; i < valueLength; ++i) {\n chr = value.charAt(i);\n\n if (isWhitespace(chr)) {\n spaces.push(tokens.length);\n } else {\n nonSpace = true;\n }\n\n tokens.push([ 'text', chr, start, start + 1 ]);\n start += 1;\n\n // Check for whitespace on the current line.\n if (chr === '\\n')\n stripSpace();\n }\n }\n\n // Match the opening tag.\n if (!scanner.scan(openingTagRe))\n break;\n\n hasTag = true;\n\n // Get the tag type.\n type = scanner.scan(tagRe) || 'name';\n scanner.scan(whiteRe);\n\n // Get the tag value.\n if (type === '=') {\n value = scanner.scanUntil(equalsRe);\n scanner.scan(equalsRe);\n scanner.scanUntil(closingTagRe);\n } else if (type === '{') {\n value = scanner.scanUntil(closingCurlyRe);\n scanner.scan(curlyRe);\n scanner.scanUntil(closingTagRe);\n type = '&';\n } else {\n value = scanner.scanUntil(closingTagRe);\n }\n\n // Match the closing tag.\n if (!scanner.scan(closingTagRe))\n throw new Error('Unclosed tag at ' + scanner.pos);\n\n token = [ type, value, start, scanner.pos ];\n tokens.push(token);\n\n if (type === '#' || type === '^') {\n sections.push(token);\n } else if (type === '/') {\n // Check section nesting.\n openSection = sections.pop();\n\n if (!openSection)\n throw new Error('Unopened section \"' + value + '\" at ' + start);\n\n if (openSection[1] !== value)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + start);\n } else if (type === 'name' || type === '{' || type === '&') {\n nonSpace = true;\n } else if (type === '=') {\n // Set the tags for the next time around.\n compileTags(value);\n }\n }\n\n // Make sure there are no open sections when we're done.\n openSection = sections.pop();\n\n if (openSection)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + scanner.pos);\n\n return nestTokens(squashTokens(tokens));\n }\n\n /**\n * Combines the values of consecutive text tokens in the given `tokens` array\n * to a single token.\n */\n function squashTokens (tokens) {\n var squashedTokens = [];\n\n var token, lastToken;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n if (token) {\n if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {\n lastToken[1] += token[1];\n lastToken[3] = token[3];\n } else {\n squashedTokens.push(token);\n lastToken = token;\n }\n }\n }\n\n return squashedTokens;\n }\n\n /**\n * Forms the given array of `tokens` into a nested tree structure where\n * tokens that represent a section have two additional items: 1) an array of\n * all tokens that appear in that section and 2) the index in the original\n * template that represents the end of that section.\n */\n function nestTokens (tokens) {\n var nestedTokens = [];\n var collector = nestedTokens;\n var sections = [];\n\n var token, section;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n switch (token[0]) {\n case '#':\n case '^':\n collector.push(token);\n sections.push(token);\n collector = token[4] = [];\n break;\n case '/':\n section = sections.pop();\n section[5] = token[2];\n collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;\n break;\n default:\n collector.push(token);\n }\n }\n\n return nestedTokens;\n }\n\n /**\n * A simple string scanner that is used by the template parser to find\n * tokens in template strings.\n */\n function Scanner (string) {\n this.string = string;\n this.tail = string;\n this.pos = 0;\n }\n\n /**\n * Returns `true` if the tail is empty (end of string).\n */\n Scanner.prototype.eos = function eos () {\n return this.tail === '';\n };\n\n /**\n * Tries to match the given regular expression at the current position.\n * Returns the matched text if it can match, the empty string otherwise.\n */\n Scanner.prototype.scan = function scan (re) {\n var match = this.tail.match(re);\n\n if (!match || match.index !== 0)\n return '';\n\n var string = match[0];\n\n this.tail = this.tail.substring(string.length);\n this.pos += string.length;\n\n return string;\n };\n\n /**\n * Skips all text until the given regular expression can be matched. Returns\n * the skipped string, which is the entire tail if no match can be made.\n */\n Scanner.prototype.scanUntil = function scanUntil (re) {\n var index = this.tail.search(re), match;\n\n switch (index) {\n case -1:\n match = this.tail;\n this.tail = '';\n break;\n case 0:\n match = '';\n break;\n default:\n match = this.tail.substring(0, index);\n this.tail = this.tail.substring(index);\n }\n\n this.pos += match.length;\n\n return match;\n };\n\n /**\n * Represents a rendering context by wrapping a view object and\n * maintaining a reference to the parent context.\n */\n function Context (view, parentContext) {\n this.view = view;\n this.cache = { '.': this.view };\n this.parent = parentContext;\n }\n\n /**\n * Creates a new context using the given view with this context\n * as the parent.\n */\n Context.prototype.push = function push (view) {\n return new Context(view, this);\n };\n\n /**\n * Returns the value of the given name in this context, traversing\n * up the context hierarchy if the value is absent in this context's view.\n */\n Context.prototype.lookup = function lookup (name) {\n var cache = this.cache;\n\n var value;\n if (cache.hasOwnProperty(name)) {\n value = cache[name];\n } else {\n var context = this, names, index, lookupHit = false;\n\n while (context) {\n if (name.indexOf('.') > 0) {\n value = context.view;\n names = name.split('.');\n index = 0;\n\n /**\n * Using the dot notion path in `name`, we descend through the\n * nested objects.\n *\n * To be certain that the lookup has been successful, we have to\n * check if the last object in the path actually has the property\n * we are looking for. We store the result in `lookupHit`.\n *\n * This is specially necessary for when the value has been set to\n * `undefined` and we want to avoid looking up parent contexts.\n **/\n while (value != null && index < names.length) {\n if (index === names.length - 1)\n lookupHit = hasProperty(value, names[index]);\n\n value = value[names[index++]];\n }\n } else {\n value = context.view[name];\n lookupHit = hasProperty(context.view, name);\n }\n\n if (lookupHit)\n break;\n\n context = context.parent;\n }\n\n cache[name] = value;\n }\n\n if (isFunction(value))\n value = value.call(this.view);\n\n return value;\n };\n\n /**\n * A Writer knows how to take a stream of tokens and render them to a\n * string, given a context. It also maintains a cache of templates to\n * avoid the need to parse the same template twice.\n */\n function Writer () {\n this.cache = {};\n }\n\n /**\n * Clears all cached templates in this writer.\n */\n Writer.prototype.clearCache = function clearCache () {\n this.cache = {};\n };\n\n /**\n * Parses and caches the given `template` and returns the array of tokens\n * that is generated from the parse.\n */\n Writer.prototype.parse = function parse (template, tags) {\n var cache = this.cache;\n var tokens = cache[template];\n\n if (tokens == null)\n tokens = cache[template] = parseTemplate(template, tags);\n\n return tokens;\n };\n\n /**\n * High-level method that is used to render the given `template` with\n * the given `view`.\n *\n * The optional `partials` argument may be an object that contains the\n * names and templates of partials that are used in the template. It may\n * also be a function that is used to load partial templates on the fly\n * that takes a single argument: the name of the partial.\n */\n Writer.prototype.render = function render (template, view, partials) {\n var tokens = this.parse(template);\n var context = (view instanceof Context) ? view : new Context(view);\n return this.renderTokens(tokens, context, partials, template);\n };\n\n /**\n * Low-level method that renders the given array of `tokens` using\n * the given `context` and `partials`.\n *\n * Note: The `originalTemplate` is only ever used to extract the portion\n * of the original template that was contained in a higher-order section.\n * If the template doesn't use higher-order sections, this argument may\n * be omitted.\n */\n Writer.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate) {\n var buffer = '';\n\n var token, symbol, value;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n value = undefined;\n token = tokens[i];\n symbol = token[0];\n\n if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate);\n else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate);\n else if (symbol === '>') value = this.renderPartial(token, context, partials, originalTemplate);\n else if (symbol === '&') value = this.unescapedValue(token, context);\n else if (symbol === 'name') value = this.escapedValue(token, context);\n else if (symbol === 'text') value = this.rawValue(token);\n\n if (value !== undefined)\n buffer += value;\n }\n\n return buffer;\n };\n\n Writer.prototype.renderSection = function renderSection (token, context, partials, originalTemplate) {\n var self = this;\n var buffer = '';\n var value = context.lookup(token[1]);\n\n // This function is used to render an arbitrary template\n // in the current context by higher-order sections.\n function subRender (template) {\n return self.render(template, context, partials);\n }\n\n if (!value) return;\n\n if (isArray(value)) {\n for (var j = 0, valueLength = value.length; j < valueLength; ++j) {\n buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate);\n }\n } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {\n buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate);\n } else if (isFunction(value)) {\n if (typeof originalTemplate !== 'string')\n throw new Error('Cannot use higher-order sections without the original template');\n\n // Extract the portion of the original template that the section contains.\n value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);\n\n if (value != null)\n buffer += value;\n } else {\n buffer += this.renderTokens(token[4], context, partials, originalTemplate);\n }\n return buffer;\n };\n\n Writer.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate) {\n var value = context.lookup(token[1]);\n\n // Use JavaScript's definition of falsy. Include empty arrays.\n // See https://github.com/janl/mustache.js/issues/186\n if (!value || (isArray(value) && value.length === 0))\n return this.renderTokens(token[4], context, partials, originalTemplate);\n };\n\n Writer.prototype.renderPartial = function renderPartial (token, context, partials) {\n if (!partials) return;\n\n var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\n if (value != null)\n return this.renderTokens(this.parse(value), context, partials, value);\n };\n\n Writer.prototype.unescapedValue = function unescapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return value;\n };\n\n Writer.prototype.escapedValue = function escapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return mustache.escape(value);\n };\n\n Writer.prototype.rawValue = function rawValue (token) {\n return token[1];\n };\n\n mustache.name = 'mustache.js';\n mustache.version = '2.3.0';\n mustache.tags = [ '{{', '}}' ];\n\n // All high-level mustache.* functions use this writer.\n var defaultWriter = new Writer();\n\n /**\n * Clears all cached templates in the default writer.\n */\n mustache.clearCache = function clearCache () {\n return defaultWriter.clearCache();\n };\n\n /**\n * Parses and caches the given template in the default writer and returns the\n * array of tokens it contains. Doing this ahead of time avoids the need to\n * parse templates on the fly as they are rendered.\n */\n mustache.parse = function parse (template, tags) {\n return defaultWriter.parse(template, tags);\n };\n\n /**\n * Renders the `template` with the given `view` and `partials` using the\n * default writer.\n */\n mustache.render = function render (template, view, partials) {\n if (typeof template !== 'string') {\n throw new TypeError('Invalid template! Template should be a \"string\" ' +\n 'but \"' + typeStr(template) + '\" was given as the first ' +\n 'argument for mustache#render(template, view, partials)');\n }\n\n return defaultWriter.render(template, view, partials);\n };\n\n // This is here for backwards compatibility with 0.4.x.,\n /*eslint-disable */ // eslint wants camel cased function name\n mustache.to_html = function to_html (template, view, partials, send) {\n /*eslint-enable*/\n\n var result = mustache.render(template, view, partials);\n\n if (isFunction(send)) {\n send(result);\n } else {\n return result;\n }\n };\n\n // Export the escaping function so that the user may override it.\n // See https://github.com/janl/mustache.js/issues/244\n mustache.escape = escapeHtml;\n\n // Export these mainly for testing, but also for advanced usage.\n mustache.Scanner = Scanner;\n mustache.Context = Context;\n mustache.Writer = Writer;\n\n return mustache;\n}));\n","import mustache from \"mustache\";\n\nconst html = `\n\n\n`;\n\nconst template = `\n
    \n
    \n {{#authors}}\n
    \n {{#personalURL}}\n {{name}}\n {{/personalURL}}\n {{^personalURL}}\n
    {{name}}
    \n {{/personalURL}}\n {{#affiliation}}\n {{#affiliationURL}}\n {{affiliation}}\n {{/affiliationURL}}\n {{^affiliationURL}}\n
    {{affiliation}}
    \n {{/affiliationURL}}\n {{/affiliation}}\n
    \n {{/authors}}\n
    \n {{#publishedYear}}\n
    \n
    {{publishedMonth}}. {{publishedDay}}
    \n
    {{publishedYear}}
    \n
    \n {{/publishedYear}}\n {{#publishedYear}}\n \n
    Citation:
    \n
    {{concatenatedAuthors}}, {{publishedYear}}
    \n
    \n {{/publishedYear}}\n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-byline');\n if (el) {\n el.innerHTML = html + mustache.render(template, data);\n }\n}\n","const templateHTML = `\n\n\n
    \n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-appendix')\n if (el) {\n let userHTML = el.innerHTML;\n el.innerHTML = templateHTML;\n let newHTML = \"\";\n\n // If we have some footnotes on the page, render a container for the footnote list.\n if (dom.querySelector(\"dt-fn\")) {\n newHTML = newHTML + `

    Footnotes

    `;\n }\n\n // If we have any citations on the page, render a container for the bibliography.\n if (dom.querySelector(\"dt-cite\")) {\n newHTML = newHTML + `

    References

    `;\n }\n\n let div = el.querySelector(\"div.l-body\")\n div.innerHTML = userHTML + newHTML;\n }\n\n}\n","export default function(dom, data) {\n let el = dom.querySelector('dt-appendix > div');\n if (el) {\n let newHTML = \"\";\n\n newHTML += `

    Updates and Corrections

    \n

    View all changes to this article since it was first published. If you see a mistake or want to suggest a change, please create an issue on GitHub.

    `;\n\n newHTML += `

    Citations and Reuse

    \n

    Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on GitHub. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: “Figure from …”.

    \n\n

    For attribution in academic contexts, please cite this work as

    \n
    ${data.concatenatedAuthors}, \"${data.title}\", ${data.journal.title}, ${data.publishedYear}. http://doi.org/${data.doi}
    \n\n

    BibTeX citation

    \n
    @article{${data.slug},\n  author = {${data.bibtexAuthors}},\n  title = {${data.title}},\n  journal = {${data.journal.title}},\n  year = {${data.publishedYear}},\n  url = {${data.url}},\n  doi = {${data.doi}}\n}
    `;\n\n let existingHTML = el.innerHTML;\n el.innerHTML = existingHTML + newHTML;\n }\n}","export default function(dom, data) {\n let css = `\n dt-cite {\n color: hsla(206, 90%, 20%, 0.7);\n }\n dt-cite .citation-number {\n cursor: default;\n white-space: nowrap;\n font-family: -apple-system, BlinkMacSystemFont, \"Roboto\", Helvetica, sans-serif;\n font-size: 75%;\n color: hsla(206, 90%, 20%, 0.7);\n display: inline-block;\n line-height: 1.1em;\n text-align: center;\n position: relative;\n top: -2px;\n margin: 0 2px;\n }\n figcaption dt-cite .citation-number {\n font-size: 11px;\n font-weight: normal;\n top: -2px;\n line-height: 1em;\n }\n `;\n\n let style = dom.createElement(\"style\");\n style.textContent = css;\n dom.querySelector(\"body\").appendChild(style);\n\n let citations = data.citations;\n /*if (data.citations) {\n citations = Object.keys(data.citations).map(c => data.citations[c]);\n citations.sort((a, b) => {\n return a.author.localeCompare(b.author);\n });\n }*/\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach((el,n) => {\n var key = el.getAttribute(\"key\");\n if (key) {\n var keys = key.split(\",\");\n var cite_string = inline_cite_short(keys);\n var cite_hover_str = \"\";\n keys.map((key,n) => {\n if (n>0) cite_hover_str += \"

    \";\n cite_hover_str += hover_cite(data.bibliography[key]);\n });\n cite_hover_str = cite_hover_str.replace(/\"/g, \"'\")\n var orig_string = el.innerHTML;\n if (orig_string != \"\") orig_string += \" \";\n el.innerHTML = `${orig_string}${cite_string}`;\n }\n });\n\n let bibEl = dom.querySelector(\"dt-bibliography\");\n if (bibEl) {\n let ol = dom.createElement(\"ol\");\n citations.forEach(key => {\n let el = dom.createElement(\"li\");\n el.innerHTML = bibliography_cite(data.bibliography[key]);\n ol.appendChild(el);\n })\n bibEl.appendChild(ol);\n }\n\n function inline_cite_short(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var n = data.citations.indexOf(key)+1;\n return \"\"+n;\n } else {\n return \"?\";\n }\n }\n return \"[\"+keys.map(cite_string).join(\", \")+\"]\";\n }\n\n function inline_cite_long(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var ent = data.bibliography[key];\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var year = ent.year;\n if (names.length == 1) return names[0] + \", \" + year;\n if (names.length == 2) return names[0] + \" & \" + names[1] + \", \" + year;\n if (names.length > 2) return names[0] + \", et al., \" + year;\n } else {\n return \"?\";\n }\n }\n return keys.map(cite_string).join(\", \");\n }\n\n function author_string(ent, template, sep, finalSep){\n var names = ent.author.split(\" and \");\n let name_strings = names.map(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1];\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n var initials = \"\";\n if (firsts != undefined) {\n initials = firsts.trim().split(\" \").map(s => s.trim()[0]);\n initials = initials.join(\".\")+\".\";\n }\n return template.replace(\"${F}\", firsts)\n .replace(\"${L}\", last)\n .replace(\"${I}\", initials);\n });\n if (names.length > 1) {\n var str = name_strings.slice(0, names.length-1).join(sep);\n str += (finalSep || sep) + name_strings[names.length-1];\n return str;\n } else {\n return name_strings[0];\n }\n }\n\n function venue_string(ent) {\n var cite = (ent.journal || ent.booktitle || \"\")\n if (\"volume\" in ent){\n var issue = ent.issue || ent.number;\n issue = (issue != undefined)? \"(\"+issue+\")\" : \"\";\n cite += \", Vol \" + ent.volume + issue;\n }\n if (\"pages\" in ent){\n cite += \", pp. \" + ent.pages\n }\n if (cite != \"\") cite += \". \"\n if (\"publisher\" in ent){\n cite += ent.publisher;\n if (cite[cite.length-1] != \".\") cite += \".\";\n }\n return cite;\n }\n\n function link_string(ent){\n if (\"url\" in ent){\n var url = ent.url;\n var arxiv_match = (/arxiv\\.org\\/abs\\/([0-9\\.]*)/).exec(url);\n if (arxiv_match != null){\n url = `http://arxiv.org/pdf/${arxiv_match[1]}.pdf`;\n }\n\n if (url.slice(-4) == \".pdf\"){\n var label = \"PDF\";\n } else if (url.slice(-5) == \".html\") {\n var label = \"HTML\";\n }\n return `  [${label||\"link\"}]`;\n }/* else if (\"doi\" in ent){\n return `  [DOI]`;\n }*/ else {\n return \"\";\n }\n }\n function doi_string(ent, new_line){\n if (\"doi\" in ent) {\n return `${new_line?\"
    \":\"\"} DOI: ${ent.doi}`;\n } else {\n return \"\";\n }\n }\n\n function bibliography_cite(ent, fancy){\n if (ent){\n var cite = \"\" + ent.title + \" \"\n cite += link_string(ent) + \"
    \";\n cite += author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += venue_string(ent);\n cite += doi_string(ent);\n return cite\n /*var cite = author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += \"\" + ent.title + \". \";\n cite += venue_string(ent);\n cite += doi_string(ent);\n cite += link_string(ent);\n return cite*/\n } else {\n return \"?\";\n }\n }\n\n function hover_cite(ent){\n if (ent){\n var cite = \"\";\n cite += \"\" + ent.title + \"\";\n cite += link_string(ent);\n cite += \"
    \"\n\n var a_str = author_string(ent, \"${I} ${L}\", \", \") + \".\";\n var v_str = venue_string(ent).trim() + \" \" + ent.year + \". \" + doi_string(ent, true);\n\n if ((a_str+v_str).length < Math.min(40, ent.title.length)) {\n cite += a_str + \" \" + v_str;\n } else {\n cite += a_str + \"
    \" + v_str;\n }\n return cite;\n } else {\n return \"?\";\n }\n }\n\n\n //https://scholar.google.com/scholar?q=allintitle%3ADocument+author%3Aolah\n function get_GS_URL(ent){\n if (ent){\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var title = ent.title.split(\" \")//.replace(/[,:]/, \"\")\n var url = \"http://search.labs.crossref.org/dois?\"//\"\"https://scholar.google.com/scholar?\"\n url += uris({q: names.join(\" \") + \" \" + title.join(\" \")})\n }\n\n }\n}\n","export default function(dom, data) {\n\n var fnTags = [].slice.apply(dom.querySelectorAll(\"dt-fn\"));\n var fnContent = [];\n fnTags.forEach((el,n) => {\n var content = el.innerHTML;\n fnContent.push(content);\n n = (n+1)+\"\";\n var key = \"fn-\"+n;\n var escaped_content = content.replace(/\"/g, \"'\");\n el.innerHTML = `${n}`;\n });\n\n let fnList = dom.querySelector(\"dt-fn-list\");\n if (fnList) {\n let ol = dom.createElement(\"ol\");\n fnContent.forEach(content => {\n let el = dom.createElement(\"li\");\n el.innerHTML = content;\n ol.appendChild(el);\n })\n fnList.appendChild(ol);\n }\n\n}\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n */\n\n;(function() {\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^( *[-*_]){3,} *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,\n nptable: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n blockquote: /^( *>[^\\n]+(\\n(?!def)[^\\n]+)*\\n*)+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n table: noop,\n paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,\n text: /^[^\\n]+/\n};\n\nblock.bullet = /(?:[*+-]|\\d+\\.)/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = replace(block.item, 'gm')\n (/bull/g, block.bullet)\n ();\n\nblock.list = replace(block.list)\n (/bull/g, block.bullet)\n ('hr', '\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))')\n ('def', '\\\\n+(?=' + block.def.source + ')')\n ();\n\nblock.blockquote = replace(block.blockquote)\n ('def', block.def)\n ();\n\nblock._tag = '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'\n + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'\n + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|[^\\\\w\\\\s@]*@)\\\\b';\n\nblock.html = replace(block.html)\n ('comment', //)\n ('closed', /<(tag)[\\s\\S]+?<\\/\\1>/)\n ('closing', /])*?>/)\n (/tag/g, block._tag)\n ();\n\nblock.paragraph = replace(block.paragraph)\n ('hr', block.hr)\n ('heading', block.heading)\n ('lheading', block.lheading)\n ('blockquote', block.blockquote)\n ('tag', '<' + block._tag)\n ('def', block.def)\n ();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]*?)\\s*\\1 *(?:\\n+|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = replace(block.paragraph)\n ('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n ();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top, bq) {\n var src = src.replace(/^ +$/gm, '')\n , next\n , loose\n , cap\n , bull\n , b\n , item\n , space\n , i\n , l;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic\n ? cap.replace(/\\n+$/, '')\n : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top, true);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n\n this.tokens.push({\n type: 'list_start',\n ordered: bull.length > 1\n });\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n this.tokens.push({\n type: loose\n ? 'loose_item_start'\n : 'list_item_start'\n });\n\n // Recurse.\n this.token(item, false, bq);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if ((!bq && top) && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.links[cap[1].toLowerCase()] = {\n href: cap[2],\n title: cap[3]\n };\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i]\n .replace(/^ *\\| *| *\\| *$/g, '')\n .split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n autolink: /^<([^ >]+(@|:\\/)[^ >]+)>/,\n url: noop,\n tag: /^|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^\\b_((?:[^_]|__)+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n code: /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n text: /^[\\s\\S]+?(?=[\\\\?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\ninline.link = replace(inline.link)\n ('inside', inline._inside)\n ('href', inline._href)\n ();\n\ninline.reflink = replace(inline.reflink)\n ('inside', inline._inside)\n ();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: replace(inline.escape)('])', '~|])')(),\n url: /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n text: replace(inline.text)\n (']|', '~]|')\n ('|', '|https?://|')\n ()\n});\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: replace(inline.br)('{2,}', '*')(),\n text: replace(inline.gfm.text)('{2,}', '*')()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer;\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new\n Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n var out = ''\n , link\n , text\n , href\n , cap;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += cap[1];\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = cap[1].charAt(6) === ':'\n ? this.mangle(cap[1].substring(7))\n : this.mangle(cap[1]);\n href = this.mangle('mailto:') + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n src = src.substring(cap[0].length);\n text = escape(cap[1]);\n href = text;\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^/i.test(cap[0])) {\n this.inLink = false;\n }\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0]\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out += this.outputLink(cap, {\n href: cap[2],\n title: cap[3]\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2], true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = escape(link.href)\n , title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = ''\n , l = text.length\n , i = 0\n , ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || {};\n}\n\nRenderer.prototype.code = function(code, lang, escaped) {\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '\\n
    ';\n }\n\n return '
    '\n    + (escaped ? code : escape(code, true))\n    + '\\n
    \\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '
    \\n' + quote + '
    \\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw) {\n return ''\n + text\n + '\\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n};\n\nRenderer.prototype.list = function(body, ordered) {\n var type = ordered ? 'ol' : 'ul';\n return '<' + type + '>\\n' + body + '\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '
  • ' + text + '
  • \\n';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '

    ' + text + '

    \\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + '\\n'\n + body\n + '\\n'\n + '
    \\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '\\n' + content + '\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' style=\"text-align:' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.em = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? '
    ' : '
    ';\n};\n\nRenderer.prototype.del = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n if (this.options.sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return '';\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0) {\n return '';\n }\n }\n var out = '
    ';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n var out = '\"'' : '>';\n return out;\n};\n\nRenderer.prototype.text = function(text) {\n return text;\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer;\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options, renderer) {\n var parser = new Parser(options, renderer);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options, this.renderer);\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n this.token.text);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = ''\n , body = ''\n , i\n , row\n , cell\n , flags\n , j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n flags = { header: true, align: this.token.align[i] };\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n var body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n var body = ''\n , ordered = this.token.ordered;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered);\n }\n case 'list_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'loose_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'html': {\n var html = !this.token.pre && !this.options.pedantic\n ? this.inline.output(this.token.text)\n : this.token.text;\n return this.renderer.html(html);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n }\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n return html\n .replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\nfunction unescape(html) {\n\t// explicitly match decimal, hex, and named HTML entities \n return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/g, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction replace(regex, opt) {\n regex = regex.source;\n opt = opt || '';\n return function self(name, val) {\n if (!name) return new RegExp(regex, opt);\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return self;\n };\n}\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1\n , target\n , key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n\n var highlight = opt.highlight\n , tokens\n , pending\n , i = 0;\n\n try {\n tokens = Lexer.lex(src, opt)\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/chjj/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occured:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n sanitizer: null,\n mangle: true,\n smartLists: false,\n silent: false,\n highlight: null,\n langPrefix: 'lang-',\n smartypants: false,\n headerPrefix: '',\n renderer: new Renderer,\n xhtml: false\n};\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.parse = marked;\n\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n this.marked = marked;\n}\n\n}).call(function() {\n return this || (typeof window !== 'undefined' ? window : global);\n}());\n","import marked from 'marked';\n\nmarked.setOptions({\n gfm: true,\n smartypants: true\n});\n\nexport default function(dom, data) {\n let markdownElements = [].slice.call(dom.querySelectorAll('[markdown]'));\n markdownElements.forEach(el => {\n let content = el.innerHTML;\n // Set default indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n\n el.innerHTML = marked(content);\n });\n}\n","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = _self.Prism = {\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/ text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\tbreak tokenloop;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t delNum = 1;\n\n\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t to = match.index + match[0].length,\n\t\t\t\t\t\t k = i,\n\t\t\t\t\t\t p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && p < to; ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t match = match[0].slice(lookbehindLength),\n\t\t\t\t\t to = from + match.length,\n\t\t\t\t\t before = str.slice(0, from),\n\t\t\t\t\t after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (env.type == 'comment') {\n\t\tenv.attributes['spellcheck'] = 'true';\n\t}\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n \t// In worker\n\t_self.addEventListener('message', function(evt) {\n\t\tvar message = JSON.parse(evt.data),\n\t\t lang = message.language,\n\t\t code = message.code,\n\t\t immediateClose = message.immediateClose;\n\n\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\tif (immediateClose) {\n\t\t\t_self.close();\n\t\t}\n\t}, false);\n\n\treturn _self.Prism;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (document.addEventListener && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': //,\n\t'prolog': /<\\?[\\w\\W]+?\\?>/,\n\t'doctype': //i,\n\t'cdata': //i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\w\\W])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:('|\")[\\w\\W]*?(\\1)|[^\\s>]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /[=>\"']/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\w\\W]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^\\{\\}\\s][^\\{\\};]*?(?=\\s*\\{)/,\n\t'string': {\n\t\tpattern: /(\"|')(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'property': /(\\b|\\B)[\\w-]+(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|').*?\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\w\\W]*?\\*\\//,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[a-z0-9_\\.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /(\\.|\\\\)/\n\t\t}\n\t},\n\t'keyword': /\\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(0x[\\dA-Fa-f]+|0b[01]+|0o[0-7]+|\\d*\\.?\\d+([Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*(?=\\()/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*\\*?|\\/|~|\\^|%|\\.{3}/\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[.+?]|\\\\.|[^/\\\\\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\\\\\|\\\\?[^\\\\])*?`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript'\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tif(Array.prototype.forEach) { // Check to prevent error in IE8\n\t\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\t\tvar language, parent = pre;\n\t\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\t\tparent = parent.parentNode;\n\t\t\t\t}\n\n\t\t\t\tif (parent) {\n\t\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t\t}\n\n\t\t\t\tif (!language) {\n\t\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t\t}\n\n\t\t\t\tvar code = document.createElement('code');\n\t\t\t\tcode.className = 'language-' + language;\n\n\t\t\t\tpre.textContent = '';\n\n\t\t\t\tcode.textContent = 'Loading…';\n\n\t\t\t\tpre.appendChild(code);\n\n\t\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\t\txhr.open('GET', src, true);\n\n\t\t\t\txhr.onreadystatechange = function () {\n\t\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\txhr.send(null);\n\t\t\t});\n\t\t}\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\n})();\n","import Prism from \"prismjs\";\n\nexport default function(dom, data) {\n let codeElements = [].slice.call(dom.querySelectorAll(\"dt-code\"));\n codeElements.forEach(el => {\n let content = el.textContent;\n el.innerHTML = \"\";\n let language = el.getAttribute(\"language\");\n let c = dom.createElement(\"code\");\n if (el.getAttribute(\"block\") === \"\") {\n // Let's normalize the tab indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n let p = dom.createElement(\"pre\");\n p.appendChild(c);\n el.appendChild(p);\n } else {\n el.appendChild(c);\n }\n let highlighted = content;\n if (Prism.languages[language]) {\n c.setAttribute(\"class\", \"language-\" + language);\n highlighted = Prism.highlight(content, Prism.languages[language]);\n }\n c.innerHTML = highlighted;\n });\n}\n","export default function(dom, data) {\n\n var textNodes = dom.createTreeWalker(\n dom.body,\n dom.defaultView.NodeFilter.SHOW_TEXT\n );\n while (textNodes.nextNode()) {\n var n = textNodes.currentNode,\n text = n.nodeValue;\n if (text && acceptNode(n)) {\n text = quotes(text);\n text = punctuation(text);\n n.nodeValue = text;\n }\n }\n}\n\nfunction acceptNode(node) {\n var parent = node.parentElement;\n var isMath = (parent && parent.getAttribute && parent.getAttribute(\"class\")) ? parent.getAttribute(\"class\").includes(\"katex\") || parent.getAttribute(\"class\").includes(\"MathJax\") : false;\n return parent &&\n parent.nodeName !== \"SCRIPT\" &&\n parent.nodeName !== \"STYLE\" &&\n parent.nodeName !== \"CODE\" &&\n parent.nodeName !== \"PRE\" &&\n parent.nodeName !== \"SPAN\" &&\n parent.nodeName !== \"DT-HEADER\" &&\n parent.nodeName !== \"DT-BYLINE\" &&\n parent.nodeName !== \"DT-MATH\" &&\n parent.nodeName !== \"DT-CODE\" &&\n parent.nodeName !== \"DT-BIBLIOGRAPHY\" &&\n parent.nodeName !== \"DT-FOOTER\" &&\n parent.nodeType !== 8 && //comment nodes\n !isMath;\n}\n\n\n/*!\n * typeset - Typesetting for the web\n * @version v0.1.6\n * @link https://github.com/davidmerfield/Typeset.js\n * @author David Merfield\n */\n // which has a CC0 license\n // http://creativecommons.org/publicdomain/zero/1.0/\n\n\nfunction punctuation(text){\n\n // Dashes\n text = text.replace(/--/g, '\\u2014');\n text = text.replace(/ \\u2014 /g,\"\\u2009\\u2014\\u2009\"); //this has thin spaces\n\n // Elipses\n text = text.replace(/\\.\\.\\./g,'…');\n\n // Nbsp for punc with spaces\n var NBSP = \"\\u00a0\";\n var NBSP_PUNCTUATION_START = /([«¿¡]) /g;\n var NBSP_PUNCTUATION_END = / ([\\!\\?:;\\.,‽»])/g;\n\n text = text.replace(NBSP_PUNCTUATION_START, '$1' + NBSP);\n text = text.replace(NBSP_PUNCTUATION_END, NBSP + '$1');\n\n return text;\n}\n\nfunction quotes(text) {\n\n text = text\n .replace(/(\\W|^)\"([^\\s\\!\\?:;\\.,‽»])/g, '$1\\u201c$2') // beginning \"\n .replace(/(\\u201c[^\"]*)\"([^\"]*$|[^\\u201c\"]*\\u201c)/g, '$1\\u201d$2') // ending \"\n .replace(/([^0-9])\"/g,'$1\\u201d') // remaining \" at end of word\n .replace(/(\\W|^)'(\\S)/g, '$1\\u2018$2') // beginning '\n .replace(/([a-z])'([a-z])/ig, '$1\\u2019$2') // conjunction's possession\n .replace(/((\\u2018[^']*)|[a-z])'([^0-9]|$)/ig, '$1\\u2019$3') // ending '\n .replace(/(\\u2018)([0-9]{2}[^\\u2019]*)(\\u2018([^0-9]|$)|$|\\u2019[a-z])/ig, '\\u2019$2$3') // abbrev. years like '93\n .replace(/(\\B|^)\\u2018(?=([^\\u2019]*\\u2019\\b)*([^\\u2019\\u2018]*\\W[\\u2019\\u2018]\\b|[^\\u2019\\u2018]*$))/ig, '$1\\u2019') // backwards apostrophe\n .replace(/'''/g, '\\u2034') // triple prime\n .replace(/(\"|'')/g, '\\u2033') // double prime\n .replace(/'/g, '\\u2032');\n\n // Allow escaped quotes\n text = text.replace(/\\\\“/, '\\\"');\n text = text.replace(/\\\\”/, '\\\"');\n text = text.replace(/\\\\’/, '\\'');\n text = text.replace(/\\\\‘/, '\\'');\n\n return text;\n}\n\nfunction ligatures(text){\n\n text = text.replace(/fi/g, 'fi');\n text = text.replace(/fl/g, 'fl');\n\n return text;\n};\n","import code from './hover-box.txt';\n\nexport default function(dom) {\n let s = dom.createElement(\"script\");\n s.textContent = code;\n dom.querySelector(\"body\").appendChild(s);\n}\n","//import xml from \"xml\";\n\nexport default function(data) {\n\n\n var date = data.publishedDate;\n\n var batch_timestamp = Math.floor(Date.now() / 1000);\n var batch_id = data.authors.length ? data.authors[0].lastName.toLowerCase().slice(0,20) : \"Anonymous\";\n batch_id += \"_\" + date.getFullYear();\n batch_id += \"_\" + data.title.split(\" \")[0].toLowerCase().slice(0,20) + \"_\" + batch_timestamp;\n // generate XML\n var crf_data =\n {doi_batch : [\n\n { _attr: {\n version: \"4.3.7\",\n xmlns: \"http://www.crossref.org/schema/4.3.7\",\n \"xmlns:xsi\": \"http://www.w3.org/2001/XMLSchema-instance\",\n \"xsi:schemaLocation\": \"http://www.crossref.org/schema/4.3.7 http://www.crossref.org/schemas/crossref4.3.7.xsd\",\n }},\n\n { head: [\n {doi_batch_id: batch_id},\n {timestamp: batch_timestamp},\n {depositor: [\n {depositor_name: data.journal.publisherName},\n {email_address: data.journal.publisherEmail},\n ]},\n {registrant: data.journal.publisherName},\n ]},\n\n {body: [\n {journal: [\n\n {journal_metadata: [\n {full_title: data.journal.full_title || data.journal.title},\n {abbrev_title: data.journal.abbrev_title || data.journal.title || data.journal.full_title},\n {issn: data.journal.issn},\n {doi_data: [\n {doi: data.journal.doi},\n {resource: data.journal.url},\n ]},\n ]},\n\n {journal_issue: [\n {publication_date: [\n {month: date.getMonth()+1},\n {year: date.getFullYear()},\n ]},\n {journal_volume: [\n {volume: data.volume},\n ]},\n {issue: data.issue},\n ]},\n\n {journal_article: [\n {titles: [\n {title: data.title},\n ]},\n { contributors:\n data.authors.map((author, ind) => (\n {person_name: [\n { _attr: {\n contributor_role: \"author\",\n sequence: (ind == 0)? \"first\" : \"additional\"\n }},\n {given_name: author.firstName},\n {surname: author.lastName},\n {affiliation: author.affiliation}\n // TODO: ORCID?\n ]}\n ))\n },\n {publication_date: [\n {month: date.getMonth()+1},\n {day: date.getDate()},\n {year: date.getFullYear()}\n ]},\n { publisher_item: [\n {item_number: data.doi}\n ]},\n {doi_data: [\n {doi: data.doi},\n //{timestamp: \"\"},\n {resource: data.url},\n ]},\n {citation_list:\n data.citations.map(key =>\n citation_xml(key, data.bibliography[key]))\n }\n\n ]},\n\n ]},\n ]},\n ]};\n\n return xml(crf_data);\n}\n\nfunction citation_xml(key, ent){\n if (ent == undefined) return {};\n var info = [];\n info.push({_attr: {key: key}});\n if (\"title\" in ent)\n info.push({article_title: ent.title});\n if (\"author\" in ent)\n info.push({author: ent.author.split(\" and \")[0].split(\",\")[0].trim()});\n if (\"journal\" in ent)\n info.push({journal_title: ent.journal});\n if (\"booktitle\" in ent)\n info.push({volume_title: ent.booktitle});\n if (\"volume\" in ent)\n info.push({volume: ent.volume});\n if (\"issue\" in ent)\n info.push({issue: ent.issue});\n if (\"doi\" in ent)\n info.push({doi: ent.doi});\n return {citation: info}\n}\n\nfunction xml(obj) {\n //console.log(typeof(obj), obj)\n if (typeof obj === 'string') return obj;\n if (typeof obj === 'number') return \"\"+obj;\n let keys = Object.keys(obj);\n if (keys.length != 1) console.error(\"can't interpret \", obj, \"as xml\");\n let name = keys[0];\n var full_content = obj[name];\n var attr = {};\n if (Array.isArray(full_content)){\n var content = [];\n for (var i in full_content) {\n var obj = full_content[i];\n var obj_name = Object.keys(obj)[0];\n if (\"_attr\" == obj_name) {\n attr = obj[\"_attr\"];\n } else {\n //console.log(Object.keys(obj)[0])\n content.push(obj);\n }\n }\n } else {\n content = full_content;\n }\n if (content == undefined){\n content = \"undefined\"\n }\n\n let attr_string = \"\";\n for (var k in attr) {\n attr_string += ` ${k}=\\\"${attr[k]}\\\"`\n }\n\n //console.log(typeof content, Array.isArray(content), content instanceof String, content)\n if (Array.isArray(content)){\n content = content.map(xml);\n content = content.join(\"\\n\").split(\"\\n\");\n content = content.map(s => \" \" + s).join(\"\\n\")\n var result = `<${name}${attr_string}>\\n${content}\\n`;\n } else {\n content = xml(content);\n var result = `<${name}${attr_string}>${content}`;\n }\n return result;\n}\n","import logo from \"./distill-logo.svg\";\n\nconst html = `\n\n\n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-header\");\n if(el) {\n el.innerHTML = html;\n } else {\n let header = dom.createElement(\"dt-header\");\n header.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(header, b.firstChild);\n }\n}\n","import logo from \"./distill-logo.svg\";\n\nlet html = `\n\n\n
    \n
    \n \n ${logo}\n Distill\n \n is dedicated to clear explanations of machine learning\n
    \n
    \n About\n Submit\n Prize\n RSS\n Twitter\n
    \n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-footer\");\n if(el) {\n el.innerHTML = html;\n } else {\n let footer = dom.createElement(\"dt-footer\");\n footer.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.appendChild(footer);\n }\n}\n","import html from \"./components/html\";\nimport styles from \"./components/styles\";\nimport frontMatter from \"./components/front-matter\";\nimport bibliography from \"./components/bibliography\";\nimport expandData from \"./components/data\";\nimport meta from \"./components/meta\";\nimport banner from \"./components/banner\";\nimport byline from \"./components/byline\";\nimport appendix from \"./components/appendix\";\nimport appendixDistill from \"./components/appendix-distill\";\nimport citation from \"./components/citation\";\nimport footnote from \"./components/footnote\";\nimport markdown from \"./components/markdown\";\nimport code from \"./components/code\";\nimport typeset from \"./components/typeset\";\nimport hoverBox from \"./components/hover-box-include\";\nimport generateCrossref from \"./components/generate-crossref\";\nimport header from \"./components/header\";\nimport footer from \"./components/footer\";\n\nfunction renderImmediately(dom) {\n html(dom);\n styles(dom);\n}\n\nfunction renderOnLoad(dom, data) {\n frontMatter(dom, data);\n bibliography(dom, data);\n expandData(dom, data);\n meta(dom, data);\n byline(dom, data);\n appendix(dom, data);\n markdown(dom, data);\n code(dom, data);\n citation(dom, data);\n footnote(dom, data);\n typeset(dom, data);\n hoverBox(dom, data);\n}\n\n// If we are in a browser, render automatically...\nif(window && window.document) {\n let data = {};\n renderImmediately(window.document);\n window.document.addEventListener(\"DOMContentLoaded\", (event) => {\n renderOnLoad(window.document, data);\n // Add a banner if we're not on localhost.\n if (window.location.hostname !== \"localhost\" && window.location.origin !== \"file://\") {\n banner(window.document, data);\n }\n generateCrossref(data);\n // console.log(data);\n });\n}\n\n// If we are in node...\nfunction render(dom, data) {\n renderImmediately(dom);\n renderOnLoad(dom, data);\n // Remove script tag so it doesn't run again in the client\n let s = dom.querySelector('script[src*=\"distill.pub/template\"]');\n if (s) { s.parentElement.removeChild(s); };\n}\n\n// Distill specific rendering\nfunction distillify(dom, data) {\n header(dom, data);\n appendixDistill(dom, data);\n footer(dom, data);\n}\n\nexport {render as render};\nexport {distillify as distillify};\nexport {generateCrossref as generateCrossref};\n"],"names":["let","meta","YAMLException","common","require$$0","Mark","this","Type","require$$1","require$$2","type","arguments","Schema","require$$3","require$$4","require$$5","require","_hasOwnProperty","_toString","require$$6","require$$7","_require","DEFAULT_SAFE_SCHEMA","DEFAULT_FULL_SCHEMA","loadAll","load","safeLoadAll","safeLoad","State","dump","safeDump","require$$8","require$$9","ymlParse","interval","day","timeDay","timeYear","timeSunday","timeMonday","locale","escape","const","html","define","global","Prism","code","render"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":null,"sources":["../components/html.js","../components/styles.js","../node_modules/js-yaml/lib/js-yaml/common.js","../node_modules/js-yaml/lib/js-yaml/exception.js","../node_modules/js-yaml/lib/js-yaml/mark.js","../node_modules/js-yaml/lib/js-yaml/type.js","../node_modules/js-yaml/lib/js-yaml/schema.js","../node_modules/js-yaml/lib/js-yaml/type/str.js","../node_modules/js-yaml/lib/js-yaml/type/seq.js","../node_modules/js-yaml/lib/js-yaml/type/map.js","../node_modules/js-yaml/lib/js-yaml/schema/failsafe.js","../node_modules/js-yaml/lib/js-yaml/type/null.js","../node_modules/js-yaml/lib/js-yaml/type/bool.js","../node_modules/js-yaml/lib/js-yaml/type/int.js","../node_modules/js-yaml/lib/js-yaml/type/float.js","../node_modules/js-yaml/lib/js-yaml/schema/json.js","../node_modules/js-yaml/lib/js-yaml/schema/core.js","../node_modules/js-yaml/lib/js-yaml/type/timestamp.js","../node_modules/js-yaml/lib/js-yaml/type/merge.js","../node_modules/js-yaml/lib/js-yaml/type/binary.js","../node_modules/js-yaml/lib/js-yaml/type/omap.js","../node_modules/js-yaml/lib/js-yaml/type/pairs.js","../node_modules/js-yaml/lib/js-yaml/type/set.js","../node_modules/js-yaml/lib/js-yaml/schema/default_safe.js","../node_modules/js-yaml/lib/js-yaml/type/js/undefined.js","../node_modules/js-yaml/lib/js-yaml/type/js/regexp.js","../node_modules/js-yaml/lib/js-yaml/type/js/function.js","../node_modules/js-yaml/lib/js-yaml/schema/default_full.js","../node_modules/js-yaml/lib/js-yaml/loader.js","../node_modules/js-yaml/lib/js-yaml/dumper.js","../node_modules/js-yaml/lib/js-yaml.js","../node_modules/js-yaml/index.js","../components/front-matter.js","../node_modules/bibtex-parse-js/bibtexParse.js","../components/bibliography.js","../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/utcMinute.js","../node_modules/d3-time/src/utcHour.js","../node_modules/d3-time/src/utcDay.js","../node_modules/d3-time/src/utcWeek.js","../node_modules/d3-time/src/utcMonth.js","../node_modules/d3-time/src/utcYear.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-time-format/src/isoFormat.js","../node_modules/d3-time-format/src/isoParse.js","../components/data.js","../../node_modules/escape-html/index.js","../components/meta.js","../components/banner.js","../node_modules/mustache/mustache.js","../components/byline.js","../components/appendix.js","../components/appendix-distill.js","../components/citation.js","../components/footnote.js","../node_modules/marked/lib/marked.js","../components/markdown.js","../node_modules/prismjs/prism.js","../components/code.js","../components/typeset.js","../components/hover-box-include.js","../components/generate-crossref.js","../components/header.js","../components/footer.js","../index.js"],"sourcesContent":["export default function(dom) {\n if (!dom.querySelector(\"html\").getAttribute(\"lang\")) {\n dom.querySelector(\"html\").setAttribute(\"lang\", \"en\")\n }\n\n let head = dom.querySelector(\"head\");\n\n if (!dom.querySelector(\"meta[charset]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"charset\", \"utf-8\");\n head.appendChild(meta);\n }\n if (!dom.querySelector(\"meta[name=viewport]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"name\", \"viewport\");\n meta.setAttribute(\"content\", \"width=device-width, initial-scale=1\");\n head.appendChild(meta);\n }\n}\n","import base from './styles-base.css';\nimport layout from './styles-layout.css';\nimport article from './styles-article.css';\nimport code from './styles-code.css';\nimport print from './styles-print.css';\n\nexport default function(dom) {\n let s = dom.createElement(\"style\");\n s.textContent = base + layout + article + code + print;\n dom.querySelector(\"head\").appendChild(s);\n}\n","'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n var result = this.name + ': ';\n\n result += this.reason || '(unknown reason)';\n\n if (!compact && this.mark) {\n result += ' ' + this.mark.toString();\n }\n\n return result;\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n\nvar common = require('./common');\n\n\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\n\n\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head, start, tail, end, snippet;\n\n if (!this.buffer) return null;\n\n indent = indent || 4;\n maxLength = maxLength || 75;\n\n head = '';\n start = this.position;\n\n while (start > 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n\n tail = '';\n end = this.position;\n\n while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n\n snippet = this.buffer.slice(start, end);\n\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' +\n common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\n\nMark.prototype.toString = function toString(compact) {\n var snippet, where = '';\n\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n if (!compact) {\n snippet = this.getSnippet();\n\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n\n return where;\n};\n\n\nmodule.exports = Mark;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name, result) {\n var exclude = [];\n\n schema.include.forEach(function (includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n\n schema[name].forEach(function (currentType) {\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n exclude.push(previousIndex);\n }\n });\n\n result.push(currentType);\n });\n\n return result.filter(function (type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {}\n }, index, length;\n\n function collectType(type) {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n\n this.implicit.forEach(function (type) {\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n });\n\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\n\nSchema.DEFAULT = null;\n\n\nSchema.create = function createSchema() {\n var schemas, types;\n\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n\n if (!schemas.every(function (schema) { return schema instanceof Schema; })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n\n if (!types.every(function (type) { return type instanceof Type; })) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n return new Schema({\n include: schemas,\n explicit: types\n });\n};\n\n\nmodule.exports = Schema;\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 8\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 10 (except 0) or base 60\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch === ':') break;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n if (!hasDigits) return false;\n\n // if !base60 - done;\n if (ch !== ':') return true;\n\n // base60 almost not used, no needs to optimize\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch, base, digits = [];\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value, 16);\n return sign * parseInt(value, 8);\n }\n\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseInt(v, 10));\n });\n\n value = 0;\n base = 1;\n\n digits.forEach(function (d) {\n value += (d * base);\n base *= 60;\n });\n\n return sign * value;\n\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (object) { return '0b' + object.toString(2); },\n octal: function (object) { return '0' + object.toString(8); },\n decimal: function (object) { return object.toString(10); },\n hexadecimal: function (object) { return '0x' + object.toString(16).toUpperCase(); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n '^(?:[-+]?(?:[0-9][0-9_]*)\\\\.[0-9_]*(?:[eE][-+][0-9]+)?' +\n '|\\\\.[0-9_]+(?:[eE][-+][0-9]+)?' +\n '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' +\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data)) return false;\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign, base, digits;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n\n } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n\n value = 0.0;\n base = 1;\n\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n\n return sign * value;\n\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./failsafe')\n ],\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./json')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\nvar NodeBuffer;\n\ntry {\n // A trick for browserified version, to not include `Buffer` shim\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n // Wrap into Buffer for NodeJS and leave Array for browser\n if (NodeBuffer) return new NodeBuffer(result);\n\n return result;\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./core')\n ],\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n return true;\n}\n\nfunction constructJavascriptUndefined() {\n /*eslint-disable no-undefined*/\n return undefined;\n}\n\nfunction representJavascriptUndefined() {\n return '';\n}\n\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n if (data === null) return false;\n if (data.length === 0) return false;\n\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // if regexp starts with '/' it can have modifiers and must be properly closed\n // `/foo/gim` - modifiers tail can be maximum 3 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n\n if (modifiers.length > 3) return false;\n // if expression starts with /, is should be properly terminated\n if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n }\n\n return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // `/foo/gim` - tail can be maximum 4 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n\n return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object /*, style*/) {\n var result = '/' + object.source + '/';\n\n if (object.global) result += 'g';\n if (object.multiline) result += 'm';\n if (object.ignoreCase) result += 'i';\n\n return result;\n}\n\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n","'use strict';\n\nvar esprima;\n\n// Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n// If not found - try to fallback to window.esprima. If not\n// found too - then fail to parse.\n//\ntry {\n // workaround to exclude package from browserify list.\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n /*global window */\n if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n if (data === null) return false;\n\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true });\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction constructJavascriptFunction(data) {\n /*jslint evil:true*/\n\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true }),\n params = [],\n body;\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n throw new Error('Failed to resolve function');\n }\n\n ast.body[0].expression.params.forEach(function (param) {\n params.push(param.name);\n });\n\n body = ast.body[0].expression.body.range;\n\n // Esprima's ranges include the first '{' and the last '}' characters on\n // function expressions. So cut them out.\n /*eslint-disable no-new-func*/\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n}\n\nfunction representJavascriptFunction(object /*, style*/) {\n return object.toString();\n}\n\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n","// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [\n require('./default_safe')\n ],\n explicit: [\n require('../type/js/undefined'),\n require('../type/js/regexp'),\n require('../type/js/function')\n ]\n});\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00);\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n return new YAMLException(\n message,\n new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length;\n _position < _length;\n _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode) {\n var index, quantity;\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n throwError(state, 'duplicated mapping key');\n }\n _result[keyNode] = valueNode;\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else {\n break; // Reading is done. Go to the epilogue.\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if (state.lineIndent > nodeIndent && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!state.anchorMap.hasOwnProperty(alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag !== null && state.tag !== '!') {\n if (state.tag === '?') {\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length;\n typeIndex < typeQuantity;\n typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only assigned to plain scalars. So, it isn't\n // needed to check for 'kind' conformity.\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = {};\n state.anchorMap = {};\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n var documents = loadDocuments(input, options), index, length;\n\n for (index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nfunction safeLoadAll(input, output, options) {\n loadAll(input, output, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nfunction safeLoad(input, options) {\n return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// Simplified test for values allowed after the first character in plain style.\nfunction isPlainSafe(c) {\n // Uses a subset of nb-char - c-flow-indicator - \":\" - \"#\"\n // where nb-char ::= c-printable - b-char - c-byte-order-mark.\n return isPrintable(c) && c !== 0xFEFF\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // - \":\" - \"#\"\n && c !== CHAR_COLON\n && c !== CHAR_SHARP;\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n return isPrintable(c) && c !== 0xFEFF\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {\n var i;\n var char;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(string.charCodeAt(0))\n && !isWhitespace(string.charCodeAt(string.length - 1));\n\n if (singleLineOnly) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n return plain && !testAmbiguousType(string)\n ? STYLE_PLAIN : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (string[0] === ' ' && indentPerLevel > 9) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey) {\n state.dump = (function () {\n if (string.length === 0) {\n return \"''\";\n }\n if (!state.noCompatMode &&\n DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n return \"'\" + string + \"'\";\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = (string[0] === ' ') ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char;\n var escapeSeq;\n\n for (var i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n result += !escapeSeq && isPrintable(char)\n ? string[i]\n : escapeSeq || encodeHex(char);\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level, object[index], false, false)) {\n if (index !== 0) _result += ', ';\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || index !== 0) {\n _result += generateNextLine(state, level);\n }\n _result += '- ' + state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (index !== 0) pairBuffer += ', ';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + ': ';\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || index !== 0) {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n state.tag = explicit ? type.tag : '?';\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n writeBlockSequence(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey);\n }\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n state.dump = '!<' + state.tag + '> ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n if (writeNode(state, 0, input, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nfunction safeDump(input, options) {\n return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n","'use strict';\n\n\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\n\n\nfunction deprecated(name) {\n return function () {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\n\n\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\n\n// Deprecated schema names from JS-YAML 2.0.x\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\n\n// Deprecated functions from JS-YAML 1.x.x\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","'use strict';\n\n\nvar yaml = require('./lib/js-yaml.js');\n\n\nmodule.exports = yaml;\n","import ymlParse from \"js-yaml\";\n\nexport default function(dom, data) {\n let localData = {};\n let el = dom.querySelector('script[type=\"text/front-matter\"]');\n if (el) {\n let text = el.textContent;\n localData = ymlParse.safeLoad(text);\n }\n\n data.title = localData.title ? localData.title : \"Untitled\";\n data.description = localData.description ? localData.description : \"No description.\";\n\n data.authors = localData.authors ? localData.authors : [];\n\n data.authors = data.authors.map((author, i) =>{\n let a = {};\n let name = Object.keys(author)[0];\n if ((typeof author) === \"string\") {\n name = author;\n } else {\n a.personalURL = author[name];\n }\n let names = name.split(\" \");\n a.name = name;\n a.firstName = names.slice(0, names.length - 1).join(\" \");\n a.lastName = names[names.length -1];\n if(localData.affiliations[i]) {\n let affiliation = Object.keys(localData.affiliations[i])[0];\n if ((typeof localData.affiliations[i]) === \"string\") {\n affiliation = localData.affiliations[i]\n } else {\n a.affiliationURL = localData.affiliations[i][affiliation];\n }\n a.affiliation = affiliation;\n }\n return a;\n });\n \n\n}\n","/* start bibtexParse 0.0.22 */\n\n//Original work by Henrik Muehe (c) 2010\n//\n//CommonJS port by Mikola Lysenko 2013\n//\n//Port to Browser lib by ORCID / RCPETERS\n//\n//Issues:\n//no comment handling within strings\n//no string concatenation\n//no variable values yet\n//Grammar implemented here:\n//bibtex -> (string | preamble | comment | entry)*;\n//string -> '@STRING' '{' key_equals_value '}';\n//preamble -> '@PREAMBLE' '{' value '}';\n//comment -> '@COMMENT' '{' value '}';\n//entry -> '@' key '{' key ',' key_value_list '}';\n//key_value_list -> key_equals_value (',' key_equals_value)*;\n//key_equals_value -> key '=' value;\n//value -> value_quotes | value_braces | key;\n//value_quotes -> '\"' .*? '\"'; // not quite\n//value_braces -> '{' .*? '\"'; // not quite\n(function(exports) {\n\n function BibtexParser() {\n \n this.months = [\"jan\", \"feb\", \"mar\", \"apr\", \"may\", \"jun\", \"jul\", \"aug\", \"sep\", \"oct\", \"nov\", \"dec\"];\n this.notKey = [',','{','}',' ','='];\n this.pos = 0;\n this.input = \"\";\n this.entries = new Array();\n\n this.currentEntry = \"\";\n\n this.setInput = function(t) {\n this.input = t;\n };\n\n this.getEntries = function() {\n return this.entries;\n };\n\n this.isWhitespace = function(s) {\n return (s == ' ' || s == '\\r' || s == '\\t' || s == '\\n');\n };\n\n this.match = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n this.pos += s.length;\n } else {\n throw \"Token mismatch, expected \" + s + \", found \"\n + this.input.substring(this.pos);\n };\n this.skipWhitespace(canCommentOut);\n };\n\n this.tryMatch = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n return true;\n } else {\n return false;\n };\n this.skipWhitespace(canCommentOut);\n };\n\n /* when search for a match all text can be ignored, not just white space */\n this.matchAt = function() {\n while (this.input.length > this.pos && this.input[this.pos] != '@') {\n this.pos++;\n };\n\n if (this.input[this.pos] == '@') {\n return true;\n };\n return false;\n };\n\n this.skipWhitespace = function(canCommentOut) {\n while (this.isWhitespace(this.input[this.pos])) {\n this.pos++;\n };\n if (this.input[this.pos] == \"%\" && canCommentOut == true) {\n while (this.input[this.pos] != \"\\n\") {\n this.pos++;\n };\n this.skipWhitespace(canCommentOut);\n };\n };\n\n this.value_braces = function() {\n var bracecount = 0;\n this.match(\"{\", false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '}') {\n if (bracecount > 0) {\n bracecount--;\n } else {\n var end = this.pos;\n this.match(\"}\", false);\n return this.input.substring(start, end);\n };\n } else if (this.input[this.pos] == '{') {\n bracecount++;\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value\";\n };\n };\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.value_comment = function() {\n var str = '';\n var brcktCnt = 0;\n while (!(this.tryMatch(\"}\", false) && brcktCnt == 0)) {\n str = str + this.input[this.pos];\n if (this.input[this.pos] == '{')\n brcktCnt++;\n if (this.input[this.pos] == '}')\n brcktCnt--;\n if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n this.pos++;\n };\n return str;\n };\n\n this.value_quotes = function() {\n this.match('\"', false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '\"') {\n var end = this.pos;\n this.match('\"', false);\n return this.input.substring(start, end);\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n }\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.single_value = function() {\n var start = this.pos;\n if (this.tryMatch(\"{\")) {\n return this.value_braces();\n } else if (this.tryMatch('\"')) {\n return this.value_quotes();\n } else {\n var k = this.key();\n if (k.match(\"^[0-9]+$\"))\n return k;\n else if (this.months.indexOf(k.toLowerCase()) >= 0)\n return k.toLowerCase();\n else\n throw \"Value expected:\" + this.input.substring(start) + ' for key: ' + k;\n \n };\n };\n\n this.value = function() {\n var values = [];\n values.push(this.single_value());\n while (this.tryMatch(\"#\")) {\n this.match(\"#\");\n values.push(this.single_value());\n };\n return values.join(\"\");\n };\n\n this.key = function() {\n var start = this.pos;\n while (true) {\n if (this.pos >= this.input.length) {\n throw \"Runaway key\";\n };\n // а-яА-Я is Cyrillic\n //console.log(this.input[this.pos]);\n if (this.notKey.indexOf(this.input[this.pos]) >= 0) {\n return this.input.substring(start, this.pos);\n } else {\n this.pos++;\n \n };\n };\n };\n\n this.key_equals_value = function() {\n var key = this.key();\n if (this.tryMatch(\"=\")) {\n this.match(\"=\");\n var val = this.value();\n return [ key, val ];\n } else {\n throw \"... = value expected, equals sign missing:\"\n + this.input.substring(this.pos);\n };\n };\n\n this.key_value_list = function() {\n var kv = this.key_equals_value();\n this.currentEntry['entryTags'] = {};\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n while (this.tryMatch(\",\")) {\n this.match(\",\");\n // fixes problems with commas at the end of a list\n if (this.tryMatch(\"}\")) {\n break;\n }\n ;\n kv = this.key_equals_value();\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n };\n };\n\n this.entry_body = function(d) {\n this.currentEntry = {};\n this.currentEntry['citationKey'] = this.key();\n this.currentEntry['entryType'] = d.substring(1);\n this.match(\",\");\n this.key_value_list();\n this.entries.push(this.currentEntry);\n };\n\n this.directive = function() {\n this.match(\"@\");\n return \"@\" + this.key();\n };\n\n this.preamble = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'PREAMBLE';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.comment = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'COMMENT';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.entry = function(d) {\n this.entry_body(d);\n };\n\n this.bibtex = function() {\n while (this.matchAt()) {\n var d = this.directive();\n this.match(\"{\");\n if (d == \"@STRING\") {\n this.string();\n } else if (d == \"@PREAMBLE\") {\n this.preamble();\n } else if (d == \"@COMMENT\") {\n this.comment();\n } else {\n this.entry(d);\n }\n this.match(\"}\");\n };\n };\n };\n \n exports.toJSON = function(bibtex) {\n var b = new BibtexParser();\n b.setInput(bibtex);\n b.bibtex();\n return b.entries;\n };\n\n /* added during hackathon don't hate on me */\n exports.toBibtex = function(json) {\n var out = '';\n for ( var i in json) {\n out += \"@\" + json[i].entryType;\n out += '{';\n if (json[i].citationKey)\n out += json[i].citationKey + ', ';\n if (json[i].entry)\n out += json[i].entry ;\n if (json[i].entryTags) {\n var tags = '';\n for (var jdx in json[i].entryTags) {\n if (tags.length != 0)\n tags += ', ';\n tags += jdx + '= {' + json[i].entryTags[jdx] + '}';\n }\n out += tags;\n }\n out += '}\\n\\n';\n }\n return out;\n \n };\n\n})(typeof exports === 'undefined' ? this['bibtexParse'] = {} : exports);\n\n/* end bibtexParse */\n","import bibtexParse from \"bibtex-parse-js\";\n\nexport default function(dom, data) {\n let el = dom.querySelector('script[type=\"text/bibliography\"]');\n let bibliography = {};\n //TODO If we don't have a local element, make a request for the document.\n if (el) {\n let rawBib = el.textContent;\n let parsed = bibtexParse.toJSON(rawBib);\n if(parsed) {\n parsed.forEach(e => {\n for (var k in e.entryTags){\n var val = e.entryTags[k];\n val = val.replace(/[\\t\\n ]+/g, \" \");\n val = val.replace(/{\\\\[\"^`\\.'acu~Hvs]( )?([a-zA-Z])}/g,\n (full, x, char) => char);\n val = val.replace(/{\\\\([a-zA-Z])}/g,\n (full, char) => char);\n e.entryTags[k.toLowerCase()] = val;\n }\n bibliography[e.citationKey] = e.entryTags;\n bibliography[e.citationKey].type = e.entryType;\n });\n }\n }\n data.bibliography = bibliography;\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(new Date(+start)); while (offseti(start, step), floori(start), start < stop)\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) while (--step >= 0) while (offseti(date, 1), !test(date)) {} // eslint-disable-line no-empty\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(Math.floor(date / durationSecond) * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(Math.floor(date / durationMinute) * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute} from \"./duration\";\n\nvar hour = interval(function(date) {\n var offset = date.getTimezoneOffset() * durationMinute % durationHour;\n if (offset < 0) offset += durationHour;\n date.setTime(Math.floor((+date - offset) / durationHour) * durationHour + offset);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval\";\nimport {durationWeek} from \"./duration\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {timeDay, timeSunday, timeMonday, timeYear, utcDay, utcSunday, utcMonday, utcYear} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"S\": formatSeconds,\n \"U\": formatWeekNumberSunday,\n \"w\": formatWeekdayNumber,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"S\": formatUTCSeconds,\n \"U\": formatUTCWeekNumberSunday,\n \"w\": formatUTCWeekdayNumber,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"S\": parseSeconds,\n \"U\": parseWeekNumberSunday,\n \"w\": parseWeekdayNumber,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0);\n if (i != string.length) return null;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n var day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?:\\:?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekdayNumber(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekdayNumber(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {timeFormat} from \"d3-time-format\";\n\nexport default function(dom, data) {\n\n //\n // Properties from source\n //\n\n // title: 'Attention and Augmented Recurrent Neural Networks',\n // description: 'A visual overview of neural attention, and the powerful extensions of neural networks being built on top of it.',\n // url: 'http://distill.pub/2016/augmented-rnns',\n // tags: [ 'rnn' ],\n // doiSuffix: 1,\n // doi: '10.23915/distill.00001',\n // volume: 1,\n // issue: 9,\n // distillPath: '2016/augmented-rnns',\n // githubPath: 'distillpub/post--augmented-rnns',\n // githubCompareUpdatesUrl: 'https://github.com/distillpub/post--augmented-rnns/compare/1596e094d8943d2dc0ea445d92071129c6419c59...3bd9209e0c24d020f87cf6152dcecc6017cbc193',\n // updatedDate: 2017-03-21T07:13:16.000Z,\n // publishedDate: 2016-09-08T07:00:00.000Z,\n // journal: {\n // \"title\": \"Distill\",\n // \"full_title\": \"Distill\",\n // \"abbrev_title\": \"Distill\",\n // \"url\": \"http://distill.pub\",\n // \"doi\": \"10.23915/distill\",\n // \"publisherName\": \"Distill Working Group\",\n // \"publisherEmail\": \"admin@distill.pub\",\n // \"issn\": \"2476-0757\",\n // \"editors\": [...],\n // \"committee\": [...]\n // }\n\n //\n // Computed Properties\n //\n\n // githubUrl: 'https://github.com/distillpub/post--augmented-rnns',\n // previewURL: 'http://distill.pub/2016/augmented-rnns/thumbnail.jpg',\n // publishedDateRFC: 'Thu, 08 Sep 2016 00:00:00 -0700',\n // publishedYear: 2016,\n // publishedMonth: 'Sept',\n // publishedDay: 8,\n // publishedMonthPadded: '09',\n // publishedDayPadded: '08',\n // updatedDateRFC: 'Tue, 21 Mar 2017 00:13:16 -0700',\n // concatenatedAuthors: 'Olah & Carter',\n // bibtexAuthors: 'Olah, Chris and Carter, Shan',\n // slug: 'olah2016attention'\n // authors: [\n // {\n // \"personalURL\": null,\n // \"name\": \"Chris Olah\",\n // \"firstName\": \"Chris\",\n // \"lastName\": \"Olah\",\n // \"affiliationURL\": null,\n // \"affiliation\": \"Google Brain\"\n // }\n // ],\n // bibliography: {\n // \"gregor2015draw\": {\n // \"title\": \"DRAW: A recurrent neural network for image generation\",\n // \"author\": \"Gregor, Karol and Danihelka, Ivo and Graves, Alex and Rezende, Danilo Jimenez and Wierstra, Daan\",\n // \"journal\": \"arXiv preprint arXiv:1502.04623\",\n // \"year\": \"2015\",\n // \"url\": \"https://arxiv.org/pdf/1502.04623.pdf\",\n // \"type\": \"article\"\n // },\n // ...\n // },\n // citations: [\n // \"gregor2015draw\",\n // \"mercier2011humans\",\n // \"dong2014image\",\n // \"dumoulin2016guide\",\n // \"mordvintsev2015inceptionism\"\n // ],\n\n\n // citations:\n let citations = [];\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach(el => {\n let key = el.getAttribute(\"key\");\n if (key) {\n let citationKeys = key.split(\",\");\n citationKeys.forEach(key => {\n if (citations.indexOf(key) == -1){\n citations.push(key);\n if (!(key in data.bibliography)){\n console.warn(\"No bibliography entry found for: \" + key);\n }\n }\n });\n }\n });\n data.citations = citations;\n\n\n data.authors = data.authors || [];\n\n // paths\n if (!data.distillPath && !data.url) {\n data.url = \"http://distill.pub/\";\n } else if (!data.url) {\n data.url = \"http://distill.pub/\" + data.distillPath;\n }\n data.githubUrl = \"https://github.com/\" + data.githubPath;\n\n data.previewURL = data.previewURL ? data.previewURL : data.url + \"/thumbnail.jpg\"\n\n // Homepage\n //data.homepage = !post.noHomepage;\n data.journal = data.journal || {};\n\n // Dates\n if (data.publishedDate){//} && data.journal) {\n data.volume = data.publishedDate.getFullYear() - 2015;\n data.issue = data.publishedDate.getMonth() + 1;\n }\n\n data.publishedDate = data.publishedDate ? data.publishedDate : new Date(\"Invalid\");\n data.updatedDate = data.updatedDate ? data.updatedDate : new Date(\"Invalid\");\n\n data.publishedDateRFC\n let RFC = timeFormat(\"%a, %d %b %Y %H:%M:%S %Z\");\n let months = [\"Jan\", \"Feb\", \"March\", \"April\", \"May\", \"June\", \"July\", \"Aug\", \"Sept\", \"Oct\", \"Nov\", \"Dec\"];\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n data.publishedDateRFC = RFC(data.publishedDate);\n data.publishedYear = data.publishedDate.getFullYear();\n data.publishedMonth = months[data.publishedDate.getMonth()];\n data.publishedDay = data.publishedDate.getDate();\n data.publishedMonthPadded = zeroPad(data.publishedDate.getMonth() + 1);\n data.publishedDayPadded = zeroPad(data.publishedDate.getDate());\n data.updatedDateRFC = RFC(data.updatedDate);\n\n if (data.authors.length > 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \", et al.\";\n } else if (data.authors.length === 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \" & \" + data.authors[1].lastName;\n } else if (data.authors.length === 1) {\n data.concatenatedAuthors = data.authors[0].lastName\n }\n\n data.bibtexAuthors = data.authors.map(function(author){\n return author.lastName + \", \" + author.firstName;\n }).join(\" and \");\n\n data.slug = data.authors.length ? data.authors[0].lastName.toLowerCase() + data.publishedYear + data.title.split(\" \")[0].toLowerCase() : \"Untitled\";\n\n}\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","import favicon from './distill-favicon.base64';\nimport escape from 'escape-html';\n\nexport default function(dom, data) {\n let head = dom.querySelector(\"head\");\n let appendHead = html => appendHtml(head, html);\n\n function meta(name, content, force) {\n if (content || force)\n appendHead(` \\n`);\n }\n\n appendHead(`\n \n \n \n \n ${data.title}\n `);\n\n appendHead(`\n \n \n \n `);\n data.authors.forEach((a) => {\n appendHtml(head, `\n `)\n });\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n // if this is a proprer article, generate Google Scholar meta data\n if (data.doiSuffix){\n appendHead(`\n \\n`);\n\n meta(\"citation_title\", data.title);\n //meta(\"citation_fulltext_html_url\", data.url);\n meta(\"citation_volume\", data.volume);\n meta(\"citation_issue\", data.issue);\n meta(\"citation_firstpage\", data.doiSuffix? `e${data.doiSuffix}` : undefined);\n meta(\"citation_doi\", data.doi);\n\n let journal = data.journal || {};\n meta(\"citation_journal_title\", journal.full_title || journal.title);\n meta(\"citation_journal_abbrev\", journal.abbrev_title);\n meta(\"citation_issn\", journal.issn);\n meta(\"citation_publisher\", journal.publisher);\n meta(\"citation_fulltext_world_readable\", \"\", true);\n\n if (data.publishedDate){\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n meta(\"citation_online_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n // Should we do something different here?\n meta(\"citation_publication_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n }\n\n (data.authors || []).forEach((a) => {\n meta(\"citation_author\", `${a.lastName}, ${a.firstName}`);\n meta(\"citation_author_institution\", a.affiliation);\n });\n\n if (data.citations) {\n data.citations.forEach(key => {\n let d = data.bibliography[key];\n if(!d) {\n console.warn(\"No bibliography data fround for \" + key)\n } else {\n meta(\"citation_reference\", citation_meta_content(data.bibliography[key]) )\n };\n });\n }\n }\n}\n\nfunction appendHtml(el, html) {\n el.innerHTML += html;\n}\n\nfunction citation_meta_content(ref){\n // Special test for arxiv\n var content = `citation_title=${ref.title};`;\n\n let name_strings = ref.author.split(\" and \").forEach(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1].trim();\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n content += `citation_author=${firsts} ${last};`;\n });\n\n if (\"year\" in ref) {\n content += `citation_publication_date=${ref.year};`;\n }\n\n var arxiv_id_search = /https?:\\/\\/arxiv\\.org\\/pdf\\/([0-9]*\\.[0-9]*)\\.pdf/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /https?:\\/\\/arxiv\\.org\\/abs\\/([0-9]*\\.[0-9]*)/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /arXiv preprint arXiv:([0-9]*\\.[0-9]*)/.exec(ref.journal);\n if (arxiv_id_search && arxiv_id_search[1]){\n content += `citation_arxiv_id=${arxiv_id_search[1]};`;\n return content;\n }\n if (\"journal\" in ref){\n content += `citation_journal_title=${ref.journal};`;\n }\n if (\"volume\" in ref) {\n content += `citation_volume=${ref.volume};`;\n }\n if (\"issue\" in ref || \"number\" in ref){\n content += `citation_number=${ref.issue || ref.number};`;\n }\n /*content += `citation_first_page=${};`;\n content += `citation_publication_date=${};`;*/\n return content;\n}\n","const html = `\n\n
    This article is a draft, awaiting review for publication in Distill
    \n`;\n\nexport default function(dom, data) {\n let banner = dom.createElement(\"dt-banner\");\n banner.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(banner, b.firstChild);\n banner.addEventListener(\"click\", function() {\n banner.style.display = \"none\";\n });\n}\n","/*!\n * mustache.js - Logic-less {{mustache}} templates with JavaScript\n * http://github.com/janl/mustache.js\n */\n\n/*global define: false Mustache: true*/\n\n(function defineMustache (global, factory) {\n if (typeof exports === 'object' && exports && typeof exports.nodeName !== 'string') {\n factory(exports); // CommonJS\n } else if (typeof define === 'function' && define.amd) {\n define(['exports'], factory); // AMD\n } else {\n global.Mustache = {};\n factory(global.Mustache); // script, wsh, asp\n }\n}(this, function mustacheFactory (mustache) {\n\n var objectToString = Object.prototype.toString;\n var isArray = Array.isArray || function isArrayPolyfill (object) {\n return objectToString.call(object) === '[object Array]';\n };\n\n function isFunction (object) {\n return typeof object === 'function';\n }\n\n /**\n * More correct typeof string handling array\n * which normally returns typeof 'object'\n */\n function typeStr (obj) {\n return isArray(obj) ? 'array' : typeof obj;\n }\n\n function escapeRegExp (string) {\n return string.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n }\n\n /**\n * Null safe way of checking whether or not an object,\n * including its prototype, has a given property\n */\n function hasProperty (obj, propName) {\n return obj != null && typeof obj === 'object' && (propName in obj);\n }\n\n // Workaround for https://issues.apache.org/jira/browse/COUCHDB-577\n // See https://github.com/janl/mustache.js/issues/189\n var regExpTest = RegExp.prototype.test;\n function testRegExp (re, string) {\n return regExpTest.call(re, string);\n }\n\n var nonSpaceRe = /\\S/;\n function isWhitespace (string) {\n return !testRegExp(nonSpaceRe, string);\n }\n\n var entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n function escapeHtml (string) {\n return String(string).replace(/[&<>\"'`=\\/]/g, function fromEntityMap (s) {\n return entityMap[s];\n });\n }\n\n var whiteRe = /\\s*/;\n var spaceRe = /\\s+/;\n var equalsRe = /\\s*=/;\n var curlyRe = /\\s*\\}/;\n var tagRe = /#|\\^|\\/|>|\\{|&|=|!/;\n\n /**\n * Breaks up the given `template` string into a tree of tokens. If the `tags`\n * argument is given here it must be an array with two string values: the\n * opening and closing tags used in the template (e.g. [ \"<%\", \"%>\" ]). Of\n * course, the default is to use mustaches (i.e. mustache.tags).\n *\n * A token is an array with at least 4 elements. The first element is the\n * mustache symbol that was used inside the tag, e.g. \"#\" or \"&\". If the tag\n * did not contain a symbol (i.e. {{myValue}}) this element is \"name\". For\n * all text that appears outside a symbol this element is \"text\".\n *\n * The second element of a token is its \"value\". For mustache tags this is\n * whatever else was inside the tag besides the opening symbol. For text tokens\n * this is the text itself.\n *\n * The third and fourth elements of the token are the start and end indices,\n * respectively, of the token in the original template.\n *\n * Tokens that are the root node of a subtree contain two more elements: 1) an\n * array of tokens in the subtree and 2) the index in the original template at\n * which the closing tag for that section begins.\n */\n function parseTemplate (template, tags) {\n if (!template)\n return [];\n\n var sections = []; // Stack to hold section tokens\n var tokens = []; // Buffer to hold the tokens\n var spaces = []; // Indices of whitespace tokens on the current line\n var hasTag = false; // Is there a {{tag}} on the current line?\n var nonSpace = false; // Is there a non-space char on the current line?\n\n // Strips all whitespace tokens array for the current line\n // if there was a {{#tag}} on it and otherwise only space.\n function stripSpace () {\n if (hasTag && !nonSpace) {\n while (spaces.length)\n delete tokens[spaces.pop()];\n } else {\n spaces = [];\n }\n\n hasTag = false;\n nonSpace = false;\n }\n\n var openingTagRe, closingTagRe, closingCurlyRe;\n function compileTags (tagsToCompile) {\n if (typeof tagsToCompile === 'string')\n tagsToCompile = tagsToCompile.split(spaceRe, 2);\n\n if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)\n throw new Error('Invalid tags: ' + tagsToCompile);\n\n openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\\\s*');\n closingTagRe = new RegExp('\\\\s*' + escapeRegExp(tagsToCompile[1]));\n closingCurlyRe = new RegExp('\\\\s*' + escapeRegExp('}' + tagsToCompile[1]));\n }\n\n compileTags(tags || mustache.tags);\n\n var scanner = new Scanner(template);\n\n var start, type, value, chr, token, openSection;\n while (!scanner.eos()) {\n start = scanner.pos;\n\n // Match any text between tags.\n value = scanner.scanUntil(openingTagRe);\n\n if (value) {\n for (var i = 0, valueLength = value.length; i < valueLength; ++i) {\n chr = value.charAt(i);\n\n if (isWhitespace(chr)) {\n spaces.push(tokens.length);\n } else {\n nonSpace = true;\n }\n\n tokens.push([ 'text', chr, start, start + 1 ]);\n start += 1;\n\n // Check for whitespace on the current line.\n if (chr === '\\n')\n stripSpace();\n }\n }\n\n // Match the opening tag.\n if (!scanner.scan(openingTagRe))\n break;\n\n hasTag = true;\n\n // Get the tag type.\n type = scanner.scan(tagRe) || 'name';\n scanner.scan(whiteRe);\n\n // Get the tag value.\n if (type === '=') {\n value = scanner.scanUntil(equalsRe);\n scanner.scan(equalsRe);\n scanner.scanUntil(closingTagRe);\n } else if (type === '{') {\n value = scanner.scanUntil(closingCurlyRe);\n scanner.scan(curlyRe);\n scanner.scanUntil(closingTagRe);\n type = '&';\n } else {\n value = scanner.scanUntil(closingTagRe);\n }\n\n // Match the closing tag.\n if (!scanner.scan(closingTagRe))\n throw new Error('Unclosed tag at ' + scanner.pos);\n\n token = [ type, value, start, scanner.pos ];\n tokens.push(token);\n\n if (type === '#' || type === '^') {\n sections.push(token);\n } else if (type === '/') {\n // Check section nesting.\n openSection = sections.pop();\n\n if (!openSection)\n throw new Error('Unopened section \"' + value + '\" at ' + start);\n\n if (openSection[1] !== value)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + start);\n } else if (type === 'name' || type === '{' || type === '&') {\n nonSpace = true;\n } else if (type === '=') {\n // Set the tags for the next time around.\n compileTags(value);\n }\n }\n\n // Make sure there are no open sections when we're done.\n openSection = sections.pop();\n\n if (openSection)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + scanner.pos);\n\n return nestTokens(squashTokens(tokens));\n }\n\n /**\n * Combines the values of consecutive text tokens in the given `tokens` array\n * to a single token.\n */\n function squashTokens (tokens) {\n var squashedTokens = [];\n\n var token, lastToken;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n if (token) {\n if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {\n lastToken[1] += token[1];\n lastToken[3] = token[3];\n } else {\n squashedTokens.push(token);\n lastToken = token;\n }\n }\n }\n\n return squashedTokens;\n }\n\n /**\n * Forms the given array of `tokens` into a nested tree structure where\n * tokens that represent a section have two additional items: 1) an array of\n * all tokens that appear in that section and 2) the index in the original\n * template that represents the end of that section.\n */\n function nestTokens (tokens) {\n var nestedTokens = [];\n var collector = nestedTokens;\n var sections = [];\n\n var token, section;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n switch (token[0]) {\n case '#':\n case '^':\n collector.push(token);\n sections.push(token);\n collector = token[4] = [];\n break;\n case '/':\n section = sections.pop();\n section[5] = token[2];\n collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;\n break;\n default:\n collector.push(token);\n }\n }\n\n return nestedTokens;\n }\n\n /**\n * A simple string scanner that is used by the template parser to find\n * tokens in template strings.\n */\n function Scanner (string) {\n this.string = string;\n this.tail = string;\n this.pos = 0;\n }\n\n /**\n * Returns `true` if the tail is empty (end of string).\n */\n Scanner.prototype.eos = function eos () {\n return this.tail === '';\n };\n\n /**\n * Tries to match the given regular expression at the current position.\n * Returns the matched text if it can match, the empty string otherwise.\n */\n Scanner.prototype.scan = function scan (re) {\n var match = this.tail.match(re);\n\n if (!match || match.index !== 0)\n return '';\n\n var string = match[0];\n\n this.tail = this.tail.substring(string.length);\n this.pos += string.length;\n\n return string;\n };\n\n /**\n * Skips all text until the given regular expression can be matched. Returns\n * the skipped string, which is the entire tail if no match can be made.\n */\n Scanner.prototype.scanUntil = function scanUntil (re) {\n var index = this.tail.search(re), match;\n\n switch (index) {\n case -1:\n match = this.tail;\n this.tail = '';\n break;\n case 0:\n match = '';\n break;\n default:\n match = this.tail.substring(0, index);\n this.tail = this.tail.substring(index);\n }\n\n this.pos += match.length;\n\n return match;\n };\n\n /**\n * Represents a rendering context by wrapping a view object and\n * maintaining a reference to the parent context.\n */\n function Context (view, parentContext) {\n this.view = view;\n this.cache = { '.': this.view };\n this.parent = parentContext;\n }\n\n /**\n * Creates a new context using the given view with this context\n * as the parent.\n */\n Context.prototype.push = function push (view) {\n return new Context(view, this);\n };\n\n /**\n * Returns the value of the given name in this context, traversing\n * up the context hierarchy if the value is absent in this context's view.\n */\n Context.prototype.lookup = function lookup (name) {\n var cache = this.cache;\n\n var value;\n if (cache.hasOwnProperty(name)) {\n value = cache[name];\n } else {\n var context = this, names, index, lookupHit = false;\n\n while (context) {\n if (name.indexOf('.') > 0) {\n value = context.view;\n names = name.split('.');\n index = 0;\n\n /**\n * Using the dot notion path in `name`, we descend through the\n * nested objects.\n *\n * To be certain that the lookup has been successful, we have to\n * check if the last object in the path actually has the property\n * we are looking for. We store the result in `lookupHit`.\n *\n * This is specially necessary for when the value has been set to\n * `undefined` and we want to avoid looking up parent contexts.\n **/\n while (value != null && index < names.length) {\n if (index === names.length - 1)\n lookupHit = hasProperty(value, names[index]);\n\n value = value[names[index++]];\n }\n } else {\n value = context.view[name];\n lookupHit = hasProperty(context.view, name);\n }\n\n if (lookupHit)\n break;\n\n context = context.parent;\n }\n\n cache[name] = value;\n }\n\n if (isFunction(value))\n value = value.call(this.view);\n\n return value;\n };\n\n /**\n * A Writer knows how to take a stream of tokens and render them to a\n * string, given a context. It also maintains a cache of templates to\n * avoid the need to parse the same template twice.\n */\n function Writer () {\n this.cache = {};\n }\n\n /**\n * Clears all cached templates in this writer.\n */\n Writer.prototype.clearCache = function clearCache () {\n this.cache = {};\n };\n\n /**\n * Parses and caches the given `template` and returns the array of tokens\n * that is generated from the parse.\n */\n Writer.prototype.parse = function parse (template, tags) {\n var cache = this.cache;\n var tokens = cache[template];\n\n if (tokens == null)\n tokens = cache[template] = parseTemplate(template, tags);\n\n return tokens;\n };\n\n /**\n * High-level method that is used to render the given `template` with\n * the given `view`.\n *\n * The optional `partials` argument may be an object that contains the\n * names and templates of partials that are used in the template. It may\n * also be a function that is used to load partial templates on the fly\n * that takes a single argument: the name of the partial.\n */\n Writer.prototype.render = function render (template, view, partials) {\n var tokens = this.parse(template);\n var context = (view instanceof Context) ? view : new Context(view);\n return this.renderTokens(tokens, context, partials, template);\n };\n\n /**\n * Low-level method that renders the given array of `tokens` using\n * the given `context` and `partials`.\n *\n * Note: The `originalTemplate` is only ever used to extract the portion\n * of the original template that was contained in a higher-order section.\n * If the template doesn't use higher-order sections, this argument may\n * be omitted.\n */\n Writer.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate) {\n var buffer = '';\n\n var token, symbol, value;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n value = undefined;\n token = tokens[i];\n symbol = token[0];\n\n if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate);\n else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate);\n else if (symbol === '>') value = this.renderPartial(token, context, partials, originalTemplate);\n else if (symbol === '&') value = this.unescapedValue(token, context);\n else if (symbol === 'name') value = this.escapedValue(token, context);\n else if (symbol === 'text') value = this.rawValue(token);\n\n if (value !== undefined)\n buffer += value;\n }\n\n return buffer;\n };\n\n Writer.prototype.renderSection = function renderSection (token, context, partials, originalTemplate) {\n var self = this;\n var buffer = '';\n var value = context.lookup(token[1]);\n\n // This function is used to render an arbitrary template\n // in the current context by higher-order sections.\n function subRender (template) {\n return self.render(template, context, partials);\n }\n\n if (!value) return;\n\n if (isArray(value)) {\n for (var j = 0, valueLength = value.length; j < valueLength; ++j) {\n buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate);\n }\n } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {\n buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate);\n } else if (isFunction(value)) {\n if (typeof originalTemplate !== 'string')\n throw new Error('Cannot use higher-order sections without the original template');\n\n // Extract the portion of the original template that the section contains.\n value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);\n\n if (value != null)\n buffer += value;\n } else {\n buffer += this.renderTokens(token[4], context, partials, originalTemplate);\n }\n return buffer;\n };\n\n Writer.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate) {\n var value = context.lookup(token[1]);\n\n // Use JavaScript's definition of falsy. Include empty arrays.\n // See https://github.com/janl/mustache.js/issues/186\n if (!value || (isArray(value) && value.length === 0))\n return this.renderTokens(token[4], context, partials, originalTemplate);\n };\n\n Writer.prototype.renderPartial = function renderPartial (token, context, partials) {\n if (!partials) return;\n\n var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\n if (value != null)\n return this.renderTokens(this.parse(value), context, partials, value);\n };\n\n Writer.prototype.unescapedValue = function unescapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return value;\n };\n\n Writer.prototype.escapedValue = function escapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return mustache.escape(value);\n };\n\n Writer.prototype.rawValue = function rawValue (token) {\n return token[1];\n };\n\n mustache.name = 'mustache.js';\n mustache.version = '2.3.0';\n mustache.tags = [ '{{', '}}' ];\n\n // All high-level mustache.* functions use this writer.\n var defaultWriter = new Writer();\n\n /**\n * Clears all cached templates in the default writer.\n */\n mustache.clearCache = function clearCache () {\n return defaultWriter.clearCache();\n };\n\n /**\n * Parses and caches the given template in the default writer and returns the\n * array of tokens it contains. Doing this ahead of time avoids the need to\n * parse templates on the fly as they are rendered.\n */\n mustache.parse = function parse (template, tags) {\n return defaultWriter.parse(template, tags);\n };\n\n /**\n * Renders the `template` with the given `view` and `partials` using the\n * default writer.\n */\n mustache.render = function render (template, view, partials) {\n if (typeof template !== 'string') {\n throw new TypeError('Invalid template! Template should be a \"string\" ' +\n 'but \"' + typeStr(template) + '\" was given as the first ' +\n 'argument for mustache#render(template, view, partials)');\n }\n\n return defaultWriter.render(template, view, partials);\n };\n\n // This is here for backwards compatibility with 0.4.x.,\n /*eslint-disable */ // eslint wants camel cased function name\n mustache.to_html = function to_html (template, view, partials, send) {\n /*eslint-enable*/\n\n var result = mustache.render(template, view, partials);\n\n if (isFunction(send)) {\n send(result);\n } else {\n return result;\n }\n };\n\n // Export the escaping function so that the user may override it.\n // See https://github.com/janl/mustache.js/issues/244\n mustache.escape = escapeHtml;\n\n // Export these mainly for testing, but also for advanced usage.\n mustache.Scanner = Scanner;\n mustache.Context = Context;\n mustache.Writer = Writer;\n\n return mustache;\n}));\n","import mustache from \"mustache\";\n\nconst html = `\n\n\n`;\n\nconst template = `\n
    \n
    \n {{#authors}}\n
    \n {{#personalURL}}\n {{name}}\n {{/personalURL}}\n {{^personalURL}}\n
    {{name}}
    \n {{/personalURL}}\n {{#affiliation}}\n {{#affiliationURL}}\n {{affiliation}}\n {{/affiliationURL}}\n {{^affiliationURL}}\n
    {{affiliation}}
    \n {{/affiliationURL}}\n {{/affiliation}}\n
    \n {{/authors}}\n
    \n {{#publishedYear}}\n
    \n
    {{publishedMonth}}. {{publishedDay}}
    \n
    {{publishedYear}}
    \n
    \n {{/publishedYear}}\n {{#publishedYear}}\n \n
    Citation:
    \n
    {{concatenatedAuthors}}, {{publishedYear}}
    \n
    \n {{/publishedYear}}\n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-byline');\n if (el) {\n el.innerHTML = html + mustache.render(template, data);\n }\n}\n","const templateHTML = `\n\n\n
    \n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-appendix')\n if (el) {\n let userHTML = el.innerHTML;\n el.innerHTML = templateHTML;\n let newHTML = \"\";\n\n // If we have some footnotes on the page, render a container for the footnote list.\n if (dom.querySelector(\"dt-fn\")) {\n newHTML = newHTML + `

    Footnotes

    `;\n }\n\n // If we have any citations on the page, render a container for the bibliography.\n if (dom.querySelector(\"dt-cite\")) {\n newHTML = newHTML + `

    References

    `;\n }\n\n let div = el.querySelector(\"div.l-body\")\n div.innerHTML = userHTML + newHTML;\n }\n\n}\n","export default function(dom, data) {\n let el = dom.querySelector('dt-appendix > div');\n if (el) {\n let newHTML = \"\";\n\n newHTML += `

    Updates and Corrections

    \n

    View all changes to this article since it was first published. If you see a mistake or want to suggest a change, please create an issue on GitHub.

    `;\n\n newHTML += `

    Citations and Reuse

    \n

    Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on GitHub. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: “Figure from …”.

    \n\n

    For attribution in academic contexts, please cite this work as

    \n
    ${data.concatenatedAuthors}, \"${data.title}\", ${data.journal.title}, ${data.publishedYear}. http://doi.org/${data.doi}
    \n\n

    BibTeX citation

    \n
    @article{${data.slug},\n  author = {${data.bibtexAuthors}},\n  title = {${data.title}},\n  journal = {${data.journal.title}},\n  year = {${data.publishedYear}},\n  url = {${data.url}},\n  doi = {${data.doi}}\n}
    `;\n\n let existingHTML = el.innerHTML;\n el.innerHTML = existingHTML + newHTML;\n }\n}","export default function(dom, data) {\n let css = `\n dt-cite {\n color: hsla(206, 90%, 20%, 0.7);\n }\n dt-cite .citation-number {\n cursor: default;\n white-space: nowrap;\n font-family: -apple-system, BlinkMacSystemFont, \"Roboto\", Helvetica, sans-serif;\n font-size: 75%;\n color: hsla(206, 90%, 20%, 0.7);\n display: inline-block;\n line-height: 1.1em;\n text-align: center;\n position: relative;\n top: -2px;\n margin: 0 2px;\n }\n figcaption dt-cite .citation-number {\n font-size: 11px;\n font-weight: normal;\n top: -2px;\n line-height: 1em;\n }\n `;\n\n let style = dom.createElement(\"style\");\n style.textContent = css;\n dom.querySelector(\"body\").appendChild(style);\n\n let citations = data.citations;\n /*if (data.citations) {\n citations = Object.keys(data.citations).map(c => data.citations[c]);\n citations.sort((a, b) => {\n return a.author.localeCompare(b.author);\n });\n }*/\n \n var appendCiteHoverDiv = (function() {\n function nodeFromString(str) {\n var div = dom.createElement(\"div\");\n div.innerHTML = str;\n return div.firstChild;\n }\n var hover_boxes_container = nodeFromString(`
    `)\n dom.querySelector(\"body\").appendChild(hover_boxes_container);\n var hover_n = 0;\n return function appendHoverDiv(content) {\n var id = `dt-cite-hover-box-${hover_n}`;\n hover_n += 1;\n var str = `
    ${content}
    `;\n var div = nodeFromString(str);\n hover_boxes_container.appendChild(div);\n return id;\n }\n })();\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach((el,n) => {\n var key = el.getAttribute(\"key\");\n if (key) {\n var keys = key.split(\",\");\n var cite_string = inline_cite_short(keys);\n var cite_hover_str = \"\";\n keys.map((key,n) => {\n if (n>0) cite_hover_str += \"

    \";\n cite_hover_str += hover_cite(data.bibliography[key]);\n });\n var ref_id = appendCiteHoverDiv(cite_hover_str);\n //cite_hover_str = cite_hover_str.replace(/\"/g, \"'\")\n var orig_string = el.innerHTML;\n if (orig_string != \"\") orig_string += \" \";\n el.innerHTML = `${orig_string}${cite_string}`;\n }\n });\n\n let bibEl = dom.querySelector(\"dt-bibliography\");\n if (bibEl) {\n let ol = dom.createElement(\"ol\");\n citations.forEach(key => {\n let el = dom.createElement(\"li\");\n el.innerHTML = bibliography_cite(data.bibliography[key]);\n ol.appendChild(el);\n })\n bibEl.appendChild(ol);\n }\n\n function inline_cite_short(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var n = data.citations.indexOf(key)+1;\n return \"\"+n;\n } else {\n return \"?\";\n }\n }\n return \"[\"+keys.map(cite_string).join(\", \")+\"]\";\n }\n\n function inline_cite_long(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var ent = data.bibliography[key];\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var year = ent.year;\n if (names.length == 1) return names[0] + \", \" + year;\n if (names.length == 2) return names[0] + \" & \" + names[1] + \", \" + year;\n if (names.length > 2) return names[0] + \", et al., \" + year;\n } else {\n return \"?\";\n }\n }\n return keys.map(cite_string).join(\", \");\n }\n\n function author_string(ent, template, sep, finalSep){\n var names = ent.author.split(\" and \");\n let name_strings = names.map(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1];\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n var initials = \"\";\n if (firsts != undefined) {\n initials = firsts.trim().split(\" \").map(s => s.trim()[0]);\n initials = initials.join(\".\")+\".\";\n }\n return template.replace(\"${F}\", firsts)\n .replace(\"${L}\", last)\n .replace(\"${I}\", initials);\n });\n if (names.length > 1) {\n var str = name_strings.slice(0, names.length-1).join(sep);\n str += (finalSep || sep) + name_strings[names.length-1];\n return str;\n } else {\n return name_strings[0];\n }\n }\n\n function venue_string(ent) {\n var cite = (ent.journal || ent.booktitle || \"\")\n if (\"volume\" in ent){\n var issue = ent.issue || ent.number;\n issue = (issue != undefined)? \"(\"+issue+\")\" : \"\";\n cite += \", Vol \" + ent.volume + issue;\n }\n if (\"pages\" in ent){\n cite += \", pp. \" + ent.pages\n }\n if (cite != \"\") cite += \". \"\n if (\"publisher\" in ent){\n cite += ent.publisher;\n if (cite[cite.length-1] != \".\") cite += \".\";\n }\n return cite;\n }\n\n function link_string(ent){\n if (\"url\" in ent){\n var url = ent.url;\n var arxiv_match = (/arxiv\\.org\\/abs\\/([0-9\\.]*)/).exec(url);\n if (arxiv_match != null){\n url = `http://arxiv.org/pdf/${arxiv_match[1]}.pdf`;\n }\n\n if (url.slice(-4) == \".pdf\"){\n var label = \"PDF\";\n } else if (url.slice(-5) == \".html\") {\n var label = \"HTML\";\n }\n return `  [${label||\"link\"}]`;\n }/* else if (\"doi\" in ent){\n return `  [DOI]`;\n }*/ else {\n return \"\";\n }\n }\n function doi_string(ent, new_line){\n if (\"doi\" in ent) {\n return `${new_line?\"
    \":\"\"} DOI: ${ent.doi}`;\n } else {\n return \"\";\n }\n }\n\n function bibliography_cite(ent, fancy){\n if (ent){\n var cite = \"\" + ent.title + \" \"\n cite += link_string(ent) + \"
    \";\n cite += author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += venue_string(ent);\n cite += doi_string(ent);\n return cite\n /*var cite = author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += \"\" + ent.title + \". \";\n cite += venue_string(ent);\n cite += doi_string(ent);\n cite += link_string(ent);\n return cite*/\n } else {\n return \"?\";\n }\n }\n\n function hover_cite(ent){\n if (ent){\n var cite = \"\";\n cite += \"\" + ent.title + \"\";\n cite += link_string(ent);\n cite += \"
    \"\n\n var a_str = author_string(ent, \"${I} ${L}\", \", \") + \".\";\n var v_str = venue_string(ent).trim() + \" \" + ent.year + \". \" + doi_string(ent, true);\n\n if ((a_str+v_str).length < Math.min(40, ent.title.length)) {\n cite += a_str + \" \" + v_str;\n } else {\n cite += a_str + \"
    \" + v_str;\n }\n return cite;\n } else {\n return \"?\";\n }\n }\n\n\n //https://scholar.google.com/scholar?q=allintitle%3ADocument+author%3Aolah\n function get_GS_URL(ent){\n if (ent){\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var title = ent.title.split(\" \")//.replace(/[,:]/, \"\")\n var url = \"http://search.labs.crossref.org/dois?\"//\"\"https://scholar.google.com/scholar?\"\n url += uris({q: names.join(\" \") + \" \" + title.join(\" \")})\n }\n\n }\n}\n","export default function(dom, data) {\n\n var appendFootnoteHoverDiv = (function() {\n function nodeFromString(str) {\n var div = dom.createElement(\"div\");\n div.innerHTML = str;\n return div.firstChild;\n }\n var hover_boxes_container = nodeFromString(`
    `)\n dom.querySelector(\"body\").appendChild(hover_boxes_container);\n var hover_n = 0;\n return function appendHoverDiv(content) {\n var id = `dt-fn-hover-box-${hover_n}`;\n hover_n += 1;\n var str = `
    ${content}
    `;\n var div = nodeFromString(str);\n hover_boxes_container.appendChild(div);\n return id;\n }\n })();\n\n\n var fnTags = [].slice.apply(dom.querySelectorAll(\"dt-fn\"));\n var fnContent = [];\n fnTags.forEach((el,n) => {\n var content = el.innerHTML;\n var ref_id = appendFootnoteHoverDiv(content)\n fnContent.push(content);\n n = (n+1)+\"\";\n var key = \"fn-\"+n;\n var escaped_content = content.replace(/\"/g, \"'\");\n el.innerHTML = `${n}`;\n });\n\n let fnList = dom.querySelector(\"dt-fn-list\");\n if (fnList) {\n let ol = dom.createElement(\"ol\");\n fnContent.forEach(content => {\n let el = dom.createElement(\"li\");\n el.innerHTML = content;\n ol.appendChild(el);\n })\n fnList.appendChild(ol);\n }\n\n}\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n */\n\n;(function() {\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^( *[-*_]){3,} *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,\n nptable: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n blockquote: /^( *>[^\\n]+(\\n(?!def)[^\\n]+)*\\n*)+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n table: noop,\n paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,\n text: /^[^\\n]+/\n};\n\nblock.bullet = /(?:[*+-]|\\d+\\.)/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = replace(block.item, 'gm')\n (/bull/g, block.bullet)\n ();\n\nblock.list = replace(block.list)\n (/bull/g, block.bullet)\n ('hr', '\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))')\n ('def', '\\\\n+(?=' + block.def.source + ')')\n ();\n\nblock.blockquote = replace(block.blockquote)\n ('def', block.def)\n ();\n\nblock._tag = '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'\n + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'\n + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|[^\\\\w\\\\s@]*@)\\\\b';\n\nblock.html = replace(block.html)\n ('comment', //)\n ('closed', /<(tag)[\\s\\S]+?<\\/\\1>/)\n ('closing', /])*?>/)\n (/tag/g, block._tag)\n ();\n\nblock.paragraph = replace(block.paragraph)\n ('hr', block.hr)\n ('heading', block.heading)\n ('lheading', block.lheading)\n ('blockquote', block.blockquote)\n ('tag', '<' + block._tag)\n ('def', block.def)\n ();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]*?)\\s*\\1 *(?:\\n+|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = replace(block.paragraph)\n ('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n ();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top, bq) {\n var src = src.replace(/^ +$/gm, '')\n , next\n , loose\n , cap\n , bull\n , b\n , item\n , space\n , i\n , l;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic\n ? cap.replace(/\\n+$/, '')\n : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top, true);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n\n this.tokens.push({\n type: 'list_start',\n ordered: bull.length > 1\n });\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n this.tokens.push({\n type: loose\n ? 'loose_item_start'\n : 'list_item_start'\n });\n\n // Recurse.\n this.token(item, false, bq);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if ((!bq && top) && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.links[cap[1].toLowerCase()] = {\n href: cap[2],\n title: cap[3]\n };\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i]\n .replace(/^ *\\| *| *\\| *$/g, '')\n .split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n autolink: /^<([^ >]+(@|:\\/)[^ >]+)>/,\n url: noop,\n tag: /^|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^\\b_((?:[^_]|__)+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n code: /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n text: /^[\\s\\S]+?(?=[\\\\?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\ninline.link = replace(inline.link)\n ('inside', inline._inside)\n ('href', inline._href)\n ();\n\ninline.reflink = replace(inline.reflink)\n ('inside', inline._inside)\n ();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: replace(inline.escape)('])', '~|])')(),\n url: /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n text: replace(inline.text)\n (']|', '~]|')\n ('|', '|https?://|')\n ()\n});\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: replace(inline.br)('{2,}', '*')(),\n text: replace(inline.gfm.text)('{2,}', '*')()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer;\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new\n Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n var out = ''\n , link\n , text\n , href\n , cap;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += cap[1];\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = cap[1].charAt(6) === ':'\n ? this.mangle(cap[1].substring(7))\n : this.mangle(cap[1]);\n href = this.mangle('mailto:') + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n src = src.substring(cap[0].length);\n text = escape(cap[1]);\n href = text;\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^/i.test(cap[0])) {\n this.inLink = false;\n }\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0]\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out += this.outputLink(cap, {\n href: cap[2],\n title: cap[3]\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2], true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = escape(link.href)\n , title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = ''\n , l = text.length\n , i = 0\n , ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || {};\n}\n\nRenderer.prototype.code = function(code, lang, escaped) {\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '\\n
    ';\n }\n\n return '
    '\n    + (escaped ? code : escape(code, true))\n    + '\\n
    \\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '
    \\n' + quote + '
    \\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw) {\n return ''\n + text\n + '\\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n};\n\nRenderer.prototype.list = function(body, ordered) {\n var type = ordered ? 'ol' : 'ul';\n return '<' + type + '>\\n' + body + '\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '
  • ' + text + '
  • \\n';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '

    ' + text + '

    \\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + '\\n'\n + body\n + '\\n'\n + '
    \\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '\\n' + content + '\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' style=\"text-align:' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.em = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? '
    ' : '
    ';\n};\n\nRenderer.prototype.del = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n if (this.options.sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return '';\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0) {\n return '';\n }\n }\n var out = '
    ';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n var out = '\"'' : '>';\n return out;\n};\n\nRenderer.prototype.text = function(text) {\n return text;\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer;\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options, renderer) {\n var parser = new Parser(options, renderer);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options, this.renderer);\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n this.token.text);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = ''\n , body = ''\n , i\n , row\n , cell\n , flags\n , j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n flags = { header: true, align: this.token.align[i] };\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n var body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n var body = ''\n , ordered = this.token.ordered;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered);\n }\n case 'list_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'loose_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'html': {\n var html = !this.token.pre && !this.options.pedantic\n ? this.inline.output(this.token.text)\n : this.token.text;\n return this.renderer.html(html);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n }\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n return html\n .replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\nfunction unescape(html) {\n\t// explicitly match decimal, hex, and named HTML entities \n return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/g, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction replace(regex, opt) {\n regex = regex.source;\n opt = opt || '';\n return function self(name, val) {\n if (!name) return new RegExp(regex, opt);\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return self;\n };\n}\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1\n , target\n , key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n\n var highlight = opt.highlight\n , tokens\n , pending\n , i = 0;\n\n try {\n tokens = Lexer.lex(src, opt)\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/chjj/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occured:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n sanitizer: null,\n mangle: true,\n smartLists: false,\n silent: false,\n highlight: null,\n langPrefix: 'lang-',\n smartypants: false,\n headerPrefix: '',\n renderer: new Renderer,\n xhtml: false\n};\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.parse = marked;\n\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n this.marked = marked;\n}\n\n}).call(function() {\n return this || (typeof window !== 'undefined' ? window : global);\n}());\n","import marked from 'marked';\n\nmarked.setOptions({\n gfm: true,\n smartypants: true\n});\n\nexport default function(dom, data) {\n let markdownElements = [].slice.call(dom.querySelectorAll('[markdown]'));\n markdownElements.forEach(el => {\n let content = el.innerHTML;\n // Set default indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n\n el.innerHTML = marked(content);\n });\n}\n","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = _self.Prism = {\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/ text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\tbreak tokenloop;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t delNum = 1;\n\n\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t to = match.index + match[0].length,\n\t\t\t\t\t\t k = i,\n\t\t\t\t\t\t p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && p < to; ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t match = match[0].slice(lookbehindLength),\n\t\t\t\t\t to = from + match.length,\n\t\t\t\t\t before = str.slice(0, from),\n\t\t\t\t\t after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (env.type == 'comment') {\n\t\tenv.attributes['spellcheck'] = 'true';\n\t}\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n \t// In worker\n\t_self.addEventListener('message', function(evt) {\n\t\tvar message = JSON.parse(evt.data),\n\t\t lang = message.language,\n\t\t code = message.code,\n\t\t immediateClose = message.immediateClose;\n\n\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\tif (immediateClose) {\n\t\t\t_self.close();\n\t\t}\n\t}, false);\n\n\treturn _self.Prism;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (document.addEventListener && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': //,\n\t'prolog': /<\\?[\\w\\W]+?\\?>/,\n\t'doctype': //i,\n\t'cdata': //i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\w\\W])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:('|\")[\\w\\W]*?(\\1)|[^\\s>]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /[=>\"']/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\w\\W]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^\\{\\}\\s][^\\{\\};]*?(?=\\s*\\{)/,\n\t'string': {\n\t\tpattern: /(\"|')(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'property': /(\\b|\\B)[\\w-]+(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|').*?\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\w\\W]*?\\*\\//,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[a-z0-9_\\.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /(\\.|\\\\)/\n\t\t}\n\t},\n\t'keyword': /\\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(0x[\\dA-Fa-f]+|0b[01]+|0o[0-7]+|\\d*\\.?\\d+([Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*(?=\\()/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*\\*?|\\/|~|\\^|%|\\.{3}/\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[.+?]|\\\\.|[^/\\\\\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\\\\\|\\\\?[^\\\\])*?`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript'\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tif(Array.prototype.forEach) { // Check to prevent error in IE8\n\t\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\t\tvar language, parent = pre;\n\t\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\t\tparent = parent.parentNode;\n\t\t\t\t}\n\n\t\t\t\tif (parent) {\n\t\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t\t}\n\n\t\t\t\tif (!language) {\n\t\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t\t}\n\n\t\t\t\tvar code = document.createElement('code');\n\t\t\t\tcode.className = 'language-' + language;\n\n\t\t\t\tpre.textContent = '';\n\n\t\t\t\tcode.textContent = 'Loading…';\n\n\t\t\t\tpre.appendChild(code);\n\n\t\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\t\txhr.open('GET', src, true);\n\n\t\t\t\txhr.onreadystatechange = function () {\n\t\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\txhr.send(null);\n\t\t\t});\n\t\t}\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\n})();\n","import Prism from \"prismjs\";\n\nexport default function(dom, data) {\n let codeElements = [].slice.call(dom.querySelectorAll(\"dt-code\"));\n codeElements.forEach(el => {\n let content = el.textContent;\n el.innerHTML = \"\";\n let language = el.getAttribute(\"language\");\n let c = dom.createElement(\"code\");\n if (el.getAttribute(\"block\") === \"\") {\n // Let's normalize the tab indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n let p = dom.createElement(\"pre\");\n p.appendChild(c);\n el.appendChild(p);\n } else {\n el.appendChild(c);\n }\n let highlighted = content;\n if (Prism.languages[language]) {\n c.setAttribute(\"class\", \"language-\" + language);\n highlighted = Prism.highlight(content, Prism.languages[language]);\n }\n c.innerHTML = highlighted;\n });\n}\n","export default function(dom, data) {\n\n var textNodes = dom.createTreeWalker(\n dom.body,\n dom.defaultView.NodeFilter.SHOW_TEXT\n );\n while (textNodes.nextNode()) {\n var n = textNodes.currentNode,\n text = n.nodeValue;\n if (text && acceptNode(n)) {\n text = quotes(text);\n text = punctuation(text);\n n.nodeValue = text;\n }\n }\n}\n\nfunction acceptNode(node) {\n var parent = node.parentElement;\n var isMath = (parent && parent.getAttribute && parent.getAttribute(\"class\")) ? parent.getAttribute(\"class\").includes(\"katex\") || parent.getAttribute(\"class\").includes(\"MathJax\") : false;\n return parent &&\n parent.nodeName !== \"SCRIPT\" &&\n parent.nodeName !== \"STYLE\" &&\n parent.nodeName !== \"CODE\" &&\n parent.nodeName !== \"PRE\" &&\n parent.nodeName !== \"SPAN\" &&\n parent.nodeName !== \"DT-HEADER\" &&\n parent.nodeName !== \"DT-BYLINE\" &&\n parent.nodeName !== \"DT-MATH\" &&\n parent.nodeName !== \"DT-CODE\" &&\n parent.nodeName !== \"DT-BIBLIOGRAPHY\" &&\n parent.nodeName !== \"DT-FOOTER\" &&\n parent.nodeType !== 8 && //comment nodes\n !isMath;\n}\n\n\n/*!\n * typeset - Typesetting for the web\n * @version v0.1.6\n * @link https://github.com/davidmerfield/Typeset.js\n * @author David Merfield\n */\n // which has a CC0 license\n // http://creativecommons.org/publicdomain/zero/1.0/\n\n\nfunction punctuation(text){\n\n // Dashes\n text = text.replace(/--/g, '\\u2014');\n text = text.replace(/ \\u2014 /g,\"\\u2009\\u2014\\u2009\"); //this has thin spaces\n\n // The following are temporary commented out because incompatibility\n // with katex\n\n // Elipses\n // text = text.replace(/\\.\\.\\./g,'…');\n\n // Nbsp for punc with spaces\n // var NBSP = \"\\u00a0\";\n // var NBSP_PUNCTUATION_START = /([«¿¡]) /g;\n // var NBSP_PUNCTUATION_END = / ([\\!\\?:;\\.,‽»])/g;\n\n // text = text.replace(NBSP_PUNCTUATION_START, '$1' + NBSP);\n // text = text.replace(NBSP_PUNCTUATION_END, NBSP + '$1');\n\n return text;\n}\n\nfunction quotes(text) {\n\n text = text\n .replace(/(\\W|^)\"([^\\s\\!\\?:;\\.,‽»])/g, '$1\\u201c$2') // beginning \"\n .replace(/(\\u201c[^\"]*)\"([^\"]*$|[^\\u201c\"]*\\u201c)/g, '$1\\u201d$2') // ending \"\n .replace(/([^0-9])\"/g,'$1\\u201d') // remaining \" at end of word\n .replace(/(\\W|^)'(\\S)/g, '$1\\u2018$2') // beginning '\n .replace(/([a-z])'([a-z])/ig, '$1\\u2019$2') // conjunction's possession\n .replace(/((\\u2018[^']*)|[a-z])'([^0-9]|$)/ig, '$1\\u2019$3') // ending '\n .replace(/(\\u2018)([0-9]{2}[^\\u2019]*)(\\u2018([^0-9]|$)|$|\\u2019[a-z])/ig, '\\u2019$2$3') // abbrev. years like '93\n .replace(/(\\B|^)\\u2018(?=([^\\u2019]*\\u2019\\b)*([^\\u2019\\u2018]*\\W[\\u2019\\u2018]\\b|[^\\u2019\\u2018]*$))/ig, '$1\\u2019') // backwards apostrophe\n .replace(/'''/g, '\\u2034') // triple prime\n .replace(/(\"|'')/g, '\\u2033') // double prime\n .replace(/'/g, '\\u2032');\n\n // Allow escaped quotes\n text = text.replace(/\\\\“/, '\\\"');\n text = text.replace(/\\\\”/, '\\\"');\n text = text.replace(/\\\\’/, '\\'');\n text = text.replace(/\\\\‘/, '\\'');\n\n return text;\n}\n\nfunction ligatures(text){\n\n // text = text.replace(/fi/g, 'fi');\n // text = text.replace(/fl/g, 'fl');\n\n return text;\n};\n","import code from './hover-box.txt';\n\nexport default function(dom) {\n let s = dom.createElement(\"script\");\n s.textContent = code;\n dom.querySelector(\"body\").appendChild(s);\n}\n","//import xml from \"xml\";\n\nexport default function(data) {\n\n\n var date = data.publishedDate;\n\n var batch_timestamp = Math.floor(Date.now() / 1000);\n var batch_id = data.authors.length ? data.authors[0].lastName.toLowerCase().slice(0,20) : \"Anonymous\";\n batch_id += \"_\" + date.getFullYear();\n batch_id += \"_\" + data.title.split(\" \")[0].toLowerCase().slice(0,20) + \"_\" + batch_timestamp;\n // generate XML\n var crf_data =\n {doi_batch : [\n\n { _attr: {\n version: \"4.3.7\",\n xmlns: \"http://www.crossref.org/schema/4.3.7\",\n \"xmlns:xsi\": \"http://www.w3.org/2001/XMLSchema-instance\",\n \"xsi:schemaLocation\": \"http://www.crossref.org/schema/4.3.7 http://www.crossref.org/schemas/crossref4.3.7.xsd\",\n }},\n\n { head: [\n {doi_batch_id: batch_id},\n {timestamp: batch_timestamp},\n {depositor: [\n {depositor_name: data.journal.publisherName},\n {email_address: data.journal.publisherEmail},\n ]},\n {registrant: data.journal.publisherName},\n ]},\n\n {body: [\n {journal: [\n\n {journal_metadata: [\n {full_title: data.journal.full_title || data.journal.title},\n {abbrev_title: data.journal.abbrev_title || data.journal.title || data.journal.full_title},\n {issn: data.journal.issn},\n {doi_data: [\n {doi: data.journal.doi},\n {resource: data.journal.url},\n ]},\n ]},\n\n {journal_issue: [\n {publication_date: [\n {month: date.getMonth()+1},\n {year: date.getFullYear()},\n ]},\n {journal_volume: [\n {volume: data.volume},\n ]},\n {issue: data.issue},\n ]},\n\n {journal_article: [\n {titles: [\n {title: data.title},\n ]},\n { contributors:\n data.authors.map((author, ind) => (\n {person_name: [\n { _attr: {\n contributor_role: \"author\",\n sequence: (ind == 0)? \"first\" : \"additional\"\n }},\n {given_name: author.firstName},\n {surname: author.lastName},\n {affiliation: author.affiliation}\n // TODO: ORCID?\n ]}\n ))\n },\n {publication_date: [\n {month: date.getMonth()+1},\n {day: date.getDate()},\n {year: date.getFullYear()}\n ]},\n { publisher_item: [\n {item_number: data.doi}\n ]},\n {doi_data: [\n {doi: data.doi},\n //{timestamp: \"\"},\n {resource: data.url},\n ]},\n {citation_list:\n data.citations.map(key =>\n citation_xml(key, data.bibliography[key]))\n }\n\n ]},\n\n ]},\n ]},\n ]};\n\n return xml(crf_data);\n}\n\nfunction citation_xml(key, ent){\n if (ent == undefined) return {};\n var info = [];\n info.push({_attr: {key: key}});\n if (\"title\" in ent)\n info.push({article_title: ent.title});\n if (\"author\" in ent)\n info.push({author: ent.author.split(\" and \")[0].split(\",\")[0].trim()});\n if (\"journal\" in ent)\n info.push({journal_title: ent.journal});\n if (\"booktitle\" in ent)\n info.push({volume_title: ent.booktitle});\n if (\"volume\" in ent)\n info.push({volume: ent.volume});\n if (\"issue\" in ent)\n info.push({issue: ent.issue});\n if (\"doi\" in ent)\n info.push({doi: ent.doi});\n return {citation: info}\n}\n\nfunction xml(obj) {\n //console.log(typeof(obj), obj)\n if (typeof obj === 'string') return obj;\n if (typeof obj === 'number') return \"\"+obj;\n let keys = Object.keys(obj);\n if (keys.length != 1) console.error(\"can't interpret \", obj, \"as xml\");\n let name = keys[0];\n var full_content = obj[name];\n var attr = {};\n if (Array.isArray(full_content)){\n var content = [];\n for (var i in full_content) {\n var obj = full_content[i];\n var obj_name = Object.keys(obj)[0];\n if (\"_attr\" == obj_name) {\n attr = obj[\"_attr\"];\n } else {\n //console.log(Object.keys(obj)[0])\n content.push(obj);\n }\n }\n } else {\n content = full_content;\n }\n if (content == undefined){\n content = \"undefined\"\n }\n\n let attr_string = \"\";\n for (var k in attr) {\n attr_string += ` ${k}=\\\"${attr[k]}\\\"`\n }\n\n //console.log(typeof content, Array.isArray(content), content instanceof String, content)\n if (Array.isArray(content)){\n content = content.map(xml);\n content = content.join(\"\\n\").split(\"\\n\");\n content = content.map(s => \" \" + s).join(\"\\n\")\n var result = `<${name}${attr_string}>\\n${content}\\n`;\n } else {\n content = xml(content);\n var result = `<${name}${attr_string}>${content}`;\n }\n return result;\n}\n","import logo from \"./distill-logo.svg\";\n\nconst html = `\n\n\n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-header\");\n if(el) {\n el.innerHTML = html;\n } else {\n let header = dom.createElement(\"dt-header\");\n header.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(header, b.firstChild);\n }\n}\n","import logo from \"./distill-logo.svg\";\n\nlet html = `\n\n\n
    \n
    \n \n ${logo}\n Distill\n \n is dedicated to clear explanations of machine learning\n
    \n
    \n About\n Submit\n Prize\n RSS\n Twitter\n
    \n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-footer\");\n if(el) {\n el.innerHTML = html;\n } else {\n let footer = dom.createElement(\"dt-footer\");\n footer.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.appendChild(footer);\n }\n}\n","import html from \"./components/html\";\nimport styles from \"./components/styles\";\nimport frontMatter from \"./components/front-matter\";\nimport bibliography from \"./components/bibliography\";\nimport expandData from \"./components/data\";\nimport meta from \"./components/meta\";\nimport banner from \"./components/banner\";\nimport byline from \"./components/byline\";\nimport appendix from \"./components/appendix\";\nimport appendixDistill from \"./components/appendix-distill\";\nimport citation from \"./components/citation\";\nimport footnote from \"./components/footnote\";\nimport markdown from \"./components/markdown\";\nimport code from \"./components/code\";\nimport typeset from \"./components/typeset\";\nimport hoverBox from \"./components/hover-box-include\";\nimport generateCrossref from \"./components/generate-crossref\";\nimport header from \"./components/header\";\nimport footer from \"./components/footer\";\n\nfunction renderImmediately(dom) {\n html(dom);\n styles(dom);\n}\n\nfunction renderOnLoad(dom, data) {\n frontMatter(dom, data);\n bibliography(dom, data);\n expandData(dom, data);\n meta(dom, data);\n byline(dom, data);\n appendix(dom, data);\n markdown(dom, data);\n code(dom, data);\n citation(dom, data);\n footnote(dom, data);\n typeset(dom, data);\n hoverBox(dom, data);\n}\n\n// If we are in a browser, render automatically...\nif(window && window.document) {\n let data = {};\n renderImmediately(window.document);\n window.document.addEventListener(\"DOMContentLoaded\", (event) => {\n renderOnLoad(window.document, data);\n // Add a banner if we're not on localhost.\n if (window.location.hostname !== \"localhost\" && window.location.origin !== \"file://\") {\n banner(window.document, data);\n }\n generateCrossref(data);\n // console.log(data);\n });\n}\n\n// If we are in node...\nfunction render(dom, data) {\n renderImmediately(dom);\n renderOnLoad(dom, data);\n // Remove script tag so it doesn't run again in the client\n let s = dom.querySelector('script[src*=\"distill.pub/template\"]');\n if (s) { s.parentElement.removeChild(s); };\n}\n\n// Distill specific rendering\nfunction distillify(dom, data) {\n header(dom, data);\n appendixDistill(dom, data);\n footer(dom, data);\n}\n\nexport {render as render};\nexport {distillify as distillify};\nexport {generateCrossref as generateCrossref};\n"],"names":["let","meta","YAMLException","common","require$$0","Mark","this","Type","require$$1","require$$2","type","arguments","Schema","require$$3","require$$4","require$$5","require","_hasOwnProperty","_toString","require$$6","require$$7","_require","DEFAULT_SAFE_SCHEMA","DEFAULT_FULL_SCHEMA","loadAll","load","safeLoadAll","safeLoad","State","dump","safeDump","require$$8","require$$9","ymlParse","interval","day","timeDay","timeYear","timeSunday","timeMonday","locale","escape","const","html","define","global","Prism","code","render"],"mappings":"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"} \ No newline at end of file From b3efa2526db17152c77f9b18d3f3d83d2d9deaf8 Mon Sep 17 00:00:00 2001 From: Shan Carter Date: Thu, 13 Apr 2017 16:49:00 -0700 Subject: [PATCH 26/42] Adding initial math support --- components/dt-math.js | 19 + components/layout.js | 0 components/styles-layout.css | 3 + dist/template.js | 9100 +++++++++++++++++++++++++++++++++- dist/template.js.map | 2 +- examples/article.html | 5 + index.js | 2 + package.json | 1 + yarn.lock | 10 + 9 files changed, 9131 insertions(+), 11 deletions(-) create mode 100644 components/dt-math.js create mode 100644 components/layout.js diff --git a/components/dt-math.js b/components/dt-math.js new file mode 100644 index 0000000..3c009d8 --- /dev/null +++ b/components/dt-math.js @@ -0,0 +1,19 @@ +import katex from "katex"; + +const html = ` + +`; + +export default function(dom, data) { + let equationElements = [].slice.call(dom.querySelectorAll("dt-math")); + equationElements.forEach(el => { + let content = el.textContent; + console.log(content) + let displayMode = el.hasAttribute("block") ? true : false; + el.innerHTML = html + katex.renderToString(content, {displayMode: displayMode}); + }); +} \ No newline at end of file diff --git a/components/layout.js b/components/layout.js new file mode 100644 index 0000000..e69de29 diff --git a/components/styles-layout.css b/components/styles-layout.css index bd63ce5..26cbaca 100644 --- a/components/styles-layout.css +++ b/components/styles-layout.css @@ -26,6 +26,7 @@ dt-article > h4, dt-article > figure, dt-article > ul, dt-article > dt-byline, +dt-article > dt-math, dt-article > dt-code, dt-article section > div, dt-article section > p, @@ -59,6 +60,7 @@ dt-article section > dt-code { dt-article > figure, dt-article > ul, dt-article > dt-byline, + dt-article > dt-math, dt-article > dt-code, dt-article section > div, dt-article section > p, @@ -85,6 +87,7 @@ dt-article section > dt-code { dt-article > figure, dt-article > ul, dt-article > dt-byline, + dt-article > dt-math, dt-article > dt-code, dt-article section > div, dt-article section > p, diff --git a/dist/template.js b/dist/template.js index b742221..e976d2d 100644 --- a/dist/template.js +++ b/dist/template.js @@ -1,7 +1,7 @@ (function (global, factory) { - typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : - typeof define === 'function' && define.amd ? define(['exports'], factory) : - (factory((global.dl = global.dl || {}))); + typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : + typeof define === 'function' && define.amd ? define(['exports'], factory) : + (factory((global.dl = global.dl || {}))); }(this, (function (exports) { 'use strict'; var html = function(dom) { @@ -26,7 +26,7 @@ var html = function(dom) { var base = "html {\n font: 400 16px/1.55em -apple-system, BlinkMacSystemFont, \"Roboto\", Helvetica, sans-serif;\n /*background-color: hsl(223, 9%, 25%);*/\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n text-size-adjust: 100%;\n}\nbody {\n margin: 0;\n /*background-color: hsl(223, 9%, 25%);*/\n}\n\na {\n color: #004276;\n}\n\nfigure {\n margin: 0;\n}\n\nh1 {\n font-family: Cochin, Georgia, serif;\n}\n\n/*\nhtml, body, div, span, applet, object, iframe,\nh1, h2, h3, h4, h5, h6, p, blockquote, pre,\na, abbr, acronym, address, big, cite, code,\ndel, dfn, em, img, ins, kbd, q, s, samp,\nsmall, strike, strong, sub, sup, tt, var,\nb, u, i, center,\ndl, dt, dd, ol, ul, li,\nfieldset, form, label, legend,\ntable, caption, tbody, tfoot, thead, tr, th, td,\narticle, aside, canvas, details, embed,\nfigure, figcaption, footer, header, hgroup,\nmenu, nav, output, ruby, section, summary,\ntime, mark, audio, video {\n\tmargin: 0;\n\tpadding: 0;\n\tborder: 0;\n\tfont-size: 100%;\n\tfont: inherit;\n\tvertical-align: baseline;\n}\narticle, aside, details, figcaption, figure,\nfooter, header, hgroup, menu, nav, section {\n\tdisplay: block;\n}\nbody {\n\tline-height: 1;\n}\nol, ul {\n\tlist-style: none;\n}\nblockquote, q {\n\tquotes: none;\n}\nblockquote:before, blockquote:after,\nq:before, q:after {\n\tcontent: '';\n\tcontent: none;\n}\ntable {\n\tborder-collapse: collapse;\n\tborder-spacing: 0;\n}*/\n"; -var layout = "/*\n Column: 60px\n Gutter: 24px\n\n Body: 648px\n - 8 columns\n - 7 gutters\n Middle: 816px\n Page: 984px\n - 12 columns\n - 11 gutters\n*/\n\n.l-body,\n.l-body-outset,\n.l-page,\n.l-page-outset,\n.l-middle,\n.l-middle-outset,\ndt-article > div,\ndt-article > p,\ndt-article > h1,\ndt-article > h2,\ndt-article > h3,\ndt-article > h4,\ndt-article > figure,\ndt-article > ul,\ndt-article > dt-byline,\ndt-article > dt-code,\ndt-article section > div,\ndt-article section > p,\ndt-article section > h1,\ndt-article section > h2,\ndt-article section > h3,\ndt-article section > h4,\ndt-article section > figure,\ndt-article section > ul,\ndt-article section > dt-byline,\ndt-article section > dt-code {\n width: auto;\n margin-left: 24px;\n margin-right: 24px;\n box-sizing: border-box;\n}\n\n@media(min-width: 768px) {\n .l-body,\n .l-body-outset,\n .l-page,\n .l-page-outset,\n .l-middle,\n .l-middle-outset,\n dt-article > div,\n dt-article > p,\n dt-article > h1,\n dt-article > h2,\n dt-article > h3,\n dt-article > h4,\n dt-article > figure,\n dt-article > ul,\n dt-article > dt-byline,\n dt-article > dt-code,\n dt-article section > div,\n dt-article section > p,\n dt-article section > h1,\n dt-article section > h2,\n dt-article section > h3,\n dt-article section > h4,\n dt-article section > figure,\n dt-article section > ul,\n dt-article section > dt-byline,\n dt-article section > dt-code {\n margin-left: 72px;\n margin-right: 72px;\n }\n}\n\n@media(min-width: 1080px) {\n .l-body,\n dt-article > div,\n dt-article > p,\n dt-article > h2,\n dt-article > h3,\n dt-article > h4,\n dt-article > figure,\n dt-article > ul,\n dt-article > dt-byline,\n dt-article > dt-code,\n dt-article section > div,\n dt-article section > p,\n dt-article section > h2,\n dt-article section > h3,\n dt-article section > h4,\n dt-article section > figure,\n dt-article section > ul,\n dt-article section > dt-byline,\n dt-article section > dt-code {\n margin-left: calc(50% - 984px / 2);\n width: 648px;\n }\n .l-body-outset,\n dt-article .l-body-outset {\n margin-left: calc(50% - 984px / 2 - 96px/2);\n width: calc(648px + 96px);\n }\n .l-middle,\n dt-article .l-middle {\n width: 816px;\n margin-left: calc(50% - 984px / 2);\n margin-right: auto;\n }\n .l-middle-outset,\n dt-article .l-middle-outset {\n width: calc(816px + 96px);\n margin-left: calc(50% - 984px / 2 - 48px);\n margin-right: auto;\n }\n dt-article > h1,\n dt-article section > h1,\n .l-page,\n dt-article .l-page,\n dt-article.centered .l-page {\n width: 984px;\n margin-left: auto;\n margin-right: auto;\n }\n .l-page-outset,\n dt-article .l-page-outset,\n dt-article.centered .l-page-outset {\n width: 1080px;\n margin-left: auto;\n margin-right: auto;\n }\n .l-screen,\n dt-article .l-screen,\n dt-article.centered .l-screen {\n margin-left: auto;\n margin-right: auto;\n width: auto;\n }\n .l-screen-inset,\n dt-article .l-screen-inset,\n dt-article.centered .l-screen-inset {\n margin-left: 24px;\n margin-right: 24px;\n width: auto;\n }\n .l-gutter,\n dt-article .l-gutter {\n clear: both;\n float: right;\n margin-top: 0;\n margin-left: 24px;\n margin-right: calc((100vw - 984px) / 2 + 168px);\n width: calc((984px - 648px) / 2 - 24px);\n }\n\n /* Side */\n .side.l-body,\n dt-article .side.l-body {\n clear: both;\n float: right;\n margin-top: 0;\n margin-left: 48px;\n margin-right: calc((100vw - 984px + 648px) / 2);\n width: calc(648px / 2 - 24px - 84px);\n }\n .side.l-body-outset,\n dt-article .side.l-body-outset {\n clear: both;\n float: right;\n margin-top: 0;\n margin-left: 48px;\n margin-right: calc((100vw - 984px + 648px - 48px) / 2);\n width: calc(648px / 2 - 48px + 24px);\n }\n .side.l-middle,\n dt-article .side.l-middle {\n clear: both;\n float: right;\n width: calc(456px - 84px);\n margin-left: 48px;\n margin-right: calc((100vw - 984px) / 2 + 168px);\n }\n .side.l-middle-outset,\n dt-article .side.l-middle-outset {\n clear: both;\n float: right;\n width: 456px;\n margin-left: 48px;\n margin-right: calc((100vw - 984px) / 2 + 168px);\n }\n .side.l-page,\n dt-article .side.l-page {\n clear: both;\n float: right;\n margin-left: 48px;\n width: calc(624px - 84px);\n margin-right: calc((100vw - 984px) / 2);\n }\n .side.l-page-outset,\n dt-article .side.l-page-outset {\n clear: both;\n float: right;\n width: 624px;\n margin-right: calc((100vw - 984px) / 2);\n }\n}\n\n/* Centered */\n\n@media(min-width: 1080px) {\n .centered .l-body,\n .centered.l-body,\n dt-article.centered > div,\n dt-article.centered > p,\n dt-article.centered > h2,\n dt-article.centered > h3,\n dt-article.centered > h4,\n dt-article.centered > figure,\n dt-article.centered > ul,\n dt-article.centered > dt-byline,\n dt-article.centered > dt-code,\n dt-article.centered section > div,\n dt-article.centered section > p,\n dt-article.centered section > h2,\n dt-article.centered section > h3,\n dt-article.centered section > h4,\n dt-article.centered section > figure,\n dt-article.centered section > ul,\n dt-article.centered section > dt-byline,\n dt-article.centered section > dt-code,\n dt-article section.centered > div,\n dt-article section.centered > p,\n dt-article section.centered > h2,\n dt-article section.centered > h3,\n dt-article section.centered > h4,\n dt-article section.centered > figure,\n dt-article section.centered > ul,\n dt-article section.centered > dt-byline,\n dt-article section.centered > dt-code {\n margin-left: auto;\n margin-right: auto;\n width: 648px;\n }\n .centered .l-body-outset,\n .centered.l-body-outset,\n dt-article.centered .l-body-outset {\n margin-left: auto;\n margin-right: auto;\n width: calc(648px + 96px);\n }\n dt-article.centered > h1,\n dt-article.centered section > h1,\n dt-article section.centered > h1,\n .centered .l-middle,\n .centered.l-middle,\n dt-article.centered .l-middle {\n width: 816px;\n margin-left: auto;\n margin-right: auto;\n }\n\n .centered .l-middle-outset,\n .centered.l-middle-outset,\n dt-article.centered .l-middle-outset {\n width: calc(816px + 96px);\n margin-left: auto;\n margin-right: auto;\n }\n\n /* page and screen are already centered */\n\n /* Side */\n\n .centered .side.l-body,\n .centered dt-article .side.l-body {\n clear: both;\n float: right;\n margin-top: 0;\n margin-left: 48px;\n margin-right: calc((100vw - 648px) / 2);\n width: calc(4 * 60px + 3 * 24px);\n }\n .centered .side.l-body-outset,\n .centered dt-article .side.l-body-outset {\n clear: both;\n float: right;\n margin-top: 0;\n margin-left: 48px;\n margin-right: calc((100vw - 648px) / 2);\n width: calc(4 * 60px + 3 * 24px);\n }\n .centered .side.l-middle,\n .centered dt-article .side.l-middle {\n clear: both;\n float: right;\n width: 396px;\n margin-left: 48px;\n margin-right: calc((100vw - 984px) / 2 + 168px / 2);\n }\n .centered .side.l-middle-outset,\n .centered dt-article .side.l-middle-outset {\n clear: both;\n float: right;\n width: 456px;\n margin-left: 48px;\n margin-right: calc((100vw - 984px) / 2 + 168px);\n }\n .centered .side.l-page,\n .centered dt-article .side.l-page {\n clear: both;\n float: right;\n width: 480px;\n margin-right: calc((100vw - 984px) / 2);\n }\n .centered .side.l-page-outset,\n .centered dt-article .side.l-page-outset {\n clear: both;\n float: right;\n width: 480px;\n margin-right: calc((100vw - 984px) / 2);\n }\n .centered .l-gutter,\n .centered.l-gutter,\n dt-article.centered .l-gutter {\n clear: both;\n float: right;\n margin-top: 0;\n margin-left: 24px;\n margin-right: calc((100vw - 984px) / 2);\n width: calc((984px - 648px) / 2 - 24px);\n }\n\n}\n\n/* Rows and Columns */\n\n.row {\n display: flex;\n}\n.column {\n flex: 1;\n box-sizing: border-box;\n margin-right: 24px;\n margin-left: 24px;\n}\n.row > .column:first-of-type {\n margin-left: 0;\n}\n.row > .column:last-of-type {\n margin-right: 0;\n}\n"; +var layout = "/*\n Column: 60px\n Gutter: 24px\n\n Body: 648px\n - 8 columns\n - 7 gutters\n Middle: 816px\n Page: 984px\n - 12 columns\n - 11 gutters\n*/\n\n.l-body,\n.l-body-outset,\n.l-page,\n.l-page-outset,\n.l-middle,\n.l-middle-outset,\ndt-article > div,\ndt-article > p,\ndt-article > h1,\ndt-article > h2,\ndt-article > h3,\ndt-article > h4,\ndt-article > figure,\ndt-article > ul,\ndt-article > dt-byline,\ndt-article > dt-math,\ndt-article > dt-code,\ndt-article section > div,\ndt-article section > p,\ndt-article section > h1,\ndt-article section > h2,\ndt-article section > h3,\ndt-article section > h4,\ndt-article section > figure,\ndt-article section > ul,\ndt-article section > dt-byline,\ndt-article section > dt-code {\n width: auto;\n margin-left: 24px;\n margin-right: 24px;\n box-sizing: border-box;\n}\n\n@media(min-width: 768px) {\n .l-body,\n .l-body-outset,\n .l-page,\n .l-page-outset,\n .l-middle,\n .l-middle-outset,\n dt-article > div,\n dt-article > p,\n dt-article > h1,\n dt-article > h2,\n dt-article > h3,\n dt-article > h4,\n dt-article > figure,\n dt-article > ul,\n dt-article > dt-byline,\n dt-article > dt-math,\n dt-article > dt-code,\n dt-article section > div,\n dt-article section > p,\n dt-article section > h1,\n dt-article section > h2,\n dt-article section > h3,\n dt-article section > h4,\n dt-article section > figure,\n dt-article section > ul,\n dt-article section > dt-byline,\n dt-article section > dt-code {\n margin-left: 72px;\n margin-right: 72px;\n }\n}\n\n@media(min-width: 1080px) {\n .l-body,\n dt-article > div,\n dt-article > p,\n dt-article > h2,\n dt-article > h3,\n dt-article > h4,\n dt-article > figure,\n dt-article > ul,\n dt-article > dt-byline,\n dt-article > dt-math,\n dt-article > dt-code,\n dt-article section > div,\n dt-article section > p,\n dt-article section > h2,\n dt-article section > h3,\n dt-article section > h4,\n dt-article section > figure,\n dt-article section > ul,\n dt-article section > dt-byline,\n dt-article section > dt-code {\n margin-left: calc(50% - 984px / 2);\n width: 648px;\n }\n .l-body-outset,\n dt-article .l-body-outset {\n margin-left: calc(50% - 984px / 2 - 96px/2);\n width: calc(648px + 96px);\n }\n .l-middle,\n dt-article .l-middle {\n width: 816px;\n margin-left: calc(50% - 984px / 2);\n margin-right: auto;\n }\n .l-middle-outset,\n dt-article .l-middle-outset {\n width: calc(816px + 96px);\n margin-left: calc(50% - 984px / 2 - 48px);\n margin-right: auto;\n }\n dt-article > h1,\n dt-article section > h1,\n .l-page,\n dt-article .l-page,\n dt-article.centered .l-page {\n width: 984px;\n margin-left: auto;\n margin-right: auto;\n }\n .l-page-outset,\n dt-article .l-page-outset,\n dt-article.centered .l-page-outset {\n width: 1080px;\n margin-left: auto;\n margin-right: auto;\n }\n .l-screen,\n dt-article .l-screen,\n dt-article.centered .l-screen {\n margin-left: auto;\n margin-right: auto;\n width: auto;\n }\n .l-screen-inset,\n dt-article .l-screen-inset,\n dt-article.centered .l-screen-inset {\n margin-left: 24px;\n margin-right: 24px;\n width: auto;\n }\n .l-gutter,\n dt-article .l-gutter {\n clear: both;\n float: right;\n margin-top: 0;\n margin-left: 24px;\n margin-right: calc((100vw - 984px) / 2 + 168px);\n width: calc((984px - 648px) / 2 - 24px);\n }\n\n /* Side */\n .side.l-body,\n dt-article .side.l-body {\n clear: both;\n float: right;\n margin-top: 0;\n margin-left: 48px;\n margin-right: calc((100vw - 984px + 648px) / 2);\n width: calc(648px / 2 - 24px - 84px);\n }\n .side.l-body-outset,\n dt-article .side.l-body-outset {\n clear: both;\n float: right;\n margin-top: 0;\n margin-left: 48px;\n margin-right: calc((100vw - 984px + 648px - 48px) / 2);\n width: calc(648px / 2 - 48px + 24px);\n }\n .side.l-middle,\n dt-article .side.l-middle {\n clear: both;\n float: right;\n width: calc(456px - 84px);\n margin-left: 48px;\n margin-right: calc((100vw - 984px) / 2 + 168px);\n }\n .side.l-middle-outset,\n dt-article .side.l-middle-outset {\n clear: both;\n float: right;\n width: 456px;\n margin-left: 48px;\n margin-right: calc((100vw - 984px) / 2 + 168px);\n }\n .side.l-page,\n dt-article .side.l-page {\n clear: both;\n float: right;\n margin-left: 48px;\n width: calc(624px - 84px);\n margin-right: calc((100vw - 984px) / 2);\n }\n .side.l-page-outset,\n dt-article .side.l-page-outset {\n clear: both;\n float: right;\n width: 624px;\n margin-right: calc((100vw - 984px) / 2);\n }\n}\n\n/* Centered */\n\n@media(min-width: 1080px) {\n .centered .l-body,\n .centered.l-body,\n dt-article.centered > div,\n dt-article.centered > p,\n dt-article.centered > h2,\n dt-article.centered > h3,\n dt-article.centered > h4,\n dt-article.centered > figure,\n dt-article.centered > ul,\n dt-article.centered > dt-byline,\n dt-article.centered > dt-code,\n dt-article.centered section > div,\n dt-article.centered section > p,\n dt-article.centered section > h2,\n dt-article.centered section > h3,\n dt-article.centered section > h4,\n dt-article.centered section > figure,\n dt-article.centered section > ul,\n dt-article.centered section > dt-byline,\n dt-article.centered section > dt-code,\n dt-article section.centered > div,\n dt-article section.centered > p,\n dt-article section.centered > h2,\n dt-article section.centered > h3,\n dt-article section.centered > h4,\n dt-article section.centered > figure,\n dt-article section.centered > ul,\n dt-article section.centered > dt-byline,\n dt-article section.centered > dt-code {\n margin-left: auto;\n margin-right: auto;\n width: 648px;\n }\n .centered .l-body-outset,\n .centered.l-body-outset,\n dt-article.centered .l-body-outset {\n margin-left: auto;\n margin-right: auto;\n width: calc(648px + 96px);\n }\n dt-article.centered > h1,\n dt-article.centered section > h1,\n dt-article section.centered > h1,\n .centered .l-middle,\n .centered.l-middle,\n dt-article.centered .l-middle {\n width: 816px;\n margin-left: auto;\n margin-right: auto;\n }\n\n .centered .l-middle-outset,\n .centered.l-middle-outset,\n dt-article.centered .l-middle-outset {\n width: calc(816px + 96px);\n margin-left: auto;\n margin-right: auto;\n }\n\n /* page and screen are already centered */\n\n /* Side */\n\n .centered .side.l-body,\n .centered dt-article .side.l-body {\n clear: both;\n float: right;\n margin-top: 0;\n margin-left: 48px;\n margin-right: calc((100vw - 648px) / 2);\n width: calc(4 * 60px + 3 * 24px);\n }\n .centered .side.l-body-outset,\n .centered dt-article .side.l-body-outset {\n clear: both;\n float: right;\n margin-top: 0;\n margin-left: 48px;\n margin-right: calc((100vw - 648px) / 2);\n width: calc(4 * 60px + 3 * 24px);\n }\n .centered .side.l-middle,\n .centered dt-article .side.l-middle {\n clear: both;\n float: right;\n width: 396px;\n margin-left: 48px;\n margin-right: calc((100vw - 984px) / 2 + 168px / 2);\n }\n .centered .side.l-middle-outset,\n .centered dt-article .side.l-middle-outset {\n clear: both;\n float: right;\n width: 456px;\n margin-left: 48px;\n margin-right: calc((100vw - 984px) / 2 + 168px);\n }\n .centered .side.l-page,\n .centered dt-article .side.l-page {\n clear: both;\n float: right;\n width: 480px;\n margin-right: calc((100vw - 984px) / 2);\n }\n .centered .side.l-page-outset,\n .centered dt-article .side.l-page-outset {\n clear: both;\n float: right;\n width: 480px;\n margin-right: calc((100vw - 984px) / 2);\n }\n .centered .l-gutter,\n .centered.l-gutter,\n dt-article.centered .l-gutter {\n clear: both;\n float: right;\n margin-top: 0;\n margin-left: 24px;\n margin-right: calc((100vw - 984px) / 2);\n width: calc((984px - 648px) / 2 - 24px);\n }\n\n}\n\n/* Rows and Columns */\n\n.row {\n display: flex;\n}\n.column {\n flex: 1;\n box-sizing: border-box;\n margin-right: 24px;\n margin-left: 24px;\n}\n.row > .column:first-of-type {\n margin-left: 0;\n}\n.row > .column:last-of-type {\n margin-right: 0;\n}\n"; var article = "dt-article {\n display: block;\n color: rgba(0, 0, 0, 0.8);\n font: 17px/1.55em -apple-system, BlinkMacSystemFont, \"Roboto\", sans-serif;\n padding-bottom: 72px;\n overflow: hidden;\n background: white;\n}\n\n@media(min-width: 1024px) {\n dt-article {\n font-size: 20px;\n }\n}\n\n/* H1 */\n\ndt-article h1 {\n margin-top: 18px;\n font-weight: 400;\n font-size: 40px;\n line-height: 1em;\n font-family: HoeflerText-Regular, Cochin, Georgia, serif;\n}\n@media(min-width: 768px) {\n dt-article h1 {\n font-size: 46px;\n margin-top: 48px;\n margin-bottom: 12px;\n }\n}\n\n@media(min-width: 1080px) {\n .centered h1 {\n text-align: center;\n }\n\n dt-article h1 {\n font-size: 50px;\n letter-spacing: -0.02em;\n }\n\n dt-article > h1:first-of-type,\n dt-article section > h1:first-of-type {\n margin-top: 80px;\n }\n}\n\n\n@media(min-width: 1200px) {\n dt-article h1 {\n font-size: 56px;\n }\n\n dt-article > h1:first-of-type {\n margin-top: 100px;\n }\n}\n\n/* H2 */\n\ndt-article h2 {\n font-family: HoeflerText-Regular, Cochin, Georgia, serif;\n font-weight: 400;\n font-size: 26px;\n line-height: 1.25em;\n margin-top: 36px;\n margin-bottom: 24px;\n}\n\n@media(min-width: 1024px) {\n dt-article h2 {\n margin-top: 48px;\n font-size: 30px;\n }\n}\n\ndt-article h1 + h2 {\n font-weight: 300;\n font-size: 20px;\n line-height: 1.4em;\n margin-top: 8px;\n font-style: normal;\n}\n\n\n@media(min-width: 1080px) {\n .centered h1 + h2 {\n text-align: center;\n }\n dt-article h1 + h2 {\n margin-top: 12px;\n font-size: 24px;\n }\n}\n\n/* H3 */\n\ndt-article h3 {\n font-family: HoeflerText-Regular, Georgia, serif;\n font-weight: 400;\n font-size: 20px;\n line-height: 1.4em;\n margin-top: 36px;\n margin-bottom: 18px;\n font-style: italic;\n}\n\ndt-article h1 + h3 {\n margin-top: 48px;\n}\n\n@media(min-width: 1024px) {\n dt-article h3 {\n font-size: 26px;\n }\n}\n\n/* H4 */\n\ndt-article h4 {\n font-weight: 600;\n text-transform: uppercase;\n font-size: 14px;\n line-height: 1.4em;\n}\n\ndt-article a {\n color: inherit;\n}\n\ndt-article p,\ndt-article ul,\ndt-article ol {\n margin-bottom: 24px;\n font-family: Georgia, serif;\n}\n\ndt-article p b,\ndt-article ul b,\ndt-article ol b {\n -webkit-font-smoothing: antialiased;\n}\n\ndt-article a {\n border-bottom: 1px solid rgba(0, 0, 0, 0.4);\n text-decoration: none;\n}\n\ndt-article a:hover {\n border-bottom: 1px solid rgba(0, 0, 0, 0.8);\n}\n\ndt-article .link {\n text-decoration: underline;\n cursor: pointer;\n}\n\ndt-article ul,\ndt-article ol {\n padding-left: 24px;\n}\n\ndt-article li {\n margin-bottom: 24px;\n margin-left: 0;\n padding-left: 0;\n}\n\ndt-article pre {\n font-size: 14px;\n margin-bottom: 20px;\n}\n\n\ndt-article hr {\n border: none;\n border-bottom: 1px solid rgba(0, 0, 0, 0.2);\n margin-top: 60px;\n margin-bottom: 60px;\n}\n\ndt-article section {\n margin-top: 60px;\n margin-bottom: 60px;\n}\n\n\n/* Figure */\n\ndt-article figure {\n position: relative;\n margin-top: 30px;\n margin-bottom: 30px;\n}\n\n@media(min-width: 1024px) {\n dt-article figure {\n margin-top: 48px;\n margin-bottom: 48px;\n }\n}\n\ndt-article figure img {\n width: 100%;\n}\n\ndt-article figure svg text,\ndt-article figure svg tspan {\n}\n\ndt-article figure figcaption {\n color: rgba(0, 0, 0, 0.6);\n font-size: 12px;\n line-height: 1.5em;\n}\n@media(min-width: 1024px) {\n dt-article figure figcaption {\n font-size: 13px;\n }\n}\n\ndt-article figure.external img {\n background: white;\n border: 1px solid rgba(0, 0, 0, 0.1);\n box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1);\n padding: 18px;\n box-sizing: border-box;\n}\n\ndt-article figure figcaption a {\n color: rgba(0, 0, 0, 0.6);\n}\n\n/*dt-article figure figcaption::before {\n position: relative;\n display: block;\n top: -20px;\n content: \"\";\n width: 25px;\n border-top: 1px solid rgba(0, 0, 0, 0.3);\n}*/\n\ndt-article span.equation-mimic {\n font-family: georgia;\n font-size: 115%;\n font-style: italic;\n}\n\ndt-article figure figcaption b {\n font-weight: 600;\n color: rgba(0, 0, 0, 1.0);\n}\n\ndt-article > dt-code,\ndt-article section > dt-code {\n display: block;\n}\n\ndt-article .citation {\n color: #668;\n cursor: pointer;\n}\n\ndt-include {\n width: auto;\n display: block;\n}\n"; @@ -6384,6 +6384,9085 @@ var footnote = function(dom, data) { }; +/** + * This is the ParseError class, which is the main error thrown by KaTeX + * functions when something has gone wrong. This is used to distinguish internal + * errors from errors in the expression that the user provided. + * + * If possible, a caller should provide a Token or ParseNode with information + * about where in the source string the problem occurred. + * + * @param {string} message The error message + * @param {(Token|ParseNode)=} token An object providing position information + */ +function ParseError$1(message, token) { + var error = "KaTeX parse error: " + message; + var start; + var end; + + if (token && token.lexer && token.start <= token.end) { + // If we have the input and a position, make the error a bit fancier + + // Get the input + var input = token.lexer.input; + + // Prepend some information + start = token.start; + end = token.end; + if (start === input.length) { + error += " at end of input: "; + } else { + error += " at position " + (start + 1) + ": "; + } + + // Underline token in question using combining underscores + var underlined = input.slice(start, end).replace(/[^]/g, "$&\u0332"); + + // Extract some context from the input and add it to the error + var left; + if (start > 15) { + left = "…" + input.slice(start - 15, start); + } else { + left = input.slice(0, start); + } + var right; + if (end + 15 < input.length) { + right = input.slice(end, end + 15) + "…"; + } else { + right = input.slice(end); + } + error += left + underlined + right; + } + + // Some hackery to make ParseError a prototype of Error + // See http://stackoverflow.com/a/8460753 + var self = new Error(error); + self.name = "ParseError"; + self.__proto__ = ParseError$1.prototype; + + self.position = start; + return self; +} + +// More hackery +ParseError$1.prototype.__proto__ = Error.prototype; + +var ParseError_1 = ParseError$1; + +/** + * This is a module for storing settings passed into KaTeX. It correctly handles + * default settings. + */ + +/** + * Helper function for getting a default value if the value is undefined + */ +function get(option, defaultValue) { + return option === undefined ? defaultValue : option; +} + +/** + * The main Settings object + * + * The current options stored are: + * - displayMode: Whether the expression should be typeset by default in + * textstyle or displaystyle (default false) + */ +function Settings$1(options) { + // allow null options + options = options || {}; + this.displayMode = get(options.displayMode, false); + this.throwOnError = get(options.throwOnError, true); + this.errorColor = get(options.errorColor, "#cc0000"); + this.macros = options.macros || {}; +} + +var Settings_1 = Settings$1; + +var hangulRegex = /[\uAC00-\uD7AF]/; + +// This regex combines +// - Hiragana: [\u3040-\u309F] +// - Katakana: [\u30A0-\u30FF] +// - CJK ideograms: [\u4E00-\u9FAF] +// - Hangul syllables: [\uAC00-\uD7AF] +// Notably missing are halfwidth Katakana and Romanji glyphs. +var cjkRegex$1 = + /[\u3040-\u309F]|[\u30A0-\u30FF]|[\u4E00-\u9FAF]|[\uAC00-\uD7AF]/; + +var unicodeRegexes = { + cjkRegex: cjkRegex$1, + hangulRegex: hangulRegex +}; + +var fontMetricsData = { + "AMS-Regular": { + "65": [0, 0.68889, 0, 0], + "66": [0, 0.68889, 0, 0], + "67": [0, 0.68889, 0, 0], + "68": [0, 0.68889, 0, 0], + "69": [0, 0.68889, 0, 0], + "70": [0, 0.68889, 0, 0], + "71": [0, 0.68889, 0, 0], + "72": [0, 0.68889, 0, 0], + "73": [0, 0.68889, 0, 0], + "74": [0.16667, 0.68889, 0, 0], + "75": [0, 0.68889, 0, 0], + "76": [0, 0.68889, 0, 0], + "77": [0, 0.68889, 0, 0], + "78": [0, 0.68889, 0, 0], + "79": [0.16667, 0.68889, 0, 0], + "80": [0, 0.68889, 0, 0], + "81": [0.16667, 0.68889, 0, 0], + "82": [0, 0.68889, 0, 0], + "83": [0, 0.68889, 0, 0], + "84": [0, 0.68889, 0, 0], + "85": [0, 0.68889, 0, 0], + "86": [0, 0.68889, 0, 0], + "87": [0, 0.68889, 0, 0], + "88": [0, 0.68889, 0, 0], + "89": [0, 0.68889, 0, 0], + "90": [0, 0.68889, 0, 0], + "107": [0, 0.68889, 0, 0], + "165": [0, 0.675, 0.025, 0], + "174": [0.15559, 0.69224, 0, 0], + "240": [0, 0.68889, 0, 0], + "295": [0, 0.68889, 0, 0], + "710": [0, 0.825, 0, 0], + "732": [0, 0.9, 0, 0], + "770": [0, 0.825, 0, 0], + "771": [0, 0.9, 0, 0], + "989": [0.08167, 0.58167, 0, 0], + "1008": [0, 0.43056, 0.04028, 0], + "8245": [0, 0.54986, 0, 0], + "8463": [0, 0.68889, 0, 0], + "8487": [0, 0.68889, 0, 0], + "8498": [0, 0.68889, 0, 0], + "8502": [0, 0.68889, 0, 0], + "8503": [0, 0.68889, 0, 0], + "8504": [0, 0.68889, 0, 0], + "8513": [0, 0.68889, 0, 0], + "8592": [-0.03598, 0.46402, 0, 0], + "8594": [-0.03598, 0.46402, 0, 0], + "8602": [-0.13313, 0.36687, 0, 0], + "8603": [-0.13313, 0.36687, 0, 0], + "8606": [0.01354, 0.52239, 0, 0], + "8608": [0.01354, 0.52239, 0, 0], + "8610": [0.01354, 0.52239, 0, 0], + "8611": [0.01354, 0.52239, 0, 0], + "8619": [0, 0.54986, 0, 0], + "8620": [0, 0.54986, 0, 0], + "8621": [-0.13313, 0.37788, 0, 0], + "8622": [-0.13313, 0.36687, 0, 0], + "8624": [0, 0.69224, 0, 0], + "8625": [0, 0.69224, 0, 0], + "8630": [0, 0.43056, 0, 0], + "8631": [0, 0.43056, 0, 0], + "8634": [0.08198, 0.58198, 0, 0], + "8635": [0.08198, 0.58198, 0, 0], + "8638": [0.19444, 0.69224, 0, 0], + "8639": [0.19444, 0.69224, 0, 0], + "8642": [0.19444, 0.69224, 0, 0], + "8643": [0.19444, 0.69224, 0, 0], + "8644": [0.1808, 0.675, 0, 0], + "8646": [0.1808, 0.675, 0, 0], + "8647": [0.1808, 0.675, 0, 0], + "8648": [0.19444, 0.69224, 0, 0], + "8649": [0.1808, 0.675, 0, 0], + "8650": [0.19444, 0.69224, 0, 0], + "8651": [0.01354, 0.52239, 0, 0], + "8652": [0.01354, 0.52239, 0, 0], + "8653": [-0.13313, 0.36687, 0, 0], + "8654": [-0.13313, 0.36687, 0, 0], + "8655": [-0.13313, 0.36687, 0, 0], + "8666": [0.13667, 0.63667, 0, 0], + "8667": [0.13667, 0.63667, 0, 0], + "8669": [-0.13313, 0.37788, 0, 0], + "8672": [-0.064, 0.437, 0, 0], + "8674": [-0.064, 0.437, 0, 0], + "8705": [0, 0.825, 0, 0], + "8708": [0, 0.68889, 0, 0], + "8709": [0.08167, 0.58167, 0, 0], + "8717": [0, 0.43056, 0, 0], + "8722": [-0.03598, 0.46402, 0, 0], + "8724": [0.08198, 0.69224, 0, 0], + "8726": [0.08167, 0.58167, 0, 0], + "8733": [0, 0.69224, 0, 0], + "8736": [0, 0.69224, 0, 0], + "8737": [0, 0.69224, 0, 0], + "8738": [0.03517, 0.52239, 0, 0], + "8739": [0.08167, 0.58167, 0, 0], + "8740": [0.25142, 0.74111, 0, 0], + "8741": [0.08167, 0.58167, 0, 0], + "8742": [0.25142, 0.74111, 0, 0], + "8756": [0, 0.69224, 0, 0], + "8757": [0, 0.69224, 0, 0], + "8764": [-0.13313, 0.36687, 0, 0], + "8765": [-0.13313, 0.37788, 0, 0], + "8769": [-0.13313, 0.36687, 0, 0], + "8770": [-0.03625, 0.46375, 0, 0], + "8774": [0.30274, 0.79383, 0, 0], + "8776": [-0.01688, 0.48312, 0, 0], + "8778": [0.08167, 0.58167, 0, 0], + "8782": [0.06062, 0.54986, 0, 0], + "8783": [0.06062, 0.54986, 0, 0], + "8785": [0.08198, 0.58198, 0, 0], + "8786": [0.08198, 0.58198, 0, 0], + "8787": [0.08198, 0.58198, 0, 0], + "8790": [0, 0.69224, 0, 0], + "8791": [0.22958, 0.72958, 0, 0], + "8796": [0.08198, 0.91667, 0, 0], + "8806": [0.25583, 0.75583, 0, 0], + "8807": [0.25583, 0.75583, 0, 0], + "8808": [0.25142, 0.75726, 0, 0], + "8809": [0.25142, 0.75726, 0, 0], + "8812": [0.25583, 0.75583, 0, 0], + "8814": [0.20576, 0.70576, 0, 0], + "8815": [0.20576, 0.70576, 0, 0], + "8816": [0.30274, 0.79383, 0, 0], + "8817": [0.30274, 0.79383, 0, 0], + "8818": [0.22958, 0.72958, 0, 0], + "8819": [0.22958, 0.72958, 0, 0], + "8822": [0.1808, 0.675, 0, 0], + "8823": [0.1808, 0.675, 0, 0], + "8828": [0.13667, 0.63667, 0, 0], + "8829": [0.13667, 0.63667, 0, 0], + "8830": [0.22958, 0.72958, 0, 0], + "8831": [0.22958, 0.72958, 0, 0], + "8832": [0.20576, 0.70576, 0, 0], + "8833": [0.20576, 0.70576, 0, 0], + "8840": [0.30274, 0.79383, 0, 0], + "8841": [0.30274, 0.79383, 0, 0], + "8842": [0.13597, 0.63597, 0, 0], + "8843": [0.13597, 0.63597, 0, 0], + "8847": [0.03517, 0.54986, 0, 0], + "8848": [0.03517, 0.54986, 0, 0], + "8858": [0.08198, 0.58198, 0, 0], + "8859": [0.08198, 0.58198, 0, 0], + "8861": [0.08198, 0.58198, 0, 0], + "8862": [0, 0.675, 0, 0], + "8863": [0, 0.675, 0, 0], + "8864": [0, 0.675, 0, 0], + "8865": [0, 0.675, 0, 0], + "8872": [0, 0.69224, 0, 0], + "8873": [0, 0.69224, 0, 0], + "8874": [0, 0.69224, 0, 0], + "8876": [0, 0.68889, 0, 0], + "8877": [0, 0.68889, 0, 0], + "8878": [0, 0.68889, 0, 0], + "8879": [0, 0.68889, 0, 0], + "8882": [0.03517, 0.54986, 0, 0], + "8883": [0.03517, 0.54986, 0, 0], + "8884": [0.13667, 0.63667, 0, 0], + "8885": [0.13667, 0.63667, 0, 0], + "8888": [0, 0.54986, 0, 0], + "8890": [0.19444, 0.43056, 0, 0], + "8891": [0.19444, 0.69224, 0, 0], + "8892": [0.19444, 0.69224, 0, 0], + "8901": [0, 0.54986, 0, 0], + "8903": [0.08167, 0.58167, 0, 0], + "8905": [0.08167, 0.58167, 0, 0], + "8906": [0.08167, 0.58167, 0, 0], + "8907": [0, 0.69224, 0, 0], + "8908": [0, 0.69224, 0, 0], + "8909": [-0.03598, 0.46402, 0, 0], + "8910": [0, 0.54986, 0, 0], + "8911": [0, 0.54986, 0, 0], + "8912": [0.03517, 0.54986, 0, 0], + "8913": [0.03517, 0.54986, 0, 0], + "8914": [0, 0.54986, 0, 0], + "8915": [0, 0.54986, 0, 0], + "8916": [0, 0.69224, 0, 0], + "8918": [0.0391, 0.5391, 0, 0], + "8919": [0.0391, 0.5391, 0, 0], + "8920": [0.03517, 0.54986, 0, 0], + "8921": [0.03517, 0.54986, 0, 0], + "8922": [0.38569, 0.88569, 0, 0], + "8923": [0.38569, 0.88569, 0, 0], + "8926": [0.13667, 0.63667, 0, 0], + "8927": [0.13667, 0.63667, 0, 0], + "8928": [0.30274, 0.79383, 0, 0], + "8929": [0.30274, 0.79383, 0, 0], + "8934": [0.23222, 0.74111, 0, 0], + "8935": [0.23222, 0.74111, 0, 0], + "8936": [0.23222, 0.74111, 0, 0], + "8937": [0.23222, 0.74111, 0, 0], + "8938": [0.20576, 0.70576, 0, 0], + "8939": [0.20576, 0.70576, 0, 0], + "8940": [0.30274, 0.79383, 0, 0], + "8941": [0.30274, 0.79383, 0, 0], + "8994": [0.19444, 0.69224, 0, 0], + "8995": [0.19444, 0.69224, 0, 0], + "9416": [0.15559, 0.69224, 0, 0], + "9484": [0, 0.69224, 0, 0], + "9488": [0, 0.69224, 0, 0], + "9492": [0, 0.37788, 0, 0], + "9496": [0, 0.37788, 0, 0], + "9585": [0.19444, 0.68889, 0, 0], + "9586": [0.19444, 0.74111, 0, 0], + "9632": [0, 0.675, 0, 0], + "9633": [0, 0.675, 0, 0], + "9650": [0, 0.54986, 0, 0], + "9651": [0, 0.54986, 0, 0], + "9654": [0.03517, 0.54986, 0, 0], + "9660": [0, 0.54986, 0, 0], + "9661": [0, 0.54986, 0, 0], + "9664": [0.03517, 0.54986, 0, 0], + "9674": [0.11111, 0.69224, 0, 0], + "9733": [0.19444, 0.69224, 0, 0], + "10003": [0, 0.69224, 0, 0], + "10016": [0, 0.69224, 0, 0], + "10731": [0.11111, 0.69224, 0, 0], + "10846": [0.19444, 0.75583, 0, 0], + "10877": [0.13667, 0.63667, 0, 0], + "10878": [0.13667, 0.63667, 0, 0], + "10885": [0.25583, 0.75583, 0, 0], + "10886": [0.25583, 0.75583, 0, 0], + "10887": [0.13597, 0.63597, 0, 0], + "10888": [0.13597, 0.63597, 0, 0], + "10889": [0.26167, 0.75726, 0, 0], + "10890": [0.26167, 0.75726, 0, 0], + "10891": [0.48256, 0.98256, 0, 0], + "10892": [0.48256, 0.98256, 0, 0], + "10901": [0.13667, 0.63667, 0, 0], + "10902": [0.13667, 0.63667, 0, 0], + "10933": [0.25142, 0.75726, 0, 0], + "10934": [0.25142, 0.75726, 0, 0], + "10935": [0.26167, 0.75726, 0, 0], + "10936": [0.26167, 0.75726, 0, 0], + "10937": [0.26167, 0.75726, 0, 0], + "10938": [0.26167, 0.75726, 0, 0], + "10949": [0.25583, 0.75583, 0, 0], + "10950": [0.25583, 0.75583, 0, 0], + "10955": [0.28481, 0.79383, 0, 0], + "10956": [0.28481, 0.79383, 0, 0], + "57350": [0.08167, 0.58167, 0, 0], + "57351": [0.08167, 0.58167, 0, 0], + "57352": [0.08167, 0.58167, 0, 0], + "57353": [0, 0.43056, 0.04028, 0], + "57356": [0.25142, 0.75726, 0, 0], + "57357": [0.25142, 0.75726, 0, 0], + "57358": [0.41951, 0.91951, 0, 0], + "57359": [0.30274, 0.79383, 0, 0], + "57360": [0.30274, 0.79383, 0, 0], + "57361": [0.41951, 0.91951, 0, 0], + "57366": [0.25142, 0.75726, 0, 0], + "57367": [0.25142, 0.75726, 0, 0], + "57368": [0.25142, 0.75726, 0, 0], + "57369": [0.25142, 0.75726, 0, 0], + "57370": [0.13597, 0.63597, 0, 0], + "57371": [0.13597, 0.63597, 0, 0] + }, + "Caligraphic-Regular": { + "48": [0, 0.43056, 0, 0], + "49": [0, 0.43056, 0, 0], + "50": [0, 0.43056, 0, 0], + "51": [0.19444, 0.43056, 0, 0], + "52": [0.19444, 0.43056, 0, 0], + "53": [0.19444, 0.43056, 0, 0], + "54": [0, 0.64444, 0, 0], + "55": [0.19444, 0.43056, 0, 0], + "56": [0, 0.64444, 0, 0], + "57": [0.19444, 0.43056, 0, 0], + "65": [0, 0.68333, 0, 0.19445], + "66": [0, 0.68333, 0.03041, 0.13889], + "67": [0, 0.68333, 0.05834, 0.13889], + "68": [0, 0.68333, 0.02778, 0.08334], + "69": [0, 0.68333, 0.08944, 0.11111], + "70": [0, 0.68333, 0.09931, 0.11111], + "71": [0.09722, 0.68333, 0.0593, 0.11111], + "72": [0, 0.68333, 0.00965, 0.11111], + "73": [0, 0.68333, 0.07382, 0], + "74": [0.09722, 0.68333, 0.18472, 0.16667], + "75": [0, 0.68333, 0.01445, 0.05556], + "76": [0, 0.68333, 0, 0.13889], + "77": [0, 0.68333, 0, 0.13889], + "78": [0, 0.68333, 0.14736, 0.08334], + "79": [0, 0.68333, 0.02778, 0.11111], + "80": [0, 0.68333, 0.08222, 0.08334], + "81": [0.09722, 0.68333, 0, 0.11111], + "82": [0, 0.68333, 0, 0.08334], + "83": [0, 0.68333, 0.075, 0.13889], + "84": [0, 0.68333, 0.25417, 0], + "85": [0, 0.68333, 0.09931, 0.08334], + "86": [0, 0.68333, 0.08222, 0], + "87": [0, 0.68333, 0.08222, 0.08334], + "88": [0, 0.68333, 0.14643, 0.13889], + "89": [0.09722, 0.68333, 0.08222, 0.08334], + "90": [0, 0.68333, 0.07944, 0.13889] + }, + "Fraktur-Regular": { + "33": [0, 0.69141, 0, 0], + "34": [0, 0.69141, 0, 0], + "38": [0, 0.69141, 0, 0], + "39": [0, 0.69141, 0, 0], + "40": [0.24982, 0.74947, 0, 0], + "41": [0.24982, 0.74947, 0, 0], + "42": [0, 0.62119, 0, 0], + "43": [0.08319, 0.58283, 0, 0], + "44": [0, 0.10803, 0, 0], + "45": [0.08319, 0.58283, 0, 0], + "46": [0, 0.10803, 0, 0], + "47": [0.24982, 0.74947, 0, 0], + "48": [0, 0.47534, 0, 0], + "49": [0, 0.47534, 0, 0], + "50": [0, 0.47534, 0, 0], + "51": [0.18906, 0.47534, 0, 0], + "52": [0.18906, 0.47534, 0, 0], + "53": [0.18906, 0.47534, 0, 0], + "54": [0, 0.69141, 0, 0], + "55": [0.18906, 0.47534, 0, 0], + "56": [0, 0.69141, 0, 0], + "57": [0.18906, 0.47534, 0, 0], + "58": [0, 0.47534, 0, 0], + "59": [0.12604, 0.47534, 0, 0], + "61": [-0.13099, 0.36866, 0, 0], + "63": [0, 0.69141, 0, 0], + "65": [0, 0.69141, 0, 0], + "66": [0, 0.69141, 0, 0], + "67": [0, 0.69141, 0, 0], + "68": [0, 0.69141, 0, 0], + "69": [0, 0.69141, 0, 0], + "70": [0.12604, 0.69141, 0, 0], + "71": [0, 0.69141, 0, 0], + "72": [0.06302, 0.69141, 0, 0], + "73": [0, 0.69141, 0, 0], + "74": [0.12604, 0.69141, 0, 0], + "75": [0, 0.69141, 0, 0], + "76": [0, 0.69141, 0, 0], + "77": [0, 0.69141, 0, 0], + "78": [0, 0.69141, 0, 0], + "79": [0, 0.69141, 0, 0], + "80": [0.18906, 0.69141, 0, 0], + "81": [0.03781, 0.69141, 0, 0], + "82": [0, 0.69141, 0, 0], + "83": [0, 0.69141, 0, 0], + "84": [0, 0.69141, 0, 0], + "85": [0, 0.69141, 0, 0], + "86": [0, 0.69141, 0, 0], + "87": [0, 0.69141, 0, 0], + "88": [0, 0.69141, 0, 0], + "89": [0.18906, 0.69141, 0, 0], + "90": [0.12604, 0.69141, 0, 0], + "91": [0.24982, 0.74947, 0, 0], + "93": [0.24982, 0.74947, 0, 0], + "94": [0, 0.69141, 0, 0], + "97": [0, 0.47534, 0, 0], + "98": [0, 0.69141, 0, 0], + "99": [0, 0.47534, 0, 0], + "100": [0, 0.62119, 0, 0], + "101": [0, 0.47534, 0, 0], + "102": [0.18906, 0.69141, 0, 0], + "103": [0.18906, 0.47534, 0, 0], + "104": [0.18906, 0.69141, 0, 0], + "105": [0, 0.69141, 0, 0], + "106": [0, 0.69141, 0, 0], + "107": [0, 0.69141, 0, 0], + "108": [0, 0.69141, 0, 0], + "109": [0, 0.47534, 0, 0], + "110": [0, 0.47534, 0, 0], + "111": [0, 0.47534, 0, 0], + "112": [0.18906, 0.52396, 0, 0], + "113": [0.18906, 0.47534, 0, 0], + "114": [0, 0.47534, 0, 0], + "115": [0, 0.47534, 0, 0], + "116": [0, 0.62119, 0, 0], + "117": [0, 0.47534, 0, 0], + "118": [0, 0.52396, 0, 0], + "119": [0, 0.52396, 0, 0], + "120": [0.18906, 0.47534, 0, 0], + "121": [0.18906, 0.47534, 0, 0], + "122": [0.18906, 0.47534, 0, 0], + "8216": [0, 0.69141, 0, 0], + "8217": [0, 0.69141, 0, 0], + "58112": [0, 0.62119, 0, 0], + "58113": [0, 0.62119, 0, 0], + "58114": [0.18906, 0.69141, 0, 0], + "58115": [0.18906, 0.69141, 0, 0], + "58116": [0.18906, 0.47534, 0, 0], + "58117": [0, 0.69141, 0, 0], + "58118": [0, 0.62119, 0, 0], + "58119": [0, 0.47534, 0, 0] + }, + "Main-Bold": { + "33": [0, 0.69444, 0, 0], + "34": [0, 0.69444, 0, 0], + "35": [0.19444, 0.69444, 0, 0], + "36": [0.05556, 0.75, 0, 0], + "37": [0.05556, 0.75, 0, 0], + "38": [0, 0.69444, 0, 0], + "39": [0, 0.69444, 0, 0], + "40": [0.25, 0.75, 0, 0], + "41": [0.25, 0.75, 0, 0], + "42": [0, 0.75, 0, 0], + "43": [0.13333, 0.63333, 0, 0], + "44": [0.19444, 0.15556, 0, 0], + "45": [0, 0.44444, 0, 0], + "46": [0, 0.15556, 0, 0], + "47": [0.25, 0.75, 0, 0], + "48": [0, 0.64444, 0, 0], + "49": [0, 0.64444, 0, 0], + "50": [0, 0.64444, 0, 0], + "51": [0, 0.64444, 0, 0], + "52": [0, 0.64444, 0, 0], + "53": [0, 0.64444, 0, 0], + "54": [0, 0.64444, 0, 0], + "55": [0, 0.64444, 0, 0], + "56": [0, 0.64444, 0, 0], + "57": [0, 0.64444, 0, 0], + "58": [0, 0.44444, 0, 0], + "59": [0.19444, 0.44444, 0, 0], + "60": [0.08556, 0.58556, 0, 0], + "61": [-0.10889, 0.39111, 0, 0], + "62": [0.08556, 0.58556, 0, 0], + "63": [0, 0.69444, 0, 0], + "64": [0, 0.69444, 0, 0], + "65": [0, 0.68611, 0, 0], + "66": [0, 0.68611, 0, 0], + "67": [0, 0.68611, 0, 0], + "68": [0, 0.68611, 0, 0], + "69": [0, 0.68611, 0, 0], + "70": [0, 0.68611, 0, 0], + "71": [0, 0.68611, 0, 0], + "72": [0, 0.68611, 0, 0], + "73": [0, 0.68611, 0, 0], + "74": [0, 0.68611, 0, 0], + "75": [0, 0.68611, 0, 0], + "76": [0, 0.68611, 0, 0], + "77": [0, 0.68611, 0, 0], + "78": [0, 0.68611, 0, 0], + "79": [0, 0.68611, 0, 0], + "80": [0, 0.68611, 0, 0], + "81": [0.19444, 0.68611, 0, 0], + "82": [0, 0.68611, 0, 0], + "83": [0, 0.68611, 0, 0], + "84": [0, 0.68611, 0, 0], + "85": [0, 0.68611, 0, 0], + "86": [0, 0.68611, 0.01597, 0], + "87": [0, 0.68611, 0.01597, 0], + "88": [0, 0.68611, 0, 0], + "89": [0, 0.68611, 0.02875, 0], + "90": [0, 0.68611, 0, 0], + "91": [0.25, 0.75, 0, 0], + "92": [0.25, 0.75, 0, 0], + "93": [0.25, 0.75, 0, 0], + "94": [0, 0.69444, 0, 0], + "95": [0.31, 0.13444, 0.03194, 0], + "96": [0, 0.69444, 0, 0], + "97": [0, 0.44444, 0, 0], + "98": [0, 0.69444, 0, 0], + "99": [0, 0.44444, 0, 0], + "100": [0, 0.69444, 0, 0], + "101": [0, 0.44444, 0, 0], + "102": [0, 0.69444, 0.10903, 0], + "103": [0.19444, 0.44444, 0.01597, 0], + "104": [0, 0.69444, 0, 0], + "105": [0, 0.69444, 0, 0], + "106": [0.19444, 0.69444, 0, 0], + "107": [0, 0.69444, 0, 0], + "108": [0, 0.69444, 0, 0], + "109": [0, 0.44444, 0, 0], + "110": [0, 0.44444, 0, 0], + "111": [0, 0.44444, 0, 0], + "112": [0.19444, 0.44444, 0, 0], + "113": [0.19444, 0.44444, 0, 0], + "114": [0, 0.44444, 0, 0], + "115": [0, 0.44444, 0, 0], + "116": [0, 0.63492, 0, 0], + "117": [0, 0.44444, 0, 0], + "118": [0, 0.44444, 0.01597, 0], + "119": [0, 0.44444, 0.01597, 0], + "120": [0, 0.44444, 0, 0], + "121": [0.19444, 0.44444, 0.01597, 0], + "122": [0, 0.44444, 0, 0], + "123": [0.25, 0.75, 0, 0], + "124": [0.25, 0.75, 0, 0], + "125": [0.25, 0.75, 0, 0], + "126": [0.35, 0.34444, 0, 0], + "168": [0, 0.69444, 0, 0], + "172": [0, 0.44444, 0, 0], + "175": [0, 0.59611, 0, 0], + "176": [0, 0.69444, 0, 0], + "177": [0.13333, 0.63333, 0, 0], + "180": [0, 0.69444, 0, 0], + "215": [0.13333, 0.63333, 0, 0], + "247": [0.13333, 0.63333, 0, 0], + "305": [0, 0.44444, 0, 0], + "567": [0.19444, 0.44444, 0, 0], + "710": [0, 0.69444, 0, 0], + "711": [0, 0.63194, 0, 0], + "713": [0, 0.59611, 0, 0], + "714": [0, 0.69444, 0, 0], + "715": [0, 0.69444, 0, 0], + "728": [0, 0.69444, 0, 0], + "729": [0, 0.69444, 0, 0], + "730": [0, 0.69444, 0, 0], + "732": [0, 0.69444, 0, 0], + "768": [0, 0.69444, 0, 0], + "769": [0, 0.69444, 0, 0], + "770": [0, 0.69444, 0, 0], + "771": [0, 0.69444, 0, 0], + "772": [0, 0.59611, 0, 0], + "774": [0, 0.69444, 0, 0], + "775": [0, 0.69444, 0, 0], + "776": [0, 0.69444, 0, 0], + "778": [0, 0.69444, 0, 0], + "779": [0, 0.69444, 0, 0], + "780": [0, 0.63194, 0, 0], + "824": [0.19444, 0.69444, 0, 0], + "915": [0, 0.68611, 0, 0], + "916": [0, 0.68611, 0, 0], + "920": [0, 0.68611, 0, 0], + "923": [0, 0.68611, 0, 0], + "926": [0, 0.68611, 0, 0], + "928": [0, 0.68611, 0, 0], + "931": [0, 0.68611, 0, 0], + "933": [0, 0.68611, 0, 0], + "934": [0, 0.68611, 0, 0], + "936": [0, 0.68611, 0, 0], + "937": [0, 0.68611, 0, 0], + "8211": [0, 0.44444, 0.03194, 0], + "8212": [0, 0.44444, 0.03194, 0], + "8216": [0, 0.69444, 0, 0], + "8217": [0, 0.69444, 0, 0], + "8220": [0, 0.69444, 0, 0], + "8221": [0, 0.69444, 0, 0], + "8224": [0.19444, 0.69444, 0, 0], + "8225": [0.19444, 0.69444, 0, 0], + "8242": [0, 0.55556, 0, 0], + "8407": [0, 0.72444, 0.15486, 0], + "8463": [0, 0.69444, 0, 0], + "8465": [0, 0.69444, 0, 0], + "8467": [0, 0.69444, 0, 0], + "8472": [0.19444, 0.44444, 0, 0], + "8476": [0, 0.69444, 0, 0], + "8501": [0, 0.69444, 0, 0], + "8592": [-0.10889, 0.39111, 0, 0], + "8593": [0.19444, 0.69444, 0, 0], + "8594": [-0.10889, 0.39111, 0, 0], + "8595": [0.19444, 0.69444, 0, 0], + "8596": [-0.10889, 0.39111, 0, 0], + "8597": [0.25, 0.75, 0, 0], + "8598": [0.19444, 0.69444, 0, 0], + "8599": [0.19444, 0.69444, 0, 0], + "8600": [0.19444, 0.69444, 0, 0], + "8601": [0.19444, 0.69444, 0, 0], + "8636": [-0.10889, 0.39111, 0, 0], + "8637": [-0.10889, 0.39111, 0, 0], + "8640": [-0.10889, 0.39111, 0, 0], + "8641": [-0.10889, 0.39111, 0, 0], + "8656": [-0.10889, 0.39111, 0, 0], + "8657": [0.19444, 0.69444, 0, 0], + "8658": [-0.10889, 0.39111, 0, 0], + "8659": [0.19444, 0.69444, 0, 0], + "8660": [-0.10889, 0.39111, 0, 0], + "8661": [0.25, 0.75, 0, 0], + "8704": [0, 0.69444, 0, 0], + "8706": [0, 0.69444, 0.06389, 0], + "8707": [0, 0.69444, 0, 0], + "8709": [0.05556, 0.75, 0, 0], + "8711": [0, 0.68611, 0, 0], + "8712": [0.08556, 0.58556, 0, 0], + "8715": [0.08556, 0.58556, 0, 0], + "8722": [0.13333, 0.63333, 0, 0], + "8723": [0.13333, 0.63333, 0, 0], + "8725": [0.25, 0.75, 0, 0], + "8726": [0.25, 0.75, 0, 0], + "8727": [-0.02778, 0.47222, 0, 0], + "8728": [-0.02639, 0.47361, 0, 0], + "8729": [-0.02639, 0.47361, 0, 0], + "8730": [0.18, 0.82, 0, 0], + "8733": [0, 0.44444, 0, 0], + "8734": [0, 0.44444, 0, 0], + "8736": [0, 0.69224, 0, 0], + "8739": [0.25, 0.75, 0, 0], + "8741": [0.25, 0.75, 0, 0], + "8743": [0, 0.55556, 0, 0], + "8744": [0, 0.55556, 0, 0], + "8745": [0, 0.55556, 0, 0], + "8746": [0, 0.55556, 0, 0], + "8747": [0.19444, 0.69444, 0.12778, 0], + "8764": [-0.10889, 0.39111, 0, 0], + "8768": [0.19444, 0.69444, 0, 0], + "8771": [0.00222, 0.50222, 0, 0], + "8776": [0.02444, 0.52444, 0, 0], + "8781": [0.00222, 0.50222, 0, 0], + "8801": [0.00222, 0.50222, 0, 0], + "8804": [0.19667, 0.69667, 0, 0], + "8805": [0.19667, 0.69667, 0, 0], + "8810": [0.08556, 0.58556, 0, 0], + "8811": [0.08556, 0.58556, 0, 0], + "8826": [0.08556, 0.58556, 0, 0], + "8827": [0.08556, 0.58556, 0, 0], + "8834": [0.08556, 0.58556, 0, 0], + "8835": [0.08556, 0.58556, 0, 0], + "8838": [0.19667, 0.69667, 0, 0], + "8839": [0.19667, 0.69667, 0, 0], + "8846": [0, 0.55556, 0, 0], + "8849": [0.19667, 0.69667, 0, 0], + "8850": [0.19667, 0.69667, 0, 0], + "8851": [0, 0.55556, 0, 0], + "8852": [0, 0.55556, 0, 0], + "8853": [0.13333, 0.63333, 0, 0], + "8854": [0.13333, 0.63333, 0, 0], + "8855": [0.13333, 0.63333, 0, 0], + "8856": [0.13333, 0.63333, 0, 0], + "8857": [0.13333, 0.63333, 0, 0], + "8866": [0, 0.69444, 0, 0], + "8867": [0, 0.69444, 0, 0], + "8868": [0, 0.69444, 0, 0], + "8869": [0, 0.69444, 0, 0], + "8900": [-0.02639, 0.47361, 0, 0], + "8901": [-0.02639, 0.47361, 0, 0], + "8902": [-0.02778, 0.47222, 0, 0], + "8968": [0.25, 0.75, 0, 0], + "8969": [0.25, 0.75, 0, 0], + "8970": [0.25, 0.75, 0, 0], + "8971": [0.25, 0.75, 0, 0], + "8994": [-0.13889, 0.36111, 0, 0], + "8995": [-0.13889, 0.36111, 0, 0], + "9651": [0.19444, 0.69444, 0, 0], + "9657": [-0.02778, 0.47222, 0, 0], + "9661": [0.19444, 0.69444, 0, 0], + "9667": [-0.02778, 0.47222, 0, 0], + "9711": [0.19444, 0.69444, 0, 0], + "9824": [0.12963, 0.69444, 0, 0], + "9825": [0.12963, 0.69444, 0, 0], + "9826": [0.12963, 0.69444, 0, 0], + "9827": [0.12963, 0.69444, 0, 0], + "9837": [0, 0.75, 0, 0], + "9838": [0.19444, 0.69444, 0, 0], + "9839": [0.19444, 0.69444, 0, 0], + "10216": [0.25, 0.75, 0, 0], + "10217": [0.25, 0.75, 0, 0], + "10815": [0, 0.68611, 0, 0], + "10927": [0.19667, 0.69667, 0, 0], + "10928": [0.19667, 0.69667, 0, 0] + }, + "Main-Italic": { + "33": [0, 0.69444, 0.12417, 0], + "34": [0, 0.69444, 0.06961, 0], + "35": [0.19444, 0.69444, 0.06616, 0], + "37": [0.05556, 0.75, 0.13639, 0], + "38": [0, 0.69444, 0.09694, 0], + "39": [0, 0.69444, 0.12417, 0], + "40": [0.25, 0.75, 0.16194, 0], + "41": [0.25, 0.75, 0.03694, 0], + "42": [0, 0.75, 0.14917, 0], + "43": [0.05667, 0.56167, 0.03694, 0], + "44": [0.19444, 0.10556, 0, 0], + "45": [0, 0.43056, 0.02826, 0], + "46": [0, 0.10556, 0, 0], + "47": [0.25, 0.75, 0.16194, 0], + "48": [0, 0.64444, 0.13556, 0], + "49": [0, 0.64444, 0.13556, 0], + "50": [0, 0.64444, 0.13556, 0], + "51": [0, 0.64444, 0.13556, 0], + "52": [0.19444, 0.64444, 0.13556, 0], + "53": [0, 0.64444, 0.13556, 0], + "54": [0, 0.64444, 0.13556, 0], + "55": [0.19444, 0.64444, 0.13556, 0], + "56": [0, 0.64444, 0.13556, 0], + "57": [0, 0.64444, 0.13556, 0], + "58": [0, 0.43056, 0.0582, 0], + "59": [0.19444, 0.43056, 0.0582, 0], + "61": [-0.13313, 0.36687, 0.06616, 0], + "63": [0, 0.69444, 0.1225, 0], + "64": [0, 0.69444, 0.09597, 0], + "65": [0, 0.68333, 0, 0], + "66": [0, 0.68333, 0.10257, 0], + "67": [0, 0.68333, 0.14528, 0], + "68": [0, 0.68333, 0.09403, 0], + "69": [0, 0.68333, 0.12028, 0], + "70": [0, 0.68333, 0.13305, 0], + "71": [0, 0.68333, 0.08722, 0], + "72": [0, 0.68333, 0.16389, 0], + "73": [0, 0.68333, 0.15806, 0], + "74": [0, 0.68333, 0.14028, 0], + "75": [0, 0.68333, 0.14528, 0], + "76": [0, 0.68333, 0, 0], + "77": [0, 0.68333, 0.16389, 0], + "78": [0, 0.68333, 0.16389, 0], + "79": [0, 0.68333, 0.09403, 0], + "80": [0, 0.68333, 0.10257, 0], + "81": [0.19444, 0.68333, 0.09403, 0], + "82": [0, 0.68333, 0.03868, 0], + "83": [0, 0.68333, 0.11972, 0], + "84": [0, 0.68333, 0.13305, 0], + "85": [0, 0.68333, 0.16389, 0], + "86": [0, 0.68333, 0.18361, 0], + "87": [0, 0.68333, 0.18361, 0], + "88": [0, 0.68333, 0.15806, 0], + "89": [0, 0.68333, 0.19383, 0], + "90": [0, 0.68333, 0.14528, 0], + "91": [0.25, 0.75, 0.1875, 0], + "93": [0.25, 0.75, 0.10528, 0], + "94": [0, 0.69444, 0.06646, 0], + "95": [0.31, 0.12056, 0.09208, 0], + "97": [0, 0.43056, 0.07671, 0], + "98": [0, 0.69444, 0.06312, 0], + "99": [0, 0.43056, 0.05653, 0], + "100": [0, 0.69444, 0.10333, 0], + "101": [0, 0.43056, 0.07514, 0], + "102": [0.19444, 0.69444, 0.21194, 0], + "103": [0.19444, 0.43056, 0.08847, 0], + "104": [0, 0.69444, 0.07671, 0], + "105": [0, 0.65536, 0.1019, 0], + "106": [0.19444, 0.65536, 0.14467, 0], + "107": [0, 0.69444, 0.10764, 0], + "108": [0, 0.69444, 0.10333, 0], + "109": [0, 0.43056, 0.07671, 0], + "110": [0, 0.43056, 0.07671, 0], + "111": [0, 0.43056, 0.06312, 0], + "112": [0.19444, 0.43056, 0.06312, 0], + "113": [0.19444, 0.43056, 0.08847, 0], + "114": [0, 0.43056, 0.10764, 0], + "115": [0, 0.43056, 0.08208, 0], + "116": [0, 0.61508, 0.09486, 0], + "117": [0, 0.43056, 0.07671, 0], + "118": [0, 0.43056, 0.10764, 0], + "119": [0, 0.43056, 0.10764, 0], + "120": [0, 0.43056, 0.12042, 0], + "121": [0.19444, 0.43056, 0.08847, 0], + "122": [0, 0.43056, 0.12292, 0], + "126": [0.35, 0.31786, 0.11585, 0], + "163": [0, 0.69444, 0, 0], + "305": [0, 0.43056, 0, 0.02778], + "567": [0.19444, 0.43056, 0, 0.08334], + "768": [0, 0.69444, 0, 0], + "769": [0, 0.69444, 0.09694, 0], + "770": [0, 0.69444, 0.06646, 0], + "771": [0, 0.66786, 0.11585, 0], + "772": [0, 0.56167, 0.10333, 0], + "774": [0, 0.69444, 0.10806, 0], + "775": [0, 0.66786, 0.11752, 0], + "776": [0, 0.66786, 0.10474, 0], + "778": [0, 0.69444, 0, 0], + "779": [0, 0.69444, 0.1225, 0], + "780": [0, 0.62847, 0.08295, 0], + "915": [0, 0.68333, 0.13305, 0], + "916": [0, 0.68333, 0, 0], + "920": [0, 0.68333, 0.09403, 0], + "923": [0, 0.68333, 0, 0], + "926": [0, 0.68333, 0.15294, 0], + "928": [0, 0.68333, 0.16389, 0], + "931": [0, 0.68333, 0.12028, 0], + "933": [0, 0.68333, 0.11111, 0], + "934": [0, 0.68333, 0.05986, 0], + "936": [0, 0.68333, 0.11111, 0], + "937": [0, 0.68333, 0.10257, 0], + "8211": [0, 0.43056, 0.09208, 0], + "8212": [0, 0.43056, 0.09208, 0], + "8216": [0, 0.69444, 0.12417, 0], + "8217": [0, 0.69444, 0.12417, 0], + "8220": [0, 0.69444, 0.1685, 0], + "8221": [0, 0.69444, 0.06961, 0], + "8463": [0, 0.68889, 0, 0] + }, + "Main-Regular": { + "32": [0, 0, 0, 0], + "33": [0, 0.69444, 0, 0], + "34": [0, 0.69444, 0, 0], + "35": [0.19444, 0.69444, 0, 0], + "36": [0.05556, 0.75, 0, 0], + "37": [0.05556, 0.75, 0, 0], + "38": [0, 0.69444, 0, 0], + "39": [0, 0.69444, 0, 0], + "40": [0.25, 0.75, 0, 0], + "41": [0.25, 0.75, 0, 0], + "42": [0, 0.75, 0, 0], + "43": [0.08333, 0.58333, 0, 0], + "44": [0.19444, 0.10556, 0, 0], + "45": [0, 0.43056, 0, 0], + "46": [0, 0.10556, 0, 0], + "47": [0.25, 0.75, 0, 0], + "48": [0, 0.64444, 0, 0], + "49": [0, 0.64444, 0, 0], + "50": [0, 0.64444, 0, 0], + "51": [0, 0.64444, 0, 0], + "52": [0, 0.64444, 0, 0], + "53": [0, 0.64444, 0, 0], + "54": [0, 0.64444, 0, 0], + "55": [0, 0.64444, 0, 0], + "56": [0, 0.64444, 0, 0], + "57": [0, 0.64444, 0, 0], + "58": [0, 0.43056, 0, 0], + "59": [0.19444, 0.43056, 0, 0], + "60": [0.0391, 0.5391, 0, 0], + "61": [-0.13313, 0.36687, 0, 0], + "62": [0.0391, 0.5391, 0, 0], + "63": [0, 0.69444, 0, 0], + "64": [0, 0.69444, 0, 0], + "65": [0, 0.68333, 0, 0], + "66": [0, 0.68333, 0, 0], + "67": [0, 0.68333, 0, 0], + "68": [0, 0.68333, 0, 0], + "69": [0, 0.68333, 0, 0], + "70": [0, 0.68333, 0, 0], + "71": [0, 0.68333, 0, 0], + "72": [0, 0.68333, 0, 0], + "73": [0, 0.68333, 0, 0], + "74": [0, 0.68333, 0, 0], + "75": [0, 0.68333, 0, 0], + "76": [0, 0.68333, 0, 0], + "77": [0, 0.68333, 0, 0], + "78": [0, 0.68333, 0, 0], + "79": [0, 0.68333, 0, 0], + "80": [0, 0.68333, 0, 0], + "81": [0.19444, 0.68333, 0, 0], + "82": [0, 0.68333, 0, 0], + "83": [0, 0.68333, 0, 0], + "84": [0, 0.68333, 0, 0], + "85": [0, 0.68333, 0, 0], + "86": [0, 0.68333, 0.01389, 0], + "87": [0, 0.68333, 0.01389, 0], + "88": [0, 0.68333, 0, 0], + "89": [0, 0.68333, 0.025, 0], + "90": [0, 0.68333, 0, 0], + "91": [0.25, 0.75, 0, 0], + "92": [0.25, 0.75, 0, 0], + "93": [0.25, 0.75, 0, 0], + "94": [0, 0.69444, 0, 0], + "95": [0.31, 0.12056, 0.02778, 0], + "96": [0, 0.69444, 0, 0], + "97": [0, 0.43056, 0, 0], + "98": [0, 0.69444, 0, 0], + "99": [0, 0.43056, 0, 0], + "100": [0, 0.69444, 0, 0], + "101": [0, 0.43056, 0, 0], + "102": [0, 0.69444, 0.07778, 0], + "103": [0.19444, 0.43056, 0.01389, 0], + "104": [0, 0.69444, 0, 0], + "105": [0, 0.66786, 0, 0], + "106": [0.19444, 0.66786, 0, 0], + "107": [0, 0.69444, 0, 0], + "108": [0, 0.69444, 0, 0], + "109": [0, 0.43056, 0, 0], + "110": [0, 0.43056, 0, 0], + "111": [0, 0.43056, 0, 0], + "112": [0.19444, 0.43056, 0, 0], + "113": [0.19444, 0.43056, 0, 0], + "114": [0, 0.43056, 0, 0], + "115": [0, 0.43056, 0, 0], + "116": [0, 0.61508, 0, 0], + "117": [0, 0.43056, 0, 0], + "118": [0, 0.43056, 0.01389, 0], + "119": [0, 0.43056, 0.01389, 0], + "120": [0, 0.43056, 0, 0], + "121": [0.19444, 0.43056, 0.01389, 0], + "122": [0, 0.43056, 0, 0], + "123": [0.25, 0.75, 0, 0], + "124": [0.25, 0.75, 0, 0], + "125": [0.25, 0.75, 0, 0], + "126": [0.35, 0.31786, 0, 0], + "160": [0, 0, 0, 0], + "168": [0, 0.66786, 0, 0], + "172": [0, 0.43056, 0, 0], + "175": [0, 0.56778, 0, 0], + "176": [0, 0.69444, 0, 0], + "177": [0.08333, 0.58333, 0, 0], + "180": [0, 0.69444, 0, 0], + "215": [0.08333, 0.58333, 0, 0], + "247": [0.08333, 0.58333, 0, 0], + "305": [0, 0.43056, 0, 0], + "567": [0.19444, 0.43056, 0, 0], + "710": [0, 0.69444, 0, 0], + "711": [0, 0.62847, 0, 0], + "713": [0, 0.56778, 0, 0], + "714": [0, 0.69444, 0, 0], + "715": [0, 0.69444, 0, 0], + "728": [0, 0.69444, 0, 0], + "729": [0, 0.66786, 0, 0], + "730": [0, 0.69444, 0, 0], + "732": [0, 0.66786, 0, 0], + "768": [0, 0.69444, 0, 0], + "769": [0, 0.69444, 0, 0], + "770": [0, 0.69444, 0, 0], + "771": [0, 0.66786, 0, 0], + "772": [0, 0.56778, 0, 0], + "774": [0, 0.69444, 0, 0], + "775": [0, 0.66786, 0, 0], + "776": [0, 0.66786, 0, 0], + "778": [0, 0.69444, 0, 0], + "779": [0, 0.69444, 0, 0], + "780": [0, 0.62847, 0, 0], + "824": [0.19444, 0.69444, 0, 0], + "915": [0, 0.68333, 0, 0], + "916": [0, 0.68333, 0, 0], + "920": [0, 0.68333, 0, 0], + "923": [0, 0.68333, 0, 0], + "926": [0, 0.68333, 0, 0], + "928": [0, 0.68333, 0, 0], + "931": [0, 0.68333, 0, 0], + "933": [0, 0.68333, 0, 0], + "934": [0, 0.68333, 0, 0], + "936": [0, 0.68333, 0, 0], + "937": [0, 0.68333, 0, 0], + "8211": [0, 0.43056, 0.02778, 0], + "8212": [0, 0.43056, 0.02778, 0], + "8216": [0, 0.69444, 0, 0], + "8217": [0, 0.69444, 0, 0], + "8220": [0, 0.69444, 0, 0], + "8221": [0, 0.69444, 0, 0], + "8224": [0.19444, 0.69444, 0, 0], + "8225": [0.19444, 0.69444, 0, 0], + "8230": [0, 0.12, 0, 0], + "8242": [0, 0.55556, 0, 0], + "8407": [0, 0.71444, 0.15382, 0], + "8463": [0, 0.68889, 0, 0], + "8465": [0, 0.69444, 0, 0], + "8467": [0, 0.69444, 0, 0.11111], + "8472": [0.19444, 0.43056, 0, 0.11111], + "8476": [0, 0.69444, 0, 0], + "8501": [0, 0.69444, 0, 0], + "8592": [-0.13313, 0.36687, 0, 0], + "8593": [0.19444, 0.69444, 0, 0], + "8594": [-0.13313, 0.36687, 0, 0], + "8595": [0.19444, 0.69444, 0, 0], + "8596": [-0.13313, 0.36687, 0, 0], + "8597": [0.25, 0.75, 0, 0], + "8598": [0.19444, 0.69444, 0, 0], + "8599": [0.19444, 0.69444, 0, 0], + "8600": [0.19444, 0.69444, 0, 0], + "8601": [0.19444, 0.69444, 0, 0], + "8614": [0.011, 0.511, 0, 0], + "8617": [0.011, 0.511, 0, 0], + "8618": [0.011, 0.511, 0, 0], + "8636": [-0.13313, 0.36687, 0, 0], + "8637": [-0.13313, 0.36687, 0, 0], + "8640": [-0.13313, 0.36687, 0, 0], + "8641": [-0.13313, 0.36687, 0, 0], + "8652": [0.011, 0.671, 0, 0], + "8656": [-0.13313, 0.36687, 0, 0], + "8657": [0.19444, 0.69444, 0, 0], + "8658": [-0.13313, 0.36687, 0, 0], + "8659": [0.19444, 0.69444, 0, 0], + "8660": [-0.13313, 0.36687, 0, 0], + "8661": [0.25, 0.75, 0, 0], + "8704": [0, 0.69444, 0, 0], + "8706": [0, 0.69444, 0.05556, 0.08334], + "8707": [0, 0.69444, 0, 0], + "8709": [0.05556, 0.75, 0, 0], + "8711": [0, 0.68333, 0, 0], + "8712": [0.0391, 0.5391, 0, 0], + "8715": [0.0391, 0.5391, 0, 0], + "8722": [0.08333, 0.58333, 0, 0], + "8723": [0.08333, 0.58333, 0, 0], + "8725": [0.25, 0.75, 0, 0], + "8726": [0.25, 0.75, 0, 0], + "8727": [-0.03472, 0.46528, 0, 0], + "8728": [-0.05555, 0.44445, 0, 0], + "8729": [-0.05555, 0.44445, 0, 0], + "8730": [0.2, 0.8, 0, 0], + "8733": [0, 0.43056, 0, 0], + "8734": [0, 0.43056, 0, 0], + "8736": [0, 0.69224, 0, 0], + "8739": [0.25, 0.75, 0, 0], + "8741": [0.25, 0.75, 0, 0], + "8743": [0, 0.55556, 0, 0], + "8744": [0, 0.55556, 0, 0], + "8745": [0, 0.55556, 0, 0], + "8746": [0, 0.55556, 0, 0], + "8747": [0.19444, 0.69444, 0.11111, 0], + "8764": [-0.13313, 0.36687, 0, 0], + "8768": [0.19444, 0.69444, 0, 0], + "8771": [-0.03625, 0.46375, 0, 0], + "8773": [-0.022, 0.589, 0, 0], + "8776": [-0.01688, 0.48312, 0, 0], + "8781": [-0.03625, 0.46375, 0, 0], + "8784": [-0.133, 0.67, 0, 0], + "8800": [0.215, 0.716, 0, 0], + "8801": [-0.03625, 0.46375, 0, 0], + "8804": [0.13597, 0.63597, 0, 0], + "8805": [0.13597, 0.63597, 0, 0], + "8810": [0.0391, 0.5391, 0, 0], + "8811": [0.0391, 0.5391, 0, 0], + "8826": [0.0391, 0.5391, 0, 0], + "8827": [0.0391, 0.5391, 0, 0], + "8834": [0.0391, 0.5391, 0, 0], + "8835": [0.0391, 0.5391, 0, 0], + "8838": [0.13597, 0.63597, 0, 0], + "8839": [0.13597, 0.63597, 0, 0], + "8846": [0, 0.55556, 0, 0], + "8849": [0.13597, 0.63597, 0, 0], + "8850": [0.13597, 0.63597, 0, 0], + "8851": [0, 0.55556, 0, 0], + "8852": [0, 0.55556, 0, 0], + "8853": [0.08333, 0.58333, 0, 0], + "8854": [0.08333, 0.58333, 0, 0], + "8855": [0.08333, 0.58333, 0, 0], + "8856": [0.08333, 0.58333, 0, 0], + "8857": [0.08333, 0.58333, 0, 0], + "8866": [0, 0.69444, 0, 0], + "8867": [0, 0.69444, 0, 0], + "8868": [0, 0.69444, 0, 0], + "8869": [0, 0.69444, 0, 0], + "8872": [0.249, 0.75, 0, 0], + "8900": [-0.05555, 0.44445, 0, 0], + "8901": [-0.05555, 0.44445, 0, 0], + "8902": [-0.03472, 0.46528, 0, 0], + "8904": [0.005, 0.505, 0, 0], + "8942": [0.03, 0.9, 0, 0], + "8943": [-0.19, 0.31, 0, 0], + "8945": [-0.1, 0.82, 0, 0], + "8968": [0.25, 0.75, 0, 0], + "8969": [0.25, 0.75, 0, 0], + "8970": [0.25, 0.75, 0, 0], + "8971": [0.25, 0.75, 0, 0], + "8994": [-0.14236, 0.35764, 0, 0], + "8995": [-0.14236, 0.35764, 0, 0], + "9136": [0.244, 0.744, 0, 0], + "9137": [0.244, 0.744, 0, 0], + "9651": [0.19444, 0.69444, 0, 0], + "9657": [-0.03472, 0.46528, 0, 0], + "9661": [0.19444, 0.69444, 0, 0], + "9667": [-0.03472, 0.46528, 0, 0], + "9711": [0.19444, 0.69444, 0, 0], + "9824": [0.12963, 0.69444, 0, 0], + "9825": [0.12963, 0.69444, 0, 0], + "9826": [0.12963, 0.69444, 0, 0], + "9827": [0.12963, 0.69444, 0, 0], + "9837": [0, 0.75, 0, 0], + "9838": [0.19444, 0.69444, 0, 0], + "9839": [0.19444, 0.69444, 0, 0], + "10216": [0.25, 0.75, 0, 0], + "10217": [0.25, 0.75, 0, 0], + "10222": [0.244, 0.744, 0, 0], + "10223": [0.244, 0.744, 0, 0], + "10229": [0.011, 0.511, 0, 0], + "10230": [0.011, 0.511, 0, 0], + "10231": [0.011, 0.511, 0, 0], + "10232": [0.024, 0.525, 0, 0], + "10233": [0.024, 0.525, 0, 0], + "10234": [0.024, 0.525, 0, 0], + "10236": [0.011, 0.511, 0, 0], + "10815": [0, 0.68333, 0, 0], + "10927": [0.13597, 0.63597, 0, 0], + "10928": [0.13597, 0.63597, 0, 0] + }, + "Math-BoldItalic": { + "47": [0.19444, 0.69444, 0, 0], + "65": [0, 0.68611, 0, 0], + "66": [0, 0.68611, 0.04835, 0], + "67": [0, 0.68611, 0.06979, 0], + "68": [0, 0.68611, 0.03194, 0], + "69": [0, 0.68611, 0.05451, 0], + "70": [0, 0.68611, 0.15972, 0], + "71": [0, 0.68611, 0, 0], + "72": [0, 0.68611, 0.08229, 0], + "73": [0, 0.68611, 0.07778, 0], + "74": [0, 0.68611, 0.10069, 0], + "75": [0, 0.68611, 0.06979, 0], + "76": [0, 0.68611, 0, 0], + "77": [0, 0.68611, 0.11424, 0], + "78": [0, 0.68611, 0.11424, 0], + "79": [0, 0.68611, 0.03194, 0], + "80": [0, 0.68611, 0.15972, 0], + "81": [0.19444, 0.68611, 0, 0], + "82": [0, 0.68611, 0.00421, 0], + "83": [0, 0.68611, 0.05382, 0], + "84": [0, 0.68611, 0.15972, 0], + "85": [0, 0.68611, 0.11424, 0], + "86": [0, 0.68611, 0.25555, 0], + "87": [0, 0.68611, 0.15972, 0], + "88": [0, 0.68611, 0.07778, 0], + "89": [0, 0.68611, 0.25555, 0], + "90": [0, 0.68611, 0.06979, 0], + "97": [0, 0.44444, 0, 0], + "98": [0, 0.69444, 0, 0], + "99": [0, 0.44444, 0, 0], + "100": [0, 0.69444, 0, 0], + "101": [0, 0.44444, 0, 0], + "102": [0.19444, 0.69444, 0.11042, 0], + "103": [0.19444, 0.44444, 0.03704, 0], + "104": [0, 0.69444, 0, 0], + "105": [0, 0.69326, 0, 0], + "106": [0.19444, 0.69326, 0.0622, 0], + "107": [0, 0.69444, 0.01852, 0], + "108": [0, 0.69444, 0.0088, 0], + "109": [0, 0.44444, 0, 0], + "110": [0, 0.44444, 0, 0], + "111": [0, 0.44444, 0, 0], + "112": [0.19444, 0.44444, 0, 0], + "113": [0.19444, 0.44444, 0.03704, 0], + "114": [0, 0.44444, 0.03194, 0], + "115": [0, 0.44444, 0, 0], + "116": [0, 0.63492, 0, 0], + "117": [0, 0.44444, 0, 0], + "118": [0, 0.44444, 0.03704, 0], + "119": [0, 0.44444, 0.02778, 0], + "120": [0, 0.44444, 0, 0], + "121": [0.19444, 0.44444, 0.03704, 0], + "122": [0, 0.44444, 0.04213, 0], + "915": [0, 0.68611, 0.15972, 0], + "916": [0, 0.68611, 0, 0], + "920": [0, 0.68611, 0.03194, 0], + "923": [0, 0.68611, 0, 0], + "926": [0, 0.68611, 0.07458, 0], + "928": [0, 0.68611, 0.08229, 0], + "931": [0, 0.68611, 0.05451, 0], + "933": [0, 0.68611, 0.15972, 0], + "934": [0, 0.68611, 0, 0], + "936": [0, 0.68611, 0.11653, 0], + "937": [0, 0.68611, 0.04835, 0], + "945": [0, 0.44444, 0, 0], + "946": [0.19444, 0.69444, 0.03403, 0], + "947": [0.19444, 0.44444, 0.06389, 0], + "948": [0, 0.69444, 0.03819, 0], + "949": [0, 0.44444, 0, 0], + "950": [0.19444, 0.69444, 0.06215, 0], + "951": [0.19444, 0.44444, 0.03704, 0], + "952": [0, 0.69444, 0.03194, 0], + "953": [0, 0.44444, 0, 0], + "954": [0, 0.44444, 0, 0], + "955": [0, 0.69444, 0, 0], + "956": [0.19444, 0.44444, 0, 0], + "957": [0, 0.44444, 0.06898, 0], + "958": [0.19444, 0.69444, 0.03021, 0], + "959": [0, 0.44444, 0, 0], + "960": [0, 0.44444, 0.03704, 0], + "961": [0.19444, 0.44444, 0, 0], + "962": [0.09722, 0.44444, 0.07917, 0], + "963": [0, 0.44444, 0.03704, 0], + "964": [0, 0.44444, 0.13472, 0], + "965": [0, 0.44444, 0.03704, 0], + "966": [0.19444, 0.44444, 0, 0], + "967": [0.19444, 0.44444, 0, 0], + "968": [0.19444, 0.69444, 0.03704, 0], + "969": [0, 0.44444, 0.03704, 0], + "977": [0, 0.69444, 0, 0], + "981": [0.19444, 0.69444, 0, 0], + "982": [0, 0.44444, 0.03194, 0], + "1009": [0.19444, 0.44444, 0, 0], + "1013": [0, 0.44444, 0, 0] + }, + "Math-Italic": { + "47": [0.19444, 0.69444, 0, 0], + "65": [0, 0.68333, 0, 0.13889], + "66": [0, 0.68333, 0.05017, 0.08334], + "67": [0, 0.68333, 0.07153, 0.08334], + "68": [0, 0.68333, 0.02778, 0.05556], + "69": [0, 0.68333, 0.05764, 0.08334], + "70": [0, 0.68333, 0.13889, 0.08334], + "71": [0, 0.68333, 0, 0.08334], + "72": [0, 0.68333, 0.08125, 0.05556], + "73": [0, 0.68333, 0.07847, 0.11111], + "74": [0, 0.68333, 0.09618, 0.16667], + "75": [0, 0.68333, 0.07153, 0.05556], + "76": [0, 0.68333, 0, 0.02778], + "77": [0, 0.68333, 0.10903, 0.08334], + "78": [0, 0.68333, 0.10903, 0.08334], + "79": [0, 0.68333, 0.02778, 0.08334], + "80": [0, 0.68333, 0.13889, 0.08334], + "81": [0.19444, 0.68333, 0, 0.08334], + "82": [0, 0.68333, 0.00773, 0.08334], + "83": [0, 0.68333, 0.05764, 0.08334], + "84": [0, 0.68333, 0.13889, 0.08334], + "85": [0, 0.68333, 0.10903, 0.02778], + "86": [0, 0.68333, 0.22222, 0], + "87": [0, 0.68333, 0.13889, 0], + "88": [0, 0.68333, 0.07847, 0.08334], + "89": [0, 0.68333, 0.22222, 0], + "90": [0, 0.68333, 0.07153, 0.08334], + "97": [0, 0.43056, 0, 0], + "98": [0, 0.69444, 0, 0], + "99": [0, 0.43056, 0, 0.05556], + "100": [0, 0.69444, 0, 0.16667], + "101": [0, 0.43056, 0, 0.05556], + "102": [0.19444, 0.69444, 0.10764, 0.16667], + "103": [0.19444, 0.43056, 0.03588, 0.02778], + "104": [0, 0.69444, 0, 0], + "105": [0, 0.65952, 0, 0], + "106": [0.19444, 0.65952, 0.05724, 0], + "107": [0, 0.69444, 0.03148, 0], + "108": [0, 0.69444, 0.01968, 0.08334], + "109": [0, 0.43056, 0, 0], + "110": [0, 0.43056, 0, 0], + "111": [0, 0.43056, 0, 0.05556], + "112": [0.19444, 0.43056, 0, 0.08334], + "113": [0.19444, 0.43056, 0.03588, 0.08334], + "114": [0, 0.43056, 0.02778, 0.05556], + "115": [0, 0.43056, 0, 0.05556], + "116": [0, 0.61508, 0, 0.08334], + "117": [0, 0.43056, 0, 0.02778], + "118": [0, 0.43056, 0.03588, 0.02778], + "119": [0, 0.43056, 0.02691, 0.08334], + "120": [0, 0.43056, 0, 0.02778], + "121": [0.19444, 0.43056, 0.03588, 0.05556], + "122": [0, 0.43056, 0.04398, 0.05556], + "915": [0, 0.68333, 0.13889, 0.08334], + "916": [0, 0.68333, 0, 0.16667], + "920": [0, 0.68333, 0.02778, 0.08334], + "923": [0, 0.68333, 0, 0.16667], + "926": [0, 0.68333, 0.07569, 0.08334], + "928": [0, 0.68333, 0.08125, 0.05556], + "931": [0, 0.68333, 0.05764, 0.08334], + "933": [0, 0.68333, 0.13889, 0.05556], + "934": [0, 0.68333, 0, 0.08334], + "936": [0, 0.68333, 0.11, 0.05556], + "937": [0, 0.68333, 0.05017, 0.08334], + "945": [0, 0.43056, 0.0037, 0.02778], + "946": [0.19444, 0.69444, 0.05278, 0.08334], + "947": [0.19444, 0.43056, 0.05556, 0], + "948": [0, 0.69444, 0.03785, 0.05556], + "949": [0, 0.43056, 0, 0.08334], + "950": [0.19444, 0.69444, 0.07378, 0.08334], + "951": [0.19444, 0.43056, 0.03588, 0.05556], + "952": [0, 0.69444, 0.02778, 0.08334], + "953": [0, 0.43056, 0, 0.05556], + "954": [0, 0.43056, 0, 0], + "955": [0, 0.69444, 0, 0], + "956": [0.19444, 0.43056, 0, 0.02778], + "957": [0, 0.43056, 0.06366, 0.02778], + "958": [0.19444, 0.69444, 0.04601, 0.11111], + "959": [0, 0.43056, 0, 0.05556], + "960": [0, 0.43056, 0.03588, 0], + "961": [0.19444, 0.43056, 0, 0.08334], + "962": [0.09722, 0.43056, 0.07986, 0.08334], + "963": [0, 0.43056, 0.03588, 0], + "964": [0, 0.43056, 0.1132, 0.02778], + "965": [0, 0.43056, 0.03588, 0.02778], + "966": [0.19444, 0.43056, 0, 0.08334], + "967": [0.19444, 0.43056, 0, 0.05556], + "968": [0.19444, 0.69444, 0.03588, 0.11111], + "969": [0, 0.43056, 0.03588, 0], + "977": [0, 0.69444, 0, 0.08334], + "981": [0.19444, 0.69444, 0, 0.08334], + "982": [0, 0.43056, 0.02778, 0], + "1009": [0.19444, 0.43056, 0, 0.08334], + "1013": [0, 0.43056, 0, 0.05556] + }, + "Math-Regular": { + "65": [0, 0.68333, 0, 0.13889], + "66": [0, 0.68333, 0.05017, 0.08334], + "67": [0, 0.68333, 0.07153, 0.08334], + "68": [0, 0.68333, 0.02778, 0.05556], + "69": [0, 0.68333, 0.05764, 0.08334], + "70": [0, 0.68333, 0.13889, 0.08334], + "71": [0, 0.68333, 0, 0.08334], + "72": [0, 0.68333, 0.08125, 0.05556], + "73": [0, 0.68333, 0.07847, 0.11111], + "74": [0, 0.68333, 0.09618, 0.16667], + "75": [0, 0.68333, 0.07153, 0.05556], + "76": [0, 0.68333, 0, 0.02778], + "77": [0, 0.68333, 0.10903, 0.08334], + "78": [0, 0.68333, 0.10903, 0.08334], + "79": [0, 0.68333, 0.02778, 0.08334], + "80": [0, 0.68333, 0.13889, 0.08334], + "81": [0.19444, 0.68333, 0, 0.08334], + "82": [0, 0.68333, 0.00773, 0.08334], + "83": [0, 0.68333, 0.05764, 0.08334], + "84": [0, 0.68333, 0.13889, 0.08334], + "85": [0, 0.68333, 0.10903, 0.02778], + "86": [0, 0.68333, 0.22222, 0], + "87": [0, 0.68333, 0.13889, 0], + "88": [0, 0.68333, 0.07847, 0.08334], + "89": [0, 0.68333, 0.22222, 0], + "90": [0, 0.68333, 0.07153, 0.08334], + "97": [0, 0.43056, 0, 0], + "98": [0, 0.69444, 0, 0], + "99": [0, 0.43056, 0, 0.05556], + "100": [0, 0.69444, 0, 0.16667], + "101": [0, 0.43056, 0, 0.05556], + "102": [0.19444, 0.69444, 0.10764, 0.16667], + "103": [0.19444, 0.43056, 0.03588, 0.02778], + "104": [0, 0.69444, 0, 0], + "105": [0, 0.65952, 0, 0], + "106": [0.19444, 0.65952, 0.05724, 0], + "107": [0, 0.69444, 0.03148, 0], + "108": [0, 0.69444, 0.01968, 0.08334], + "109": [0, 0.43056, 0, 0], + "110": [0, 0.43056, 0, 0], + "111": [0, 0.43056, 0, 0.05556], + "112": [0.19444, 0.43056, 0, 0.08334], + "113": [0.19444, 0.43056, 0.03588, 0.08334], + "114": [0, 0.43056, 0.02778, 0.05556], + "115": [0, 0.43056, 0, 0.05556], + "116": [0, 0.61508, 0, 0.08334], + "117": [0, 0.43056, 0, 0.02778], + "118": [0, 0.43056, 0.03588, 0.02778], + "119": [0, 0.43056, 0.02691, 0.08334], + "120": [0, 0.43056, 0, 0.02778], + "121": [0.19444, 0.43056, 0.03588, 0.05556], + "122": [0, 0.43056, 0.04398, 0.05556], + "915": [0, 0.68333, 0.13889, 0.08334], + "916": [0, 0.68333, 0, 0.16667], + "920": [0, 0.68333, 0.02778, 0.08334], + "923": [0, 0.68333, 0, 0.16667], + "926": [0, 0.68333, 0.07569, 0.08334], + "928": [0, 0.68333, 0.08125, 0.05556], + "931": [0, 0.68333, 0.05764, 0.08334], + "933": [0, 0.68333, 0.13889, 0.05556], + "934": [0, 0.68333, 0, 0.08334], + "936": [0, 0.68333, 0.11, 0.05556], + "937": [0, 0.68333, 0.05017, 0.08334], + "945": [0, 0.43056, 0.0037, 0.02778], + "946": [0.19444, 0.69444, 0.05278, 0.08334], + "947": [0.19444, 0.43056, 0.05556, 0], + "948": [0, 0.69444, 0.03785, 0.05556], + "949": [0, 0.43056, 0, 0.08334], + "950": [0.19444, 0.69444, 0.07378, 0.08334], + "951": [0.19444, 0.43056, 0.03588, 0.05556], + "952": [0, 0.69444, 0.02778, 0.08334], + "953": [0, 0.43056, 0, 0.05556], + "954": [0, 0.43056, 0, 0], + "955": [0, 0.69444, 0, 0], + "956": [0.19444, 0.43056, 0, 0.02778], + "957": [0, 0.43056, 0.06366, 0.02778], + "958": [0.19444, 0.69444, 0.04601, 0.11111], + "959": [0, 0.43056, 0, 0.05556], + "960": [0, 0.43056, 0.03588, 0], + "961": [0.19444, 0.43056, 0, 0.08334], + "962": [0.09722, 0.43056, 0.07986, 0.08334], + "963": [0, 0.43056, 0.03588, 0], + "964": [0, 0.43056, 0.1132, 0.02778], + "965": [0, 0.43056, 0.03588, 0.02778], + "966": [0.19444, 0.43056, 0, 0.08334], + "967": [0.19444, 0.43056, 0, 0.05556], + "968": [0.19444, 0.69444, 0.03588, 0.11111], + "969": [0, 0.43056, 0.03588, 0], + "977": [0, 0.69444, 0, 0.08334], + "981": [0.19444, 0.69444, 0, 0.08334], + "982": [0, 0.43056, 0.02778, 0], + "1009": [0.19444, 0.43056, 0, 0.08334], + "1013": [0, 0.43056, 0, 0.05556] + }, + "SansSerif-Regular": { + "33": [0, 0.69444, 0, 0], + "34": [0, 0.69444, 0, 0], + "35": [0.19444, 0.69444, 0, 0], + "36": [0.05556, 0.75, 0, 0], + "37": [0.05556, 0.75, 0, 0], + "38": [0, 0.69444, 0, 0], + "39": [0, 0.69444, 0, 0], + "40": [0.25, 0.75, 0, 0], + "41": [0.25, 0.75, 0, 0], + "42": [0, 0.75, 0, 0], + "43": [0.08333, 0.58333, 0, 0], + "44": [0.125, 0.08333, 0, 0], + "45": [0, 0.44444, 0, 0], + "46": [0, 0.08333, 0, 0], + "47": [0.25, 0.75, 0, 0], + "48": [0, 0.65556, 0, 0], + "49": [0, 0.65556, 0, 0], + "50": [0, 0.65556, 0, 0], + "51": [0, 0.65556, 0, 0], + "52": [0, 0.65556, 0, 0], + "53": [0, 0.65556, 0, 0], + "54": [0, 0.65556, 0, 0], + "55": [0, 0.65556, 0, 0], + "56": [0, 0.65556, 0, 0], + "57": [0, 0.65556, 0, 0], + "58": [0, 0.44444, 0, 0], + "59": [0.125, 0.44444, 0, 0], + "61": [-0.13, 0.37, 0, 0], + "63": [0, 0.69444, 0, 0], + "64": [0, 0.69444, 0, 0], + "65": [0, 0.69444, 0, 0], + "66": [0, 0.69444, 0, 0], + "67": [0, 0.69444, 0, 0], + "68": [0, 0.69444, 0, 0], + "69": [0, 0.69444, 0, 0], + "70": [0, 0.69444, 0, 0], + "71": [0, 0.69444, 0, 0], + "72": [0, 0.69444, 0, 0], + "73": [0, 0.69444, 0, 0], + "74": [0, 0.69444, 0, 0], + "75": [0, 0.69444, 0, 0], + "76": [0, 0.69444, 0, 0], + "77": [0, 0.69444, 0, 0], + "78": [0, 0.69444, 0, 0], + "79": [0, 0.69444, 0, 0], + "80": [0, 0.69444, 0, 0], + "81": [0.125, 0.69444, 0, 0], + "82": [0, 0.69444, 0, 0], + "83": [0, 0.69444, 0, 0], + "84": [0, 0.69444, 0, 0], + "85": [0, 0.69444, 0, 0], + "86": [0, 0.69444, 0.01389, 0], + "87": [0, 0.69444, 0.01389, 0], + "88": [0, 0.69444, 0, 0], + "89": [0, 0.69444, 0.025, 0], + "90": [0, 0.69444, 0, 0], + "91": [0.25, 0.75, 0, 0], + "93": [0.25, 0.75, 0, 0], + "94": [0, 0.69444, 0, 0], + "95": [0.35, 0.09444, 0.02778, 0], + "97": [0, 0.44444, 0, 0], + "98": [0, 0.69444, 0, 0], + "99": [0, 0.44444, 0, 0], + "100": [0, 0.69444, 0, 0], + "101": [0, 0.44444, 0, 0], + "102": [0, 0.69444, 0.06944, 0], + "103": [0.19444, 0.44444, 0.01389, 0], + "104": [0, 0.69444, 0, 0], + "105": [0, 0.67937, 0, 0], + "106": [0.19444, 0.67937, 0, 0], + "107": [0, 0.69444, 0, 0], + "108": [0, 0.69444, 0, 0], + "109": [0, 0.44444, 0, 0], + "110": [0, 0.44444, 0, 0], + "111": [0, 0.44444, 0, 0], + "112": [0.19444, 0.44444, 0, 0], + "113": [0.19444, 0.44444, 0, 0], + "114": [0, 0.44444, 0.01389, 0], + "115": [0, 0.44444, 0, 0], + "116": [0, 0.57143, 0, 0], + "117": [0, 0.44444, 0, 0], + "118": [0, 0.44444, 0.01389, 0], + "119": [0, 0.44444, 0.01389, 0], + "120": [0, 0.44444, 0, 0], + "121": [0.19444, 0.44444, 0.01389, 0], + "122": [0, 0.44444, 0, 0], + "126": [0.35, 0.32659, 0, 0], + "305": [0, 0.44444, 0, 0], + "567": [0.19444, 0.44444, 0, 0], + "768": [0, 0.69444, 0, 0], + "769": [0, 0.69444, 0, 0], + "770": [0, 0.69444, 0, 0], + "771": [0, 0.67659, 0, 0], + "772": [0, 0.60889, 0, 0], + "774": [0, 0.69444, 0, 0], + "775": [0, 0.67937, 0, 0], + "776": [0, 0.67937, 0, 0], + "778": [0, 0.69444, 0, 0], + "779": [0, 0.69444, 0, 0], + "780": [0, 0.63194, 0, 0], + "915": [0, 0.69444, 0, 0], + "916": [0, 0.69444, 0, 0], + "920": [0, 0.69444, 0, 0], + "923": [0, 0.69444, 0, 0], + "926": [0, 0.69444, 0, 0], + "928": [0, 0.69444, 0, 0], + "931": [0, 0.69444, 0, 0], + "933": [0, 0.69444, 0, 0], + "934": [0, 0.69444, 0, 0], + "936": [0, 0.69444, 0, 0], + "937": [0, 0.69444, 0, 0], + "8211": [0, 0.44444, 0.02778, 0], + "8212": [0, 0.44444, 0.02778, 0], + "8216": [0, 0.69444, 0, 0], + "8217": [0, 0.69444, 0, 0], + "8220": [0, 0.69444, 0, 0], + "8221": [0, 0.69444, 0, 0] + }, + "Script-Regular": { + "65": [0, 0.7, 0.22925, 0], + "66": [0, 0.7, 0.04087, 0], + "67": [0, 0.7, 0.1689, 0], + "68": [0, 0.7, 0.09371, 0], + "69": [0, 0.7, 0.18583, 0], + "70": [0, 0.7, 0.13634, 0], + "71": [0, 0.7, 0.17322, 0], + "72": [0, 0.7, 0.29694, 0], + "73": [0, 0.7, 0.19189, 0], + "74": [0.27778, 0.7, 0.19189, 0], + "75": [0, 0.7, 0.31259, 0], + "76": [0, 0.7, 0.19189, 0], + "77": [0, 0.7, 0.15981, 0], + "78": [0, 0.7, 0.3525, 0], + "79": [0, 0.7, 0.08078, 0], + "80": [0, 0.7, 0.08078, 0], + "81": [0, 0.7, 0.03305, 0], + "82": [0, 0.7, 0.06259, 0], + "83": [0, 0.7, 0.19189, 0], + "84": [0, 0.7, 0.29087, 0], + "85": [0, 0.7, 0.25815, 0], + "86": [0, 0.7, 0.27523, 0], + "87": [0, 0.7, 0.27523, 0], + "88": [0, 0.7, 0.26006, 0], + "89": [0, 0.7, 0.2939, 0], + "90": [0, 0.7, 0.24037, 0] + }, + "Size1-Regular": { + "40": [0.35001, 0.85, 0, 0], + "41": [0.35001, 0.85, 0, 0], + "47": [0.35001, 0.85, 0, 0], + "91": [0.35001, 0.85, 0, 0], + "92": [0.35001, 0.85, 0, 0], + "93": [0.35001, 0.85, 0, 0], + "123": [0.35001, 0.85, 0, 0], + "125": [0.35001, 0.85, 0, 0], + "710": [0, 0.72222, 0, 0], + "732": [0, 0.72222, 0, 0], + "770": [0, 0.72222, 0, 0], + "771": [0, 0.72222, 0, 0], + "8214": [-0.00099, 0.601, 0, 0], + "8593": [1e-05, 0.6, 0, 0], + "8595": [1e-05, 0.6, 0, 0], + "8657": [1e-05, 0.6, 0, 0], + "8659": [1e-05, 0.6, 0, 0], + "8719": [0.25001, 0.75, 0, 0], + "8720": [0.25001, 0.75, 0, 0], + "8721": [0.25001, 0.75, 0, 0], + "8730": [0.35001, 0.85, 0, 0], + "8739": [-0.00599, 0.606, 0, 0], + "8741": [-0.00599, 0.606, 0, 0], + "8747": [0.30612, 0.805, 0.19445, 0], + "8748": [0.306, 0.805, 0.19445, 0], + "8749": [0.306, 0.805, 0.19445, 0], + "8750": [0.30612, 0.805, 0.19445, 0], + "8896": [0.25001, 0.75, 0, 0], + "8897": [0.25001, 0.75, 0, 0], + "8898": [0.25001, 0.75, 0, 0], + "8899": [0.25001, 0.75, 0, 0], + "8968": [0.35001, 0.85, 0, 0], + "8969": [0.35001, 0.85, 0, 0], + "8970": [0.35001, 0.85, 0, 0], + "8971": [0.35001, 0.85, 0, 0], + "9168": [-0.00099, 0.601, 0, 0], + "10216": [0.35001, 0.85, 0, 0], + "10217": [0.35001, 0.85, 0, 0], + "10752": [0.25001, 0.75, 0, 0], + "10753": [0.25001, 0.75, 0, 0], + "10754": [0.25001, 0.75, 0, 0], + "10756": [0.25001, 0.75, 0, 0], + "10758": [0.25001, 0.75, 0, 0] + }, + "Size2-Regular": { + "40": [0.65002, 1.15, 0, 0], + "41": [0.65002, 1.15, 0, 0], + "47": [0.65002, 1.15, 0, 0], + "91": [0.65002, 1.15, 0, 0], + "92": [0.65002, 1.15, 0, 0], + "93": [0.65002, 1.15, 0, 0], + "123": [0.65002, 1.15, 0, 0], + "125": [0.65002, 1.15, 0, 0], + "710": [0, 0.75, 0, 0], + "732": [0, 0.75, 0, 0], + "770": [0, 0.75, 0, 0], + "771": [0, 0.75, 0, 0], + "8719": [0.55001, 1.05, 0, 0], + "8720": [0.55001, 1.05, 0, 0], + "8721": [0.55001, 1.05, 0, 0], + "8730": [0.65002, 1.15, 0, 0], + "8747": [0.86225, 1.36, 0.44445, 0], + "8748": [0.862, 1.36, 0.44445, 0], + "8749": [0.862, 1.36, 0.44445, 0], + "8750": [0.86225, 1.36, 0.44445, 0], + "8896": [0.55001, 1.05, 0, 0], + "8897": [0.55001, 1.05, 0, 0], + "8898": [0.55001, 1.05, 0, 0], + "8899": [0.55001, 1.05, 0, 0], + "8968": [0.65002, 1.15, 0, 0], + "8969": [0.65002, 1.15, 0, 0], + "8970": [0.65002, 1.15, 0, 0], + "8971": [0.65002, 1.15, 0, 0], + "10216": [0.65002, 1.15, 0, 0], + "10217": [0.65002, 1.15, 0, 0], + "10752": [0.55001, 1.05, 0, 0], + "10753": [0.55001, 1.05, 0, 0], + "10754": [0.55001, 1.05, 0, 0], + "10756": [0.55001, 1.05, 0, 0], + "10758": [0.55001, 1.05, 0, 0] + }, + "Size3-Regular": { + "40": [0.95003, 1.45, 0, 0], + "41": [0.95003, 1.45, 0, 0], + "47": [0.95003, 1.45, 0, 0], + "91": [0.95003, 1.45, 0, 0], + "92": [0.95003, 1.45, 0, 0], + "93": [0.95003, 1.45, 0, 0], + "123": [0.95003, 1.45, 0, 0], + "125": [0.95003, 1.45, 0, 0], + "710": [0, 0.75, 0, 0], + "732": [0, 0.75, 0, 0], + "770": [0, 0.75, 0, 0], + "771": [0, 0.75, 0, 0], + "8730": [0.95003, 1.45, 0, 0], + "8968": [0.95003, 1.45, 0, 0], + "8969": [0.95003, 1.45, 0, 0], + "8970": [0.95003, 1.45, 0, 0], + "8971": [0.95003, 1.45, 0, 0], + "10216": [0.95003, 1.45, 0, 0], + "10217": [0.95003, 1.45, 0, 0] + }, + "Size4-Regular": { + "40": [1.25003, 1.75, 0, 0], + "41": [1.25003, 1.75, 0, 0], + "47": [1.25003, 1.75, 0, 0], + "91": [1.25003, 1.75, 0, 0], + "92": [1.25003, 1.75, 0, 0], + "93": [1.25003, 1.75, 0, 0], + "123": [1.25003, 1.75, 0, 0], + "125": [1.25003, 1.75, 0, 0], + "710": [0, 0.825, 0, 0], + "732": [0, 0.825, 0, 0], + "770": [0, 0.825, 0, 0], + "771": [0, 0.825, 0, 0], + "8730": [1.25003, 1.75, 0, 0], + "8968": [1.25003, 1.75, 0, 0], + "8969": [1.25003, 1.75, 0, 0], + "8970": [1.25003, 1.75, 0, 0], + "8971": [1.25003, 1.75, 0, 0], + "9115": [0.64502, 1.155, 0, 0], + "9116": [1e-05, 0.6, 0, 0], + "9117": [0.64502, 1.155, 0, 0], + "9118": [0.64502, 1.155, 0, 0], + "9119": [1e-05, 0.6, 0, 0], + "9120": [0.64502, 1.155, 0, 0], + "9121": [0.64502, 1.155, 0, 0], + "9122": [-0.00099, 0.601, 0, 0], + "9123": [0.64502, 1.155, 0, 0], + "9124": [0.64502, 1.155, 0, 0], + "9125": [-0.00099, 0.601, 0, 0], + "9126": [0.64502, 1.155, 0, 0], + "9127": [1e-05, 0.9, 0, 0], + "9128": [0.65002, 1.15, 0, 0], + "9129": [0.90001, 0, 0, 0], + "9130": [0, 0.3, 0, 0], + "9131": [1e-05, 0.9, 0, 0], + "9132": [0.65002, 1.15, 0, 0], + "9133": [0.90001, 0, 0, 0], + "9143": [0.88502, 0.915, 0, 0], + "10216": [1.25003, 1.75, 0, 0], + "10217": [1.25003, 1.75, 0, 0], + "57344": [-0.00499, 0.605, 0, 0], + "57345": [-0.00499, 0.605, 0, 0], + "57680": [0, 0.12, 0, 0], + "57681": [0, 0.12, 0, 0], + "57682": [0, 0.12, 0, 0], + "57683": [0, 0.12, 0, 0] + }, + "Typewriter-Regular": { + "33": [0, 0.61111, 0, 0], + "34": [0, 0.61111, 0, 0], + "35": [0, 0.61111, 0, 0], + "36": [0.08333, 0.69444, 0, 0], + "37": [0.08333, 0.69444, 0, 0], + "38": [0, 0.61111, 0, 0], + "39": [0, 0.61111, 0, 0], + "40": [0.08333, 0.69444, 0, 0], + "41": [0.08333, 0.69444, 0, 0], + "42": [0, 0.52083, 0, 0], + "43": [-0.08056, 0.53055, 0, 0], + "44": [0.13889, 0.125, 0, 0], + "45": [-0.08056, 0.53055, 0, 0], + "46": [0, 0.125, 0, 0], + "47": [0.08333, 0.69444, 0, 0], + "48": [0, 0.61111, 0, 0], + "49": [0, 0.61111, 0, 0], + "50": [0, 0.61111, 0, 0], + "51": [0, 0.61111, 0, 0], + "52": [0, 0.61111, 0, 0], + "53": [0, 0.61111, 0, 0], + "54": [0, 0.61111, 0, 0], + "55": [0, 0.61111, 0, 0], + "56": [0, 0.61111, 0, 0], + "57": [0, 0.61111, 0, 0], + "58": [0, 0.43056, 0, 0], + "59": [0.13889, 0.43056, 0, 0], + "60": [-0.05556, 0.55556, 0, 0], + "61": [-0.19549, 0.41562, 0, 0], + "62": [-0.05556, 0.55556, 0, 0], + "63": [0, 0.61111, 0, 0], + "64": [0, 0.61111, 0, 0], + "65": [0, 0.61111, 0, 0], + "66": [0, 0.61111, 0, 0], + "67": [0, 0.61111, 0, 0], + "68": [0, 0.61111, 0, 0], + "69": [0, 0.61111, 0, 0], + "70": [0, 0.61111, 0, 0], + "71": [0, 0.61111, 0, 0], + "72": [0, 0.61111, 0, 0], + "73": [0, 0.61111, 0, 0], + "74": [0, 0.61111, 0, 0], + "75": [0, 0.61111, 0, 0], + "76": [0, 0.61111, 0, 0], + "77": [0, 0.61111, 0, 0], + "78": [0, 0.61111, 0, 0], + "79": [0, 0.61111, 0, 0], + "80": [0, 0.61111, 0, 0], + "81": [0.13889, 0.61111, 0, 0], + "82": [0, 0.61111, 0, 0], + "83": [0, 0.61111, 0, 0], + "84": [0, 0.61111, 0, 0], + "85": [0, 0.61111, 0, 0], + "86": [0, 0.61111, 0, 0], + "87": [0, 0.61111, 0, 0], + "88": [0, 0.61111, 0, 0], + "89": [0, 0.61111, 0, 0], + "90": [0, 0.61111, 0, 0], + "91": [0.08333, 0.69444, 0, 0], + "92": [0.08333, 0.69444, 0, 0], + "93": [0.08333, 0.69444, 0, 0], + "94": [0, 0.61111, 0, 0], + "95": [0.09514, 0, 0, 0], + "96": [0, 0.61111, 0, 0], + "97": [0, 0.43056, 0, 0], + "98": [0, 0.61111, 0, 0], + "99": [0, 0.43056, 0, 0], + "100": [0, 0.61111, 0, 0], + "101": [0, 0.43056, 0, 0], + "102": [0, 0.61111, 0, 0], + "103": [0.22222, 0.43056, 0, 0], + "104": [0, 0.61111, 0, 0], + "105": [0, 0.61111, 0, 0], + "106": [0.22222, 0.61111, 0, 0], + "107": [0, 0.61111, 0, 0], + "108": [0, 0.61111, 0, 0], + "109": [0, 0.43056, 0, 0], + "110": [0, 0.43056, 0, 0], + "111": [0, 0.43056, 0, 0], + "112": [0.22222, 0.43056, 0, 0], + "113": [0.22222, 0.43056, 0, 0], + "114": [0, 0.43056, 0, 0], + "115": [0, 0.43056, 0, 0], + "116": [0, 0.55358, 0, 0], + "117": [0, 0.43056, 0, 0], + "118": [0, 0.43056, 0, 0], + "119": [0, 0.43056, 0, 0], + "120": [0, 0.43056, 0, 0], + "121": [0.22222, 0.43056, 0, 0], + "122": [0, 0.43056, 0, 0], + "123": [0.08333, 0.69444, 0, 0], + "124": [0.08333, 0.69444, 0, 0], + "125": [0.08333, 0.69444, 0, 0], + "126": [0, 0.61111, 0, 0], + "127": [0, 0.61111, 0, 0], + "305": [0, 0.43056, 0, 0], + "567": [0.22222, 0.43056, 0, 0], + "768": [0, 0.61111, 0, 0], + "769": [0, 0.61111, 0, 0], + "770": [0, 0.61111, 0, 0], + "771": [0, 0.61111, 0, 0], + "772": [0, 0.56555, 0, 0], + "774": [0, 0.61111, 0, 0], + "776": [0, 0.61111, 0, 0], + "778": [0, 0.61111, 0, 0], + "780": [0, 0.56597, 0, 0], + "915": [0, 0.61111, 0, 0], + "916": [0, 0.61111, 0, 0], + "920": [0, 0.61111, 0, 0], + "923": [0, 0.61111, 0, 0], + "926": [0, 0.61111, 0, 0], + "928": [0, 0.61111, 0, 0], + "931": [0, 0.61111, 0, 0], + "933": [0, 0.61111, 0, 0], + "934": [0, 0.61111, 0, 0], + "936": [0, 0.61111, 0, 0], + "937": [0, 0.61111, 0, 0], + "2018": [0, 0.61111, 0, 0], + "2019": [0, 0.61111, 0, 0], + "8242": [0, 0.61111, 0, 0] + } +}; + +var cjkRegex = unicodeRegexes.cjkRegex; + +/** + * This file contains metrics regarding fonts and individual symbols. The sigma + * and xi variables, as well as the metricMap map contain data extracted from + * TeX, TeX font metrics, and the TTF files. These data are then exposed via the + * `metrics` variable and the getCharacterMetrics function. + */ + +// In TeX, there are actually three sets of dimensions, one for each of +// textstyle, scriptstyle, and scriptscriptstyle. These are provided in the +// the arrays below, in that order. +// +// The font metrics are stored in fonts cmsy10, cmsy7, and cmsy5 respsectively. +// This was determined by running the folllowing script: +// +// latex -interaction=nonstopmode \ +// '\documentclass{article}\usepackage{amsmath}\begin{document}' \ +// '$a$ \expandafter\show\the\textfont2' \ +// '\expandafter\show\the\scriptfont2' \ +// '\expandafter\show\the\scriptscriptfont2' \ +// '\stop' +// +// The metrics themselves were retreived using the following commands: +// +// tftopl cmsy10 +// tftopl cmsy7 +// tftopl cmsy5 +// +// The output of each of these commands is quite lengthy. The only part we +// care about is the FONTDIMEN section. Each value is measured in EMs. +var sigmas$1 = { + slant: [0.250, 0.250, 0.250], // sigma1 + space: [0.000, 0.000, 0.000], // sigma2 + stretch: [0.000, 0.000, 0.000], // sigma3 + shrink: [0.000, 0.000, 0.000], // sigma4 + xHeight: [0.431, 0.431, 0.431], // sigma5 + quad: [1.000, 1.171, 1.472], // sigma6 + extraSpace: [0.000, 0.000, 0.000], // sigma7 + num1: [0.677, 0.732, 0.925], // sigma8 + num2: [0.394, 0.384, 0.387], // sigma9 + num3: [0.444, 0.471, 0.504], // sigma10 + denom1: [0.686, 0.752, 1.025], // sigma11 + denom2: [0.345, 0.344, 0.532], // sigma12 + sup1: [0.413, 0.503, 0.504], // sigma13 + sup2: [0.363, 0.431, 0.404], // sigma14 + sup3: [0.289, 0.286, 0.294], // sigma15 + sub1: [0.150, 0.143, 0.200], // sigma16 + sub2: [0.247, 0.286, 0.400], // sigma17 + supDrop: [0.386, 0.353, 0.494], // sigma18 + subDrop: [0.050, 0.071, 0.100], // sigma19 + delim1: [2.390, 1.700, 1.980], // sigma20 + delim2: [1.010, 1.157, 1.420], // sigma21 + axisHeight: [0.250, 0.250, 0.250] // sigma22 +}; + +var xi8 = 0.04; +var xi9 = 0.111; +var xi10 = 0.166; +var xi11 = 0.2; +var xi12 = 0.6; +var xi13 = 0.1; + +// This value determines how large a pt is, for metrics which are defined in +// terms of pts. +// This value is also used in katex.less; if you change it make sure the values +// match. +var ptPerEm = 10.0; + +// The space between adjacent `|` columns in an array definition. From +// `\showthe\doublerulesep` in LaTeX. +var doubleRuleSep = 2.0 / ptPerEm; + +/** + * This is just a mapping from common names to real metrics + */ +var metrics$1 = { + defaultRuleThickness: xi8, + bigOpSpacing1: xi9, + bigOpSpacing2: xi10, + bigOpSpacing3: xi11, + bigOpSpacing4: xi12, + bigOpSpacing5: xi13, + ptPerEm: ptPerEm, + doubleRuleSep: doubleRuleSep +}; + +// This map contains a mapping from font name and character code to character +// metrics, including height, depth, italic correction, and skew (kern from the +// character to the corresponding \skewchar) +// This map is generated via `make metrics`. It should not be changed manually. +var metricMap = fontMetricsData; + +// These are very rough approximations. We default to Times New Roman which +// should have Latin-1 and Cyrillic characters, but may not depending on the +// operating system. The metrics do not account for extra height from the +// accents. In the case of Cyrillic characters which have both ascenders and +// descenders we prefer approximations with ascenders, primarily to prevent +// the fraction bar or root line from intersecting the glyph. +// TODO(kevinb) allow union of multiple glyph metrics for better accuracy. +var extraCharacterMap = { + // Latin-1 + 'À': 'A', + 'Á': 'A', + 'Â': 'A', + 'Ã': 'A', + 'Ä': 'A', + 'Å': 'A', + 'Æ': 'A', + 'Ç': 'C', + 'È': 'E', + 'É': 'E', + 'Ê': 'E', + 'Ë': 'E', + 'Ì': 'I', + 'Í': 'I', + 'Î': 'I', + 'Ï': 'I', + 'Ð': 'D', + 'Ñ': 'N', + 'Ò': 'O', + 'Ó': 'O', + 'Ô': 'O', + 'Õ': 'O', + 'Ö': 'O', + 'Ø': 'O', + 'Ù': 'U', + 'Ú': 'U', + 'Û': 'U', + 'Ü': 'U', + 'Ý': 'Y', + 'Þ': 'o', + 'ß': 'B', + 'à': 'a', + 'á': 'a', + 'â': 'a', + 'ã': 'a', + 'ä': 'a', + 'å': 'a', + 'æ': 'a', + 'ç': 'c', + 'è': 'e', + 'é': 'e', + 'ê': 'e', + 'ë': 'e', + 'ì': 'i', + 'í': 'i', + 'î': 'i', + 'ï': 'i', + 'ð': 'd', + 'ñ': 'n', + 'ò': 'o', + 'ó': 'o', + 'ô': 'o', + 'õ': 'o', + 'ö': 'o', + 'ø': 'o', + 'ù': 'u', + 'ú': 'u', + 'û': 'u', + 'ü': 'u', + 'ý': 'y', + 'þ': 'o', + 'ÿ': 'y', + + // Cyrillic + 'А': 'A', + 'Б': 'B', + 'В': 'B', + 'Г': 'F', + 'Д': 'A', + 'Е': 'E', + 'Ж': 'K', + 'З': '3', + 'И': 'N', + 'Й': 'N', + 'К': 'K', + 'Л': 'N', + 'М': 'M', + 'Н': 'H', + 'О': 'O', + 'П': 'N', + 'Р': 'P', + 'С': 'C', + 'Т': 'T', + 'У': 'y', + 'Ф': 'O', + 'Х': 'X', + 'Ц': 'U', + 'Ч': 'h', + 'Ш': 'W', + 'Щ': 'W', + 'Ъ': 'B', + 'Ы': 'X', + 'Ь': 'B', + 'Э': '3', + 'Ю': 'X', + 'Я': 'R', + 'а': 'a', + 'б': 'b', + 'в': 'a', + 'г': 'r', + 'д': 'y', + 'е': 'e', + 'ж': 'm', + 'з': 'e', + 'и': 'n', + 'й': 'n', + 'к': 'n', + 'л': 'n', + 'м': 'm', + 'н': 'n', + 'о': 'o', + 'п': 'n', + 'р': 'p', + 'с': 'c', + 'т': 'o', + 'у': 'y', + 'ф': 'b', + 'х': 'x', + 'ц': 'n', + 'ч': 'n', + 'ш': 'w', + 'щ': 'w', + 'ъ': 'a', + 'ы': 'm', + 'ь': 'a', + 'э': 'e', + 'ю': 'm', + 'я': 'r' +}; + +/** + * This function is a convenience function for looking up information in the + * metricMap table. It takes a character as a string, and a style. + * + * Note: the `width` property may be undefined if fontMetricsData.js wasn't + * built using `Make extended_metrics`. + */ +var getCharacterMetrics = function(character, style) { + var ch = character.charCodeAt(0); + if (character[0] in extraCharacterMap) { + ch = extraCharacterMap[character[0]].charCodeAt(0); + } else if (cjkRegex.test(character[0])) { + ch = 'M'.charCodeAt(0); + } + var metrics = metricMap[style][ch]; + if (metrics) { + return { + depth: metrics[0], + height: metrics[1], + italic: metrics[2], + skew: metrics[3], + width: metrics[4] + }; + } +}; + +var fontMetrics$1 = { + metrics: metrics$1, + sigmas: sigmas$1, + getCharacterMetrics: getCharacterMetrics +}; + +/** + * This file contains information and classes for the various kinds of styles + * used in TeX. It provides a generic `Style` class, which holds information + * about a specific style. It then provides instances of all the different kinds + * of styles possible, and provides functions to move between them and get + * information about them. + */ + +var sigmas = fontMetrics$1.sigmas; + +var metrics = [{}, {}, {}]; +var i$1; +for (var key in sigmas) { + if (sigmas.hasOwnProperty(key)) { + for (i$1 = 0; i$1 < 3; i$1++) { + metrics[i$1][key] = sigmas[key][i$1]; + } + } +} +for (i$1 = 0; i$1 < 3; i$1++) { + metrics[i$1].emPerEx = sigmas.xHeight[i$1] / sigmas.quad[i$1]; +} + +/** + * The main style class. Contains a unique id for the style, a size (which is + * the same for cramped and uncramped version of a style), a cramped flag, and a + * size multiplier, which gives the size difference between a style and + * textstyle. + */ +function Style$2(id, size, multiplier, cramped) { + this.id = id; + this.size = size; + this.cramped = cramped; + this.sizeMultiplier = multiplier; + this.metrics = metrics[size > 0 ? size - 1 : 0]; +} + +/** + * Get the style of a superscript given a base in the current style. + */ +Style$2.prototype.sup = function() { + return styles$1[sup[this.id]]; +}; + +/** + * Get the style of a subscript given a base in the current style. + */ +Style$2.prototype.sub = function() { + return styles$1[sub[this.id]]; +}; + +/** + * Get the style of a fraction numerator given the fraction in the current + * style. + */ +Style$2.prototype.fracNum = function() { + return styles$1[fracNum[this.id]]; +}; + +/** + * Get the style of a fraction denominator given the fraction in the current + * style. + */ +Style$2.prototype.fracDen = function() { + return styles$1[fracDen[this.id]]; +}; + +/** + * Get the cramped version of a style (in particular, cramping a cramped style + * doesn't change the style). + */ +Style$2.prototype.cramp = function() { + return styles$1[cramp[this.id]]; +}; + +/** + * HTML class name, like "displaystyle cramped" + */ +Style$2.prototype.cls = function() { + return sizeNames[this.size] + (this.cramped ? " cramped" : " uncramped"); +}; + +/** + * HTML Reset class name, like "reset-textstyle" + */ +Style$2.prototype.reset = function() { + return resetNames[this.size]; +}; + +/** + * Return if this style is tightly spaced (scriptstyle/scriptscriptstyle) + */ +Style$2.prototype.isTight = function() { + return this.size >= 2; +}; + +// IDs of the different styles +var D = 0; +var Dc = 1; +var T = 2; +var Tc = 3; +var S = 4; +var Sc = 5; +var SS = 6; +var SSc = 7; + +// String names for the different sizes +var sizeNames = [ + "displaystyle textstyle", + "textstyle", + "scriptstyle", + "scriptscriptstyle" +]; + +// Reset names for the different sizes +var resetNames = [ + "reset-textstyle", + "reset-textstyle", + "reset-scriptstyle", + "reset-scriptscriptstyle" +]; + +// Instances of the different styles +var styles$1 = [ + new Style$2(D, 0, 1.0, false), + new Style$2(Dc, 0, 1.0, true), + new Style$2(T, 1, 1.0, false), + new Style$2(Tc, 1, 1.0, true), + new Style$2(S, 2, 0.7, false), + new Style$2(Sc, 2, 0.7, true), + new Style$2(SS, 3, 0.5, false), + new Style$2(SSc, 3, 0.5, true) +]; + +// Lookup tables for switching from one style to another +var sup = [S, Sc, S, Sc, SS, SSc, SS, SSc]; +var sub = [Sc, Sc, Sc, Sc, SSc, SSc, SSc, SSc]; +var fracNum = [T, Tc, S, Sc, SS, SSc, SS, SSc]; +var fracDen = [Tc, Tc, Sc, Sc, SSc, SSc, SSc, SSc]; +var cramp = [Dc, Dc, Tc, Tc, Sc, Sc, SSc, SSc]; + +// We only export some of the styles. Also, we don't export the `Style` class so +// no more styles can be generated. +var Style_1 = { + DISPLAY: styles$1[D], + TEXT: styles$1[T], + SCRIPT: styles$1[S], + SCRIPTSCRIPT: styles$1[SS] +}; + +/** + * This file contains a list of utility functions which are useful in other + * files. + */ + +/** + * Provide an `indexOf` function which works in IE8, but defers to native if + * possible. + */ +var nativeIndexOf = Array.prototype.indexOf; +var indexOf = function(list, elem) { + if (list == null) { + return -1; + } + if (nativeIndexOf && list.indexOf === nativeIndexOf) { + return list.indexOf(elem); + } + var i = 0; + var l = list.length; + for (; i < l; i++) { + if (list[i] === elem) { + return i; + } + } + return -1; +}; + +/** + * Return whether an element is contained in a list + */ +var contains = function(list, elem) { + return indexOf(list, elem) !== -1; +}; + +/** + * Provide a default value if a setting is undefined + */ +var deflt = function(setting, defaultIfUndefined) { + return setting === undefined ? defaultIfUndefined : setting; +}; + +// hyphenate and escape adapted from Facebook's React under Apache 2 license + +var uppercase = /([A-Z])/g; +var hyphenate = function(str) { + return str.replace(uppercase, "-$1").toLowerCase(); +}; + +var ESCAPE_LOOKUP = { + "&": "&", + ">": ">", + "<": "<", + "\"": """, + "'": "'" +}; + +var ESCAPE_REGEX = /[&><"']/g; + +function escaper(match) { + return ESCAPE_LOOKUP[match]; +} + +/** + * Escapes text to prevent scripting attacks. + * + * @param {*} text Text value to escape. + * @return {string} An escaped string. + */ +function escape$1(text) { + return ("" + text).replace(ESCAPE_REGEX, escaper); +} + +/** + * A function to set the text content of a DOM element in all supported + * browsers. Note that we don't define this if there is no document. + */ +var setTextContent; +if (typeof document !== "undefined") { + var testNode = document.createElement("span"); + if ("textContent" in testNode) { + setTextContent = function(node, text) { + node.textContent = text; + }; + } else { + setTextContent = function(node, text) { + node.innerText = text; + }; + } +} + +/** + * A function to clear a node. + */ +function clearNode(node) { + setTextContent(node, ""); +} + +var utils$4 = { + contains: contains, + deflt: deflt, + escape: escape$1, + hyphenate: hyphenate, + indexOf: indexOf, + setTextContent: setTextContent, + clearNode: clearNode +}; + +/** + * These objects store the data about the DOM nodes we create, as well as some + * extra data. They can then be transformed into real DOM nodes with the + * `toNode` function or HTML markup using `toMarkup`. They are useful for both + * storing extra properties on the nodes, as well as providing a way to easily + * work with the DOM. + * + * Similar functions for working with MathML nodes exist in mathMLTree.js. + */ +var unicodeRegexes$2 = unicodeRegexes; +var utils$3 = utils$4; + +/** + * Create an HTML className based on a list of classes. In addition to joining + * with spaces, we also remove null or empty classes. + */ +var createClass = function(classes) { + classes = classes.slice(); + for (var i = classes.length - 1; i >= 0; i--) { + if (!classes[i]) { + classes.splice(i, 1); + } + } + + return classes.join(" "); +}; + +/** + * This node represents a span node, with a className, a list of children, and + * an inline style. It also contains information about its height, depth, and + * maxFontSize. + */ +function span(classes, children, options) { + this.classes = classes || []; + this.children = children || []; + this.height = 0; + this.depth = 0; + this.maxFontSize = 0; + this.style = {}; + this.attributes = {}; + if (options) { + if (options.style.isTight()) { + this.classes.push("mtight"); + } + if (options.getColor()) { + this.style.color = options.getColor(); + } + } +} + +/** + * Sets an arbitrary attribute on the span. Warning: use this wisely. Not all + * browsers support attributes the same, and having too many custom attributes + * is probably bad. + */ +span.prototype.setAttribute = function(attribute, value) { + this.attributes[attribute] = value; +}; + +span.prototype.tryCombine = function(sibling) { + return false; +}; + +/** + * Convert the span into an HTML node + */ +span.prototype.toNode = function() { + var this$1 = this; + + var span = document.createElement("span"); + + // Apply the class + span.className = createClass(this.classes); + + // Apply inline styles + for (var style in this.style) { + if (Object.prototype.hasOwnProperty.call(this$1.style, style)) { + span.style[style] = this$1.style[style]; + } + } + + // Apply attributes + for (var attr in this.attributes) { + if (Object.prototype.hasOwnProperty.call(this$1.attributes, attr)) { + span.setAttribute(attr, this$1.attributes[attr]); + } + } + + // Append the children, also as HTML nodes + for (var i = 0; i < this.children.length; i++) { + span.appendChild(this$1.children[i].toNode()); + } + + return span; +}; + +/** + * Convert the span into an HTML markup string + */ +span.prototype.toMarkup = function() { + var this$1 = this; + + var markup = " 0 + || createClass(this.classes) !== createClass(sibling.classes) + || this.skew !== sibling.skew + || this.maxFontSize !== sibling.maxFontSize) { + return false; + } + for (var style in this.style) { + if (this$1.style.hasOwnProperty(style) + && this$1.style[style] !== sibling.style[style]) { + return false; + } + } + for (style in sibling.style) { + if (sibling.style.hasOwnProperty(style) + && this$1.style[style] !== sibling.style[style]) { + return false; + } + } + this.value += sibling.value; + this.height = Math.max(this.height, sibling.height); + this.depth = Math.max(this.depth, sibling.depth); + this.italic = sibling.italic; + return true; +}; + +/** + * Creates a text node or span from a symbol node. Note that a span is only + * created if it is needed. + */ +symbolNode.prototype.toNode = function() { + var this$1 = this; + + var node = document.createTextNode(this.value); + var span = null; + + if (this.italic > 0) { + span = document.createElement("span"); + span.style.marginRight = this.italic + "em"; + } + + if (this.classes.length > 0) { + span = span || document.createElement("span"); + span.className = createClass(this.classes); + } + + for (var style in this.style) { + if (this$1.style.hasOwnProperty(style)) { + span = span || document.createElement("span"); + span.style[style] = this$1.style[style]; + } + } + + if (span) { + span.appendChild(node); + return span; + } else { + return node; + } +}; + +/** + * Creates markup for a symbol node. + */ +symbolNode.prototype.toMarkup = function() { + var this$1 = this; + + // TODO(alpert): More duplication than I'd like from + // span.prototype.toMarkup and symbolNode.prototype.toNode... + var needsSpan = false; + + var markup = " 0) { + styles += "margin-right:" + this.italic + "em;"; + } + for (var style in this.style) { + if (this$1.style.hasOwnProperty(style)) { + styles += utils$3.hyphenate(style) + ":" + this$1.style[style] + ";"; + } + } + + if (styles) { + needsSpan = true; + markup += " style=\"" + utils$3.escape(styles) + "\""; + } + + var escaped = utils$3.escape(this.value); + if (needsSpan) { + markup += ">"; + markup += escaped; + markup += ""; + return markup; + } else { + return escaped; + } +}; + +var domTree$2 = { + span: span, + documentFragment: documentFragment, + symbolNode: symbolNode +}; + +var symbols$1 = createCommonjsModule(function (module) { +/** + * This file holds a list of all no-argument functions and single-character + * symbols (like 'a' or ';'). + * + * For each of the symbols, there are three properties they can have: + * - font (required): the font to be used for this symbol. Either "main" (the + normal font), or "ams" (the ams fonts). + * - group (required): the ParseNode group type the symbol should have (i.e. + "textord", "mathord", etc). + See https://github.com/Khan/KaTeX/wiki/Examining-TeX#group-types + * - replace: the character that this symbol or function should be + * replaced with (i.e. "\phi" has a replace value of "\u03d5", the phi + * character in the main font). + * + * The outermost map in the table indicates what mode the symbols should be + * accepted in (e.g. "math" or "text"). + */ + +module.exports = { + math: {}, + text: {} +}; + +function defineSymbol(mode, font, group, replace, name) { + module.exports[mode][name] = { + font: font, + group: group, + replace: replace + }; +} + +// Some abbreviations for commonly used strings. +// This helps minify the code, and also spotting typos using jshint. + +// modes: +var math = "math"; +var text = "text"; + +// fonts: +var main = "main"; +var ams = "ams"; + +// groups: +var accent = "accent"; +var bin = "bin"; +var close = "close"; +var inner = "inner"; +var mathord = "mathord"; +var op = "op"; +var open = "open"; +var punct = "punct"; +var rel = "rel"; +var spacing = "spacing"; +var textord = "textord"; + +// Now comes the symbol table + +// Relation Symbols +defineSymbol(math, main, rel, "\u2261", "\\equiv"); +defineSymbol(math, main, rel, "\u227a", "\\prec"); +defineSymbol(math, main, rel, "\u227b", "\\succ"); +defineSymbol(math, main, rel, "\u223c", "\\sim"); +defineSymbol(math, main, rel, "\u22a5", "\\perp"); +defineSymbol(math, main, rel, "\u2aaf", "\\preceq"); +defineSymbol(math, main, rel, "\u2ab0", "\\succeq"); +defineSymbol(math, main, rel, "\u2243", "\\simeq"); +defineSymbol(math, main, rel, "\u2223", "\\mid"); +defineSymbol(math, main, rel, "\u226a", "\\ll"); +defineSymbol(math, main, rel, "\u226b", "\\gg"); +defineSymbol(math, main, rel, "\u224d", "\\asymp"); +defineSymbol(math, main, rel, "\u2225", "\\parallel"); +defineSymbol(math, main, rel, "\u22c8", "\\bowtie"); +defineSymbol(math, main, rel, "\u2323", "\\smile"); +defineSymbol(math, main, rel, "\u2291", "\\sqsubseteq"); +defineSymbol(math, main, rel, "\u2292", "\\sqsupseteq"); +defineSymbol(math, main, rel, "\u2250", "\\doteq"); +defineSymbol(math, main, rel, "\u2322", "\\frown"); +defineSymbol(math, main, rel, "\u220b", "\\ni"); +defineSymbol(math, main, rel, "\u221d", "\\propto"); +defineSymbol(math, main, rel, "\u22a2", "\\vdash"); +defineSymbol(math, main, rel, "\u22a3", "\\dashv"); +defineSymbol(math, main, rel, "\u220b", "\\owns"); + +// Punctuation +defineSymbol(math, main, punct, "\u002e", "\\ldotp"); +defineSymbol(math, main, punct, "\u22c5", "\\cdotp"); + +// Misc Symbols +defineSymbol(math, main, textord, "\u0023", "\\#"); +defineSymbol(text, main, textord, "\u0023", "\\#"); +defineSymbol(math, main, textord, "\u0026", "\\&"); +defineSymbol(text, main, textord, "\u0026", "\\&"); +defineSymbol(math, main, textord, "\u2135", "\\aleph"); +defineSymbol(math, main, textord, "\u2200", "\\forall"); +defineSymbol(math, main, textord, "\u210f", "\\hbar"); +defineSymbol(math, main, textord, "\u2203", "\\exists"); +defineSymbol(math, main, textord, "\u2207", "\\nabla"); +defineSymbol(math, main, textord, "\u266d", "\\flat"); +defineSymbol(math, main, textord, "\u2113", "\\ell"); +defineSymbol(math, main, textord, "\u266e", "\\natural"); +defineSymbol(math, main, textord, "\u2663", "\\clubsuit"); +defineSymbol(math, main, textord, "\u2118", "\\wp"); +defineSymbol(math, main, textord, "\u266f", "\\sharp"); +defineSymbol(math, main, textord, "\u2662", "\\diamondsuit"); +defineSymbol(math, main, textord, "\u211c", "\\Re"); +defineSymbol(math, main, textord, "\u2661", "\\heartsuit"); +defineSymbol(math, main, textord, "\u2111", "\\Im"); +defineSymbol(math, main, textord, "\u2660", "\\spadesuit"); + +// Math and Text +defineSymbol(math, main, textord, "\u2020", "\\dag"); +defineSymbol(math, main, textord, "\u2021", "\\ddag"); + +// Large Delimiters +defineSymbol(math, main, close, "\u23b1", "\\rmoustache"); +defineSymbol(math, main, open, "\u23b0", "\\lmoustache"); +defineSymbol(math, main, close, "\u27ef", "\\rgroup"); +defineSymbol(math, main, open, "\u27ee", "\\lgroup"); + +// Binary Operators +defineSymbol(math, main, bin, "\u2213", "\\mp"); +defineSymbol(math, main, bin, "\u2296", "\\ominus"); +defineSymbol(math, main, bin, "\u228e", "\\uplus"); +defineSymbol(math, main, bin, "\u2293", "\\sqcap"); +defineSymbol(math, main, bin, "\u2217", "\\ast"); +defineSymbol(math, main, bin, "\u2294", "\\sqcup"); +defineSymbol(math, main, bin, "\u25ef", "\\bigcirc"); +defineSymbol(math, main, bin, "\u2219", "\\bullet"); +defineSymbol(math, main, bin, "\u2021", "\\ddagger"); +defineSymbol(math, main, bin, "\u2240", "\\wr"); +defineSymbol(math, main, bin, "\u2a3f", "\\amalg"); + +// Arrow Symbols +defineSymbol(math, main, rel, "\u27f5", "\\longleftarrow"); +defineSymbol(math, main, rel, "\u21d0", "\\Leftarrow"); +defineSymbol(math, main, rel, "\u27f8", "\\Longleftarrow"); +defineSymbol(math, main, rel, "\u27f6", "\\longrightarrow"); +defineSymbol(math, main, rel, "\u21d2", "\\Rightarrow"); +defineSymbol(math, main, rel, "\u27f9", "\\Longrightarrow"); +defineSymbol(math, main, rel, "\u2194", "\\leftrightarrow"); +defineSymbol(math, main, rel, "\u27f7", "\\longleftrightarrow"); +defineSymbol(math, main, rel, "\u21d4", "\\Leftrightarrow"); +defineSymbol(math, main, rel, "\u27fa", "\\Longleftrightarrow"); +defineSymbol(math, main, rel, "\u21a6", "\\mapsto"); +defineSymbol(math, main, rel, "\u27fc", "\\longmapsto"); +defineSymbol(math, main, rel, "\u2197", "\\nearrow"); +defineSymbol(math, main, rel, "\u21a9", "\\hookleftarrow"); +defineSymbol(math, main, rel, "\u21aa", "\\hookrightarrow"); +defineSymbol(math, main, rel, "\u2198", "\\searrow"); +defineSymbol(math, main, rel, "\u21bc", "\\leftharpoonup"); +defineSymbol(math, main, rel, "\u21c0", "\\rightharpoonup"); +defineSymbol(math, main, rel, "\u2199", "\\swarrow"); +defineSymbol(math, main, rel, "\u21bd", "\\leftharpoondown"); +defineSymbol(math, main, rel, "\u21c1", "\\rightharpoondown"); +defineSymbol(math, main, rel, "\u2196", "\\nwarrow"); +defineSymbol(math, main, rel, "\u21cc", "\\rightleftharpoons"); + +// AMS Negated Binary Relations +defineSymbol(math, ams, rel, "\u226e", "\\nless"); +defineSymbol(math, ams, rel, "\ue010", "\\nleqslant"); +defineSymbol(math, ams, rel, "\ue011", "\\nleqq"); +defineSymbol(math, ams, rel, "\u2a87", "\\lneq"); +defineSymbol(math, ams, rel, "\u2268", "\\lneqq"); +defineSymbol(math, ams, rel, "\ue00c", "\\lvertneqq"); +defineSymbol(math, ams, rel, "\u22e6", "\\lnsim"); +defineSymbol(math, ams, rel, "\u2a89", "\\lnapprox"); +defineSymbol(math, ams, rel, "\u2280", "\\nprec"); +defineSymbol(math, ams, rel, "\u22e0", "\\npreceq"); +defineSymbol(math, ams, rel, "\u22e8", "\\precnsim"); +defineSymbol(math, ams, rel, "\u2ab9", "\\precnapprox"); +defineSymbol(math, ams, rel, "\u2241", "\\nsim"); +defineSymbol(math, ams, rel, "\ue006", "\\nshortmid"); +defineSymbol(math, ams, rel, "\u2224", "\\nmid"); +defineSymbol(math, ams, rel, "\u22ac", "\\nvdash"); +defineSymbol(math, ams, rel, "\u22ad", "\\nvDash"); +defineSymbol(math, ams, rel, "\u22ea", "\\ntriangleleft"); +defineSymbol(math, ams, rel, "\u22ec", "\\ntrianglelefteq"); +defineSymbol(math, ams, rel, "\u228a", "\\subsetneq"); +defineSymbol(math, ams, rel, "\ue01a", "\\varsubsetneq"); +defineSymbol(math, ams, rel, "\u2acb", "\\subsetneqq"); +defineSymbol(math, ams, rel, "\ue017", "\\varsubsetneqq"); +defineSymbol(math, ams, rel, "\u226f", "\\ngtr"); +defineSymbol(math, ams, rel, "\ue00f", "\\ngeqslant"); +defineSymbol(math, ams, rel, "\ue00e", "\\ngeqq"); +defineSymbol(math, ams, rel, "\u2a88", "\\gneq"); +defineSymbol(math, ams, rel, "\u2269", "\\gneqq"); +defineSymbol(math, ams, rel, "\ue00d", "\\gvertneqq"); +defineSymbol(math, ams, rel, "\u22e7", "\\gnsim"); +defineSymbol(math, ams, rel, "\u2a8a", "\\gnapprox"); +defineSymbol(math, ams, rel, "\u2281", "\\nsucc"); +defineSymbol(math, ams, rel, "\u22e1", "\\nsucceq"); +defineSymbol(math, ams, rel, "\u22e9", "\\succnsim"); +defineSymbol(math, ams, rel, "\u2aba", "\\succnapprox"); +defineSymbol(math, ams, rel, "\u2246", "\\ncong"); +defineSymbol(math, ams, rel, "\ue007", "\\nshortparallel"); +defineSymbol(math, ams, rel, "\u2226", "\\nparallel"); +defineSymbol(math, ams, rel, "\u22af", "\\nVDash"); +defineSymbol(math, ams, rel, "\u22eb", "\\ntriangleright"); +defineSymbol(math, ams, rel, "\u22ed", "\\ntrianglerighteq"); +defineSymbol(math, ams, rel, "\ue018", "\\nsupseteqq"); +defineSymbol(math, ams, rel, "\u228b", "\\supsetneq"); +defineSymbol(math, ams, rel, "\ue01b", "\\varsupsetneq"); +defineSymbol(math, ams, rel, "\u2acc", "\\supsetneqq"); +defineSymbol(math, ams, rel, "\ue019", "\\varsupsetneqq"); +defineSymbol(math, ams, rel, "\u22ae", "\\nVdash"); +defineSymbol(math, ams, rel, "\u2ab5", "\\precneqq"); +defineSymbol(math, ams, rel, "\u2ab6", "\\succneqq"); +defineSymbol(math, ams, rel, "\ue016", "\\nsubseteqq"); +defineSymbol(math, ams, bin, "\u22b4", "\\unlhd"); +defineSymbol(math, ams, bin, "\u22b5", "\\unrhd"); + +// AMS Negated Arrows +defineSymbol(math, ams, rel, "\u219a", "\\nleftarrow"); +defineSymbol(math, ams, rel, "\u219b", "\\nrightarrow"); +defineSymbol(math, ams, rel, "\u21cd", "\\nLeftarrow"); +defineSymbol(math, ams, rel, "\u21cf", "\\nRightarrow"); +defineSymbol(math, ams, rel, "\u21ae", "\\nleftrightarrow"); +defineSymbol(math, ams, rel, "\u21ce", "\\nLeftrightarrow"); + +// AMS Misc +defineSymbol(math, ams, rel, "\u25b3", "\\vartriangle"); +defineSymbol(math, ams, textord, "\u210f", "\\hslash"); +defineSymbol(math, ams, textord, "\u25bd", "\\triangledown"); +defineSymbol(math, ams, textord, "\u25ca", "\\lozenge"); +defineSymbol(math, ams, textord, "\u24c8", "\\circledS"); +defineSymbol(math, ams, textord, "\u00ae", "\\circledR"); +defineSymbol(math, ams, textord, "\u2221", "\\measuredangle"); +defineSymbol(math, ams, textord, "\u2204", "\\nexists"); +defineSymbol(math, ams, textord, "\u2127", "\\mho"); +defineSymbol(math, ams, textord, "\u2132", "\\Finv"); +defineSymbol(math, ams, textord, "\u2141", "\\Game"); +defineSymbol(math, ams, textord, "\u006b", "\\Bbbk"); +defineSymbol(math, ams, textord, "\u2035", "\\backprime"); +defineSymbol(math, ams, textord, "\u25b2", "\\blacktriangle"); +defineSymbol(math, ams, textord, "\u25bc", "\\blacktriangledown"); +defineSymbol(math, ams, textord, "\u25a0", "\\blacksquare"); +defineSymbol(math, ams, textord, "\u29eb", "\\blacklozenge"); +defineSymbol(math, ams, textord, "\u2605", "\\bigstar"); +defineSymbol(math, ams, textord, "\u2222", "\\sphericalangle"); +defineSymbol(math, ams, textord, "\u2201", "\\complement"); +defineSymbol(math, ams, textord, "\u00f0", "\\eth"); +defineSymbol(math, ams, textord, "\u2571", "\\diagup"); +defineSymbol(math, ams, textord, "\u2572", "\\diagdown"); +defineSymbol(math, ams, textord, "\u25a1", "\\square"); +defineSymbol(math, ams, textord, "\u25a1", "\\Box"); +defineSymbol(math, ams, textord, "\u25ca", "\\Diamond"); +defineSymbol(math, ams, textord, "\u00a5", "\\yen"); +defineSymbol(math, ams, textord, "\u2713", "\\checkmark"); + +// AMS Hebrew +defineSymbol(math, ams, textord, "\u2136", "\\beth"); +defineSymbol(math, ams, textord, "\u2138", "\\daleth"); +defineSymbol(math, ams, textord, "\u2137", "\\gimel"); + +// AMS Greek +defineSymbol(math, ams, textord, "\u03dd", "\\digamma"); +defineSymbol(math, ams, textord, "\u03f0", "\\varkappa"); + +// AMS Delimiters +defineSymbol(math, ams, open, "\u250c", "\\ulcorner"); +defineSymbol(math, ams, close, "\u2510", "\\urcorner"); +defineSymbol(math, ams, open, "\u2514", "\\llcorner"); +defineSymbol(math, ams, close, "\u2518", "\\lrcorner"); + +// AMS Binary Relations +defineSymbol(math, ams, rel, "\u2266", "\\leqq"); +defineSymbol(math, ams, rel, "\u2a7d", "\\leqslant"); +defineSymbol(math, ams, rel, "\u2a95", "\\eqslantless"); +defineSymbol(math, ams, rel, "\u2272", "\\lesssim"); +defineSymbol(math, ams, rel, "\u2a85", "\\lessapprox"); +defineSymbol(math, ams, rel, "\u224a", "\\approxeq"); +defineSymbol(math, ams, bin, "\u22d6", "\\lessdot"); +defineSymbol(math, ams, rel, "\u22d8", "\\lll"); +defineSymbol(math, ams, rel, "\u2276", "\\lessgtr"); +defineSymbol(math, ams, rel, "\u22da", "\\lesseqgtr"); +defineSymbol(math, ams, rel, "\u2a8b", "\\lesseqqgtr"); +defineSymbol(math, ams, rel, "\u2251", "\\doteqdot"); +defineSymbol(math, ams, rel, "\u2253", "\\risingdotseq"); +defineSymbol(math, ams, rel, "\u2252", "\\fallingdotseq"); +defineSymbol(math, ams, rel, "\u223d", "\\backsim"); +defineSymbol(math, ams, rel, "\u22cd", "\\backsimeq"); +defineSymbol(math, ams, rel, "\u2ac5", "\\subseteqq"); +defineSymbol(math, ams, rel, "\u22d0", "\\Subset"); +defineSymbol(math, ams, rel, "\u228f", "\\sqsubset"); +defineSymbol(math, ams, rel, "\u227c", "\\preccurlyeq"); +defineSymbol(math, ams, rel, "\u22de", "\\curlyeqprec"); +defineSymbol(math, ams, rel, "\u227e", "\\precsim"); +defineSymbol(math, ams, rel, "\u2ab7", "\\precapprox"); +defineSymbol(math, ams, rel, "\u22b2", "\\vartriangleleft"); +defineSymbol(math, ams, rel, "\u22b4", "\\trianglelefteq"); +defineSymbol(math, ams, rel, "\u22a8", "\\vDash"); +defineSymbol(math, ams, rel, "\u22aa", "\\Vvdash"); +defineSymbol(math, ams, rel, "\u2323", "\\smallsmile"); +defineSymbol(math, ams, rel, "\u2322", "\\smallfrown"); +defineSymbol(math, ams, rel, "\u224f", "\\bumpeq"); +defineSymbol(math, ams, rel, "\u224e", "\\Bumpeq"); +defineSymbol(math, ams, rel, "\u2267", "\\geqq"); +defineSymbol(math, ams, rel, "\u2a7e", "\\geqslant"); +defineSymbol(math, ams, rel, "\u2a96", "\\eqslantgtr"); +defineSymbol(math, ams, rel, "\u2273", "\\gtrsim"); +defineSymbol(math, ams, rel, "\u2a86", "\\gtrapprox"); +defineSymbol(math, ams, bin, "\u22d7", "\\gtrdot"); +defineSymbol(math, ams, rel, "\u22d9", "\\ggg"); +defineSymbol(math, ams, rel, "\u2277", "\\gtrless"); +defineSymbol(math, ams, rel, "\u22db", "\\gtreqless"); +defineSymbol(math, ams, rel, "\u2a8c", "\\gtreqqless"); +defineSymbol(math, ams, rel, "\u2256", "\\eqcirc"); +defineSymbol(math, ams, rel, "\u2257", "\\circeq"); +defineSymbol(math, ams, rel, "\u225c", "\\triangleq"); +defineSymbol(math, ams, rel, "\u223c", "\\thicksim"); +defineSymbol(math, ams, rel, "\u2248", "\\thickapprox"); +defineSymbol(math, ams, rel, "\u2ac6", "\\supseteqq"); +defineSymbol(math, ams, rel, "\u22d1", "\\Supset"); +defineSymbol(math, ams, rel, "\u2290", "\\sqsupset"); +defineSymbol(math, ams, rel, "\u227d", "\\succcurlyeq"); +defineSymbol(math, ams, rel, "\u22df", "\\curlyeqsucc"); +defineSymbol(math, ams, rel, "\u227f", "\\succsim"); +defineSymbol(math, ams, rel, "\u2ab8", "\\succapprox"); +defineSymbol(math, ams, rel, "\u22b3", "\\vartriangleright"); +defineSymbol(math, ams, rel, "\u22b5", "\\trianglerighteq"); +defineSymbol(math, ams, rel, "\u22a9", "\\Vdash"); +defineSymbol(math, ams, rel, "\u2223", "\\shortmid"); +defineSymbol(math, ams, rel, "\u2225", "\\shortparallel"); +defineSymbol(math, ams, rel, "\u226c", "\\between"); +defineSymbol(math, ams, rel, "\u22d4", "\\pitchfork"); +defineSymbol(math, ams, rel, "\u221d", "\\varpropto"); +defineSymbol(math, ams, rel, "\u25c0", "\\blacktriangleleft"); +defineSymbol(math, ams, rel, "\u2234", "\\therefore"); +defineSymbol(math, ams, rel, "\u220d", "\\backepsilon"); +defineSymbol(math, ams, rel, "\u25b6", "\\blacktriangleright"); +defineSymbol(math, ams, rel, "\u2235", "\\because"); +defineSymbol(math, ams, rel, "\u22d8", "\\llless"); +defineSymbol(math, ams, rel, "\u22d9", "\\gggtr"); +defineSymbol(math, ams, bin, "\u22b2", "\\lhd"); +defineSymbol(math, ams, bin, "\u22b3", "\\rhd"); +defineSymbol(math, ams, rel, "\u2242", "\\eqsim"); +defineSymbol(math, main, rel, "\u22c8", "\\Join"); +defineSymbol(math, ams, rel, "\u2251", "\\Doteq"); + +// AMS Binary Operators +defineSymbol(math, ams, bin, "\u2214", "\\dotplus"); +defineSymbol(math, ams, bin, "\u2216", "\\smallsetminus"); +defineSymbol(math, ams, bin, "\u22d2", "\\Cap"); +defineSymbol(math, ams, bin, "\u22d3", "\\Cup"); +defineSymbol(math, ams, bin, "\u2a5e", "\\doublebarwedge"); +defineSymbol(math, ams, bin, "\u229f", "\\boxminus"); +defineSymbol(math, ams, bin, "\u229e", "\\boxplus"); +defineSymbol(math, ams, bin, "\u22c7", "\\divideontimes"); +defineSymbol(math, ams, bin, "\u22c9", "\\ltimes"); +defineSymbol(math, ams, bin, "\u22ca", "\\rtimes"); +defineSymbol(math, ams, bin, "\u22cb", "\\leftthreetimes"); +defineSymbol(math, ams, bin, "\u22cc", "\\rightthreetimes"); +defineSymbol(math, ams, bin, "\u22cf", "\\curlywedge"); +defineSymbol(math, ams, bin, "\u22ce", "\\curlyvee"); +defineSymbol(math, ams, bin, "\u229d", "\\circleddash"); +defineSymbol(math, ams, bin, "\u229b", "\\circledast"); +defineSymbol(math, ams, bin, "\u22c5", "\\centerdot"); +defineSymbol(math, ams, bin, "\u22ba", "\\intercal"); +defineSymbol(math, ams, bin, "\u22d2", "\\doublecap"); +defineSymbol(math, ams, bin, "\u22d3", "\\doublecup"); +defineSymbol(math, ams, bin, "\u22a0", "\\boxtimes"); + +// AMS Arrows +defineSymbol(math, ams, rel, "\u21e2", "\\dashrightarrow"); +defineSymbol(math, ams, rel, "\u21e0", "\\dashleftarrow"); +defineSymbol(math, ams, rel, "\u21c7", "\\leftleftarrows"); +defineSymbol(math, ams, rel, "\u21c6", "\\leftrightarrows"); +defineSymbol(math, ams, rel, "\u21da", "\\Lleftarrow"); +defineSymbol(math, ams, rel, "\u219e", "\\twoheadleftarrow"); +defineSymbol(math, ams, rel, "\u21a2", "\\leftarrowtail"); +defineSymbol(math, ams, rel, "\u21ab", "\\looparrowleft"); +defineSymbol(math, ams, rel, "\u21cb", "\\leftrightharpoons"); +defineSymbol(math, ams, rel, "\u21b6", "\\curvearrowleft"); +defineSymbol(math, ams, rel, "\u21ba", "\\circlearrowleft"); +defineSymbol(math, ams, rel, "\u21b0", "\\Lsh"); +defineSymbol(math, ams, rel, "\u21c8", "\\upuparrows"); +defineSymbol(math, ams, rel, "\u21bf", "\\upharpoonleft"); +defineSymbol(math, ams, rel, "\u21c3", "\\downharpoonleft"); +defineSymbol(math, ams, rel, "\u22b8", "\\multimap"); +defineSymbol(math, ams, rel, "\u21ad", "\\leftrightsquigarrow"); +defineSymbol(math, ams, rel, "\u21c9", "\\rightrightarrows"); +defineSymbol(math, ams, rel, "\u21c4", "\\rightleftarrows"); +defineSymbol(math, ams, rel, "\u21a0", "\\twoheadrightarrow"); +defineSymbol(math, ams, rel, "\u21a3", "\\rightarrowtail"); +defineSymbol(math, ams, rel, "\u21ac", "\\looparrowright"); +defineSymbol(math, ams, rel, "\u21b7", "\\curvearrowright"); +defineSymbol(math, ams, rel, "\u21bb", "\\circlearrowright"); +defineSymbol(math, ams, rel, "\u21b1", "\\Rsh"); +defineSymbol(math, ams, rel, "\u21ca", "\\downdownarrows"); +defineSymbol(math, ams, rel, "\u21be", "\\upharpoonright"); +defineSymbol(math, ams, rel, "\u21c2", "\\downharpoonright"); +defineSymbol(math, ams, rel, "\u21dd", "\\rightsquigarrow"); +defineSymbol(math, ams, rel, "\u21dd", "\\leadsto"); +defineSymbol(math, ams, rel, "\u21db", "\\Rrightarrow"); +defineSymbol(math, ams, rel, "\u21be", "\\restriction"); + +defineSymbol(math, main, textord, "\u2018", "`"); +defineSymbol(math, main, textord, "$", "\\$"); +defineSymbol(text, main, textord, "$", "\\$"); +defineSymbol(math, main, textord, "%", "\\%"); +defineSymbol(text, main, textord, "%", "\\%"); +defineSymbol(math, main, textord, "_", "\\_"); +defineSymbol(text, main, textord, "_", "\\_"); +defineSymbol(math, main, textord, "\u2220", "\\angle"); +defineSymbol(math, main, textord, "\u221e", "\\infty"); +defineSymbol(math, main, textord, "\u2032", "\\prime"); +defineSymbol(math, main, textord, "\u25b3", "\\triangle"); +defineSymbol(math, main, textord, "\u0393", "\\Gamma"); +defineSymbol(math, main, textord, "\u0394", "\\Delta"); +defineSymbol(math, main, textord, "\u0398", "\\Theta"); +defineSymbol(math, main, textord, "\u039b", "\\Lambda"); +defineSymbol(math, main, textord, "\u039e", "\\Xi"); +defineSymbol(math, main, textord, "\u03a0", "\\Pi"); +defineSymbol(math, main, textord, "\u03a3", "\\Sigma"); +defineSymbol(math, main, textord, "\u03a5", "\\Upsilon"); +defineSymbol(math, main, textord, "\u03a6", "\\Phi"); +defineSymbol(math, main, textord, "\u03a8", "\\Psi"); +defineSymbol(math, main, textord, "\u03a9", "\\Omega"); +defineSymbol(math, main, textord, "\u00ac", "\\neg"); +defineSymbol(math, main, textord, "\u00ac", "\\lnot"); +defineSymbol(math, main, textord, "\u22a4", "\\top"); +defineSymbol(math, main, textord, "\u22a5", "\\bot"); +defineSymbol(math, main, textord, "\u2205", "\\emptyset"); +defineSymbol(math, ams, textord, "\u2205", "\\varnothing"); +defineSymbol(math, main, mathord, "\u03b1", "\\alpha"); +defineSymbol(math, main, mathord, "\u03b2", "\\beta"); +defineSymbol(math, main, mathord, "\u03b3", "\\gamma"); +defineSymbol(math, main, mathord, "\u03b4", "\\delta"); +defineSymbol(math, main, mathord, "\u03f5", "\\epsilon"); +defineSymbol(math, main, mathord, "\u03b6", "\\zeta"); +defineSymbol(math, main, mathord, "\u03b7", "\\eta"); +defineSymbol(math, main, mathord, "\u03b8", "\\theta"); +defineSymbol(math, main, mathord, "\u03b9", "\\iota"); +defineSymbol(math, main, mathord, "\u03ba", "\\kappa"); +defineSymbol(math, main, mathord, "\u03bb", "\\lambda"); +defineSymbol(math, main, mathord, "\u03bc", "\\mu"); +defineSymbol(math, main, mathord, "\u03bd", "\\nu"); +defineSymbol(math, main, mathord, "\u03be", "\\xi"); +defineSymbol(math, main, mathord, "o", "\\omicron"); +defineSymbol(math, main, mathord, "\u03c0", "\\pi"); +defineSymbol(math, main, mathord, "\u03c1", "\\rho"); +defineSymbol(math, main, mathord, "\u03c3", "\\sigma"); +defineSymbol(math, main, mathord, "\u03c4", "\\tau"); +defineSymbol(math, main, mathord, "\u03c5", "\\upsilon"); +defineSymbol(math, main, mathord, "\u03d5", "\\phi"); +defineSymbol(math, main, mathord, "\u03c7", "\\chi"); +defineSymbol(math, main, mathord, "\u03c8", "\\psi"); +defineSymbol(math, main, mathord, "\u03c9", "\\omega"); +defineSymbol(math, main, mathord, "\u03b5", "\\varepsilon"); +defineSymbol(math, main, mathord, "\u03d1", "\\vartheta"); +defineSymbol(math, main, mathord, "\u03d6", "\\varpi"); +defineSymbol(math, main, mathord, "\u03f1", "\\varrho"); +defineSymbol(math, main, mathord, "\u03c2", "\\varsigma"); +defineSymbol(math, main, mathord, "\u03c6", "\\varphi"); +defineSymbol(math, main, bin, "\u2217", "*"); +defineSymbol(math, main, bin, "+", "+"); +defineSymbol(math, main, bin, "\u2212", "-"); +defineSymbol(math, main, bin, "\u22c5", "\\cdot"); +defineSymbol(math, main, bin, "\u2218", "\\circ"); +defineSymbol(math, main, bin, "\u00f7", "\\div"); +defineSymbol(math, main, bin, "\u00b1", "\\pm"); +defineSymbol(math, main, bin, "\u00d7", "\\times"); +defineSymbol(math, main, bin, "\u2229", "\\cap"); +defineSymbol(math, main, bin, "\u222a", "\\cup"); +defineSymbol(math, main, bin, "\u2216", "\\setminus"); +defineSymbol(math, main, bin, "\u2227", "\\land"); +defineSymbol(math, main, bin, "\u2228", "\\lor"); +defineSymbol(math, main, bin, "\u2227", "\\wedge"); +defineSymbol(math, main, bin, "\u2228", "\\vee"); +defineSymbol(math, main, textord, "\u221a", "\\surd"); +defineSymbol(math, main, open, "(", "("); +defineSymbol(math, main, open, "[", "["); +defineSymbol(math, main, open, "\u27e8", "\\langle"); +defineSymbol(math, main, open, "\u2223", "\\lvert"); +defineSymbol(math, main, open, "\u2225", "\\lVert"); +defineSymbol(math, main, close, ")", ")"); +defineSymbol(math, main, close, "]", "]"); +defineSymbol(math, main, close, "?", "?"); +defineSymbol(math, main, close, "!", "!"); +defineSymbol(math, main, close, "\u27e9", "\\rangle"); +defineSymbol(math, main, close, "\u2223", "\\rvert"); +defineSymbol(math, main, close, "\u2225", "\\rVert"); +defineSymbol(math, main, rel, "=", "="); +defineSymbol(math, main, rel, "<", "<"); +defineSymbol(math, main, rel, ">", ">"); +defineSymbol(math, main, rel, ":", ":"); +defineSymbol(math, main, rel, "\u2248", "\\approx"); +defineSymbol(math, main, rel, "\u2245", "\\cong"); +defineSymbol(math, main, rel, "\u2265", "\\ge"); +defineSymbol(math, main, rel, "\u2265", "\\geq"); +defineSymbol(math, main, rel, "\u2190", "\\gets"); +defineSymbol(math, main, rel, ">", "\\gt"); +defineSymbol(math, main, rel, "\u2208", "\\in"); +defineSymbol(math, main, rel, "\u2209", "\\notin"); +defineSymbol(math, main, rel, "\u2282", "\\subset"); +defineSymbol(math, main, rel, "\u2283", "\\supset"); +defineSymbol(math, main, rel, "\u2286", "\\subseteq"); +defineSymbol(math, main, rel, "\u2287", "\\supseteq"); +defineSymbol(math, ams, rel, "\u2288", "\\nsubseteq"); +defineSymbol(math, ams, rel, "\u2289", "\\nsupseteq"); +defineSymbol(math, main, rel, "\u22a8", "\\models"); +defineSymbol(math, main, rel, "\u2190", "\\leftarrow"); +defineSymbol(math, main, rel, "\u2264", "\\le"); +defineSymbol(math, main, rel, "\u2264", "\\leq"); +defineSymbol(math, main, rel, "<", "\\lt"); +defineSymbol(math, main, rel, "\u2260", "\\ne"); +defineSymbol(math, main, rel, "\u2260", "\\neq"); +defineSymbol(math, main, rel, "\u2192", "\\rightarrow"); +defineSymbol(math, main, rel, "\u2192", "\\to"); +defineSymbol(math, ams, rel, "\u2271", "\\ngeq"); +defineSymbol(math, ams, rel, "\u2270", "\\nleq"); +defineSymbol(math, main, spacing, null, "\\!"); +defineSymbol(math, main, spacing, "\u00a0", "\\ "); +defineSymbol(math, main, spacing, "\u00a0", "~"); +defineSymbol(math, main, spacing, null, "\\,"); +defineSymbol(math, main, spacing, null, "\\:"); +defineSymbol(math, main, spacing, null, "\\;"); +defineSymbol(math, main, spacing, null, "\\enspace"); +defineSymbol(math, main, spacing, null, "\\qquad"); +defineSymbol(math, main, spacing, null, "\\quad"); +defineSymbol(math, main, spacing, "\u00a0", "\\space"); +defineSymbol(math, main, punct, ",", ","); +defineSymbol(math, main, punct, ";", ";"); +defineSymbol(math, main, punct, ":", "\\colon"); +defineSymbol(math, ams, bin, "\u22bc", "\\barwedge"); +defineSymbol(math, ams, bin, "\u22bb", "\\veebar"); +defineSymbol(math, main, bin, "\u2299", "\\odot"); +defineSymbol(math, main, bin, "\u2295", "\\oplus"); +defineSymbol(math, main, bin, "\u2297", "\\otimes"); +defineSymbol(math, main, textord, "\u2202", "\\partial"); +defineSymbol(math, main, bin, "\u2298", "\\oslash"); +defineSymbol(math, ams, bin, "\u229a", "\\circledcirc"); +defineSymbol(math, ams, bin, "\u22a1", "\\boxdot"); +defineSymbol(math, main, bin, "\u25b3", "\\bigtriangleup"); +defineSymbol(math, main, bin, "\u25bd", "\\bigtriangledown"); +defineSymbol(math, main, bin, "\u2020", "\\dagger"); +defineSymbol(math, main, bin, "\u22c4", "\\diamond"); +defineSymbol(math, main, bin, "\u22c6", "\\star"); +defineSymbol(math, main, bin, "\u25c3", "\\triangleleft"); +defineSymbol(math, main, bin, "\u25b9", "\\triangleright"); +defineSymbol(math, main, open, "{", "\\{"); +defineSymbol(text, main, textord, "{", "\\{"); +defineSymbol(math, main, close, "}", "\\}"); +defineSymbol(text, main, textord, "}", "\\}"); +defineSymbol(math, main, open, "{", "\\lbrace"); +defineSymbol(math, main, close, "}", "\\rbrace"); +defineSymbol(math, main, open, "[", "\\lbrack"); +defineSymbol(math, main, close, "]", "\\rbrack"); +defineSymbol(math, main, open, "\u230a", "\\lfloor"); +defineSymbol(math, main, close, "\u230b", "\\rfloor"); +defineSymbol(math, main, open, "\u2308", "\\lceil"); +defineSymbol(math, main, close, "\u2309", "\\rceil"); +defineSymbol(math, main, textord, "\\", "\\backslash"); +defineSymbol(math, main, textord, "\u2223", "|"); +defineSymbol(math, main, textord, "\u2223", "\\vert"); +defineSymbol(math, main, textord, "\u2225", "\\|"); +defineSymbol(math, main, textord, "\u2225", "\\Vert"); +defineSymbol(math, main, rel, "\u2191", "\\uparrow"); +defineSymbol(math, main, rel, "\u21d1", "\\Uparrow"); +defineSymbol(math, main, rel, "\u2193", "\\downarrow"); +defineSymbol(math, main, rel, "\u21d3", "\\Downarrow"); +defineSymbol(math, main, rel, "\u2195", "\\updownarrow"); +defineSymbol(math, main, rel, "\u21d5", "\\Updownarrow"); +defineSymbol(math, math, op, "\u2210", "\\coprod"); +defineSymbol(math, math, op, "\u22c1", "\\bigvee"); +defineSymbol(math, math, op, "\u22c0", "\\bigwedge"); +defineSymbol(math, math, op, "\u2a04", "\\biguplus"); +defineSymbol(math, math, op, "\u22c2", "\\bigcap"); +defineSymbol(math, math, op, "\u22c3", "\\bigcup"); +defineSymbol(math, math, op, "\u222b", "\\int"); +defineSymbol(math, math, op, "\u222b", "\\intop"); +defineSymbol(math, math, op, "\u222c", "\\iint"); +defineSymbol(math, math, op, "\u222d", "\\iiint"); +defineSymbol(math, math, op, "\u220f", "\\prod"); +defineSymbol(math, math, op, "\u2211", "\\sum"); +defineSymbol(math, math, op, "\u2a02", "\\bigotimes"); +defineSymbol(math, math, op, "\u2a01", "\\bigoplus"); +defineSymbol(math, math, op, "\u2a00", "\\bigodot"); +defineSymbol(math, math, op, "\u222e", "\\oint"); +defineSymbol(math, math, op, "\u2a06", "\\bigsqcup"); +defineSymbol(math, math, op, "\u222b", "\\smallint"); +defineSymbol(text, main, inner, "\u2026", "\\textellipsis"); +defineSymbol(math, main, inner, "\u2026", "\\mathellipsis"); +defineSymbol(text, main, inner, "\u2026", "\\ldots"); +defineSymbol(math, main, inner, "\u2026", "\\ldots"); +defineSymbol(math, main, inner, "\u22ef", "\\cdots"); +defineSymbol(math, main, inner, "\u22f1", "\\ddots"); +defineSymbol(math, main, textord, "\u22ee", "\\vdots"); +defineSymbol(math, main, accent, "\u00b4", "\\acute"); +defineSymbol(math, main, accent, "\u0060", "\\grave"); +defineSymbol(math, main, accent, "\u00a8", "\\ddot"); +defineSymbol(math, main, accent, "\u007e", "\\tilde"); +defineSymbol(math, main, accent, "\u00af", "\\bar"); +defineSymbol(math, main, accent, "\u02d8", "\\breve"); +defineSymbol(math, main, accent, "\u02c7", "\\check"); +defineSymbol(math, main, accent, "\u005e", "\\hat"); +defineSymbol(math, main, accent, "\u20d7", "\\vec"); +defineSymbol(math, main, accent, "\u02d9", "\\dot"); +defineSymbol(math, main, mathord, "\u0131", "\\imath"); +defineSymbol(math, main, mathord, "\u0237", "\\jmath"); + +defineSymbol(text, main, textord, "\u2013", "--"); +defineSymbol(text, main, textord, "\u2014", "---"); +defineSymbol(text, main, textord, "\u2018", "`"); +defineSymbol(text, main, textord, "\u2019", "'"); +defineSymbol(text, main, textord, "\u201c", "``"); +defineSymbol(text, main, textord, "\u201d", "''"); +defineSymbol(math, main, textord, "\u00b0", "\\degree"); +defineSymbol(text, main, textord, "\u00b0", "\\degree"); +defineSymbol(math, main, mathord, "\u00a3", "\\pounds"); +defineSymbol(math, ams, textord, "\u2720", "\\maltese"); +defineSymbol(text, ams, textord, "\u2720", "\\maltese"); + +defineSymbol(text, main, spacing, "\u00a0", "\\ "); +defineSymbol(text, main, spacing, "\u00a0", " "); +defineSymbol(text, main, spacing, "\u00a0", "~"); + +// There are lots of symbols which are the same, so we add them in afterwards. +var i; +var ch; + +// All of these are textords in math mode +var mathTextSymbols = "0123456789/@.\""; +for (i = 0; i < mathTextSymbols.length; i++) { + ch = mathTextSymbols.charAt(i); + defineSymbol(math, main, textord, ch, ch); +} + +// All of these are textords in text mode +var textSymbols = "0123456789!@*()-=+[]\";:?/.,"; +for (i = 0; i < textSymbols.length; i++) { + ch = textSymbols.charAt(i); + defineSymbol(text, main, textord, ch, ch); +} + +// All of these are textords in text mode, and mathords in math mode +var letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; +for (i = 0; i < letters.length; i++) { + ch = letters.charAt(i); + defineSymbol(math, main, mathord, ch, ch); + defineSymbol(text, main, textord, ch, ch); +} + +// Latin-1 letters +for (i = 0x00C0; i <= 0x00D6; i++) { + ch = String.fromCharCode(i); + defineSymbol(text, main, textord, ch, ch); +} + +for (i = 0x00D8; i <= 0x00F6; i++) { + ch = String.fromCharCode(i); + defineSymbol(text, main, textord, ch, ch); +} + +for (i = 0x00F8; i <= 0x00FF; i++) { + ch = String.fromCharCode(i); + defineSymbol(text, main, textord, ch, ch); +} + +// Cyrillic +for (i = 0x0410; i <= 0x044F; i++) { + ch = String.fromCharCode(i); + defineSymbol(text, main, textord, ch, ch); +} + +// Unicode versions of existing characters +defineSymbol(text, main, textord, "\u2013", "–"); +defineSymbol(text, main, textord, "\u2014", "—"); +defineSymbol(text, main, textord, "\u2018", "‘"); +defineSymbol(text, main, textord, "\u2019", "’"); +defineSymbol(text, main, textord, "\u201c", "“"); +defineSymbol(text, main, textord, "\u201d", "”"); +}); + +/* eslint no-console:0 */ +/** + * This module contains general functions that can be used for building + * different kinds of domTree nodes in a consistent manner. + */ + +var domTree$1 = domTree$2; +var fontMetrics$3 = fontMetrics$1; +var symbols = symbols$1; +var utils$2 = utils$4; + +var greekCapitals = [ + "\\Gamma", + "\\Delta", + "\\Theta", + "\\Lambda", + "\\Xi", + "\\Pi", + "\\Sigma", + "\\Upsilon", + "\\Phi", + "\\Psi", + "\\Omega" +]; + +// The following have to be loaded from Main-Italic font, using class mainit +var mainitLetters = [ + "\u0131", // dotless i, \imath + "\u0237", // dotless j, \jmath + "\u00a3" // \pounds +]; + +/** + * Makes a symbolNode after translation via the list of symbols in symbols.js. + * Correctly pulls out metrics for the character, and optionally takes a list of + * classes to be attached to the node. + * + * TODO: make argument order closer to makeSpan + * TODO: add a separate argument for math class (e.g. `mop`, `mbin`), which + * should if present come first in `classes`. + */ +var makeSymbol = function(value, fontFamily, mode, options, classes) { + // Replace the value with its replaced value from symbol.js + if (symbols[mode][value] && symbols[mode][value].replace) { + value = symbols[mode][value].replace; + } + + var metrics = fontMetrics$3.getCharacterMetrics(value, fontFamily); + + var symbolNode; + if (metrics) { + var italic = metrics.italic; + if (mode === "text") { + italic = 0; + } + symbolNode = new domTree$1.symbolNode( + value, metrics.height, metrics.depth, italic, metrics.skew, + classes); + } else { + // TODO(emily): Figure out a good way to only print this in development + typeof console !== "undefined" && console.warn( + "No character metrics for '" + value + "' in style '" + + fontFamily + "'"); + symbolNode = new domTree$1.symbolNode(value, 0, 0, 0, 0, classes); + } + + if (options) { + if (options.style.isTight()) { + symbolNode.classes.push("mtight"); + } + if (options.getColor()) { + symbolNode.style.color = options.getColor(); + } + } + + return symbolNode; +}; + +/** + * Makes a symbol in Main-Regular or AMS-Regular. + * Used for rel, bin, open, close, inner, and punct. + */ +var mathsym = function(value, mode, options, classes) { + // Decide what font to render the symbol in by its entry in the symbols + // table. + // Have a special case for when the value = \ because the \ is used as a + // textord in unsupported command errors but cannot be parsed as a regular + // text ordinal and is therefore not present as a symbol in the symbols + // table for text + if (value === "\\" || symbols[mode][value].font === "main") { + return makeSymbol(value, "Main-Regular", mode, options, classes); + } else { + return makeSymbol( + value, "AMS-Regular", mode, options, classes.concat(["amsrm"])); + } +}; + +/** + * Makes a symbol in the default font for mathords and textords. + */ +var mathDefault = function(value, mode, options, classes, type) { + if (type === "mathord") { + return mathit(value, mode, options, classes); + } else if (type === "textord") { + return makeSymbol( + value, "Main-Regular", mode, options, classes.concat(["mathrm"])); + } else { + throw new Error("unexpected type: " + type + " in mathDefault"); + } +}; + +/** + * Makes a symbol in the italic math font. + */ +var mathit = function(value, mode, options, classes) { + if (/[0-9]/.test(value.charAt(0)) || + // glyphs for \imath and \jmath do not exist in Math-Italic so we + // need to use Main-Italic instead + utils$2.contains(mainitLetters, value) || + utils$2.contains(greekCapitals, value)) { + return makeSymbol( + value, "Main-Italic", mode, options, classes.concat(["mainit"])); + } else { + return makeSymbol( + value, "Math-Italic", mode, options, classes.concat(["mathit"])); + } +}; + +/** + * Makes either a mathord or textord in the correct font and color. + */ +var makeOrd = function(group, options, type) { + var mode = group.mode; + var value = group.value; + if (symbols[mode][value] && symbols[mode][value].replace) { + value = symbols[mode][value].replace; + } + + var classes = ["mord"]; + + var font = options.font; + if (font) { + if (font === "mathit" || utils$2.contains(mainitLetters, value)) { + return mathit(value, mode, options, classes); + } else { + var fontName = fontMap[font].fontName; + if (fontMetrics$3.getCharacterMetrics(value, fontName)) { + return makeSymbol( + value, fontName, mode, options, classes.concat([font])); + } else { + return mathDefault(value, mode, options, classes, type); + } + } + } else { + return mathDefault(value, mode, options, classes, type); + } +}; + +/** + * Calculate the height, depth, and maxFontSize of an element based on its + * children. + */ +var sizeElementFromChildren = function(elem) { + var height = 0; + var depth = 0; + var maxFontSize = 0; + + if (elem.children) { + for (var i = 0; i < elem.children.length; i++) { + if (elem.children[i].height > height) { + height = elem.children[i].height; + } + if (elem.children[i].depth > depth) { + depth = elem.children[i].depth; + } + if (elem.children[i].maxFontSize > maxFontSize) { + maxFontSize = elem.children[i].maxFontSize; + } + } + } + + elem.height = height; + elem.depth = depth; + elem.maxFontSize = maxFontSize; +}; + +/** + * Makes a span with the given list of classes, list of children, and options. + * + * TODO: Ensure that `options` is always provided (currently some call sites + * don't pass it). + * TODO: add a separate argument for math class (e.g. `mop`, `mbin`), which + * should if present come first in `classes`. + */ +var makeSpan$2 = function(classes, children, options) { + var span = new domTree$1.span(classes, children, options); + + sizeElementFromChildren(span); + + return span; +}; + +/** + * Prepends the given children to the given span, updating height, depth, and + * maxFontSize. + */ +var prependChildren = function(span, children) { + span.children = children.concat(span.children); + + sizeElementFromChildren(span); +}; + +/** + * Makes a document fragment with the given list of children. + */ +var makeFragment = function(children) { + var fragment = new domTree$1.documentFragment(children); + + sizeElementFromChildren(fragment); + + return fragment; +}; + +/** + * Makes an element placed in each of the vlist elements to ensure that each + * element has the same max font size. To do this, we create a zero-width space + * with the correct font size. + */ +var makeFontSizer = function(options, fontSize) { + var fontSizeInner = makeSpan$2([], [new domTree$1.symbolNode("\u200b")]); + fontSizeInner.style.fontSize = + (fontSize / options.style.sizeMultiplier) + "em"; + + var fontSizer = makeSpan$2( + ["fontsize-ensurer", "reset-" + options.size, "size5"], + [fontSizeInner]); + + return fontSizer; +}; + +/** + * Makes a vertical list by stacking elements and kerns on top of each other. + * Allows for many different ways of specifying the positioning method. + * + * Arguments: + * - children: A list of child or kern nodes to be stacked on top of each other + * (i.e. the first element will be at the bottom, and the last at + * the top). Element nodes are specified as + * {type: "elem", elem: node} + * while kern nodes are specified as + * {type: "kern", size: size} + * - positionType: The method by which the vlist should be positioned. Valid + * values are: + * - "individualShift": The children list only contains elem + * nodes, and each node contains an extra + * "shift" value of how much it should be + * shifted (note that shifting is always + * moving downwards). positionData is + * ignored. + * - "top": The positionData specifies the topmost point of + * the vlist (note this is expected to be a height, + * so positive values move up) + * - "bottom": The positionData specifies the bottommost point + * of the vlist (note this is expected to be a + * depth, so positive values move down + * - "shift": The vlist will be positioned such that its + * baseline is positionData away from the baseline + * of the first child. Positive values move + * downwards. + * - "firstBaseline": The vlist will be positioned such that + * its baseline is aligned with the + * baseline of the first child. + * positionData is ignored. (this is + * equivalent to "shift" with + * positionData=0) + * - positionData: Data used in different ways depending on positionType + * - options: An Options object + * + */ +var makeVList = function(children, positionType, positionData, options) { + var depth; + var currPos; + var i; + if (positionType === "individualShift") { + var oldChildren = children; + children = [oldChildren[0]]; + + // Add in kerns to the list of children to get each element to be + // shifted to the correct specified shift + depth = -oldChildren[0].shift - oldChildren[0].elem.depth; + currPos = depth; + for (i = 1; i < oldChildren.length; i++) { + var diff = -oldChildren[i].shift - currPos - + oldChildren[i].elem.depth; + var size = diff - + (oldChildren[i - 1].elem.height + + oldChildren[i - 1].elem.depth); + + currPos = currPos + diff; + + children.push({type: "kern", size: size}); + children.push(oldChildren[i]); + } + } else if (positionType === "top") { + // We always start at the bottom, so calculate the bottom by adding up + // all the sizes + var bottom = positionData; + for (i = 0; i < children.length; i++) { + if (children[i].type === "kern") { + bottom -= children[i].size; + } else { + bottom -= children[i].elem.height + children[i].elem.depth; + } + } + depth = bottom; + } else if (positionType === "bottom") { + depth = -positionData; + } else if (positionType === "shift") { + depth = -children[0].elem.depth - positionData; + } else if (positionType === "firstBaseline") { + depth = -children[0].elem.depth; + } else { + depth = 0; + } + + // Make the fontSizer + var maxFontSize = 0; + for (i = 0; i < children.length; i++) { + if (children[i].type === "elem") { + maxFontSize = Math.max(maxFontSize, children[i].elem.maxFontSize); + } + } + var fontSizer = makeFontSizer(options, maxFontSize); + + // Create a new list of actual children at the correct offsets + var realChildren = []; + currPos = depth; + for (i = 0; i < children.length; i++) { + if (children[i].type === "kern") { + currPos += children[i].size; + } else { + var child = children[i].elem; + + var shift = -child.depth - currPos; + currPos += child.height + child.depth; + + var childWrap = makeSpan$2([], [fontSizer, child]); + childWrap.height -= shift; + childWrap.depth += shift; + childWrap.style.top = shift + "em"; + + realChildren.push(childWrap); + } + } + + // Add in an element at the end with no offset to fix the calculation of + // baselines in some browsers (namely IE, sometimes safari) + var baselineFix = makeSpan$2( + ["baseline-fix"], [fontSizer, new domTree$1.symbolNode("\u200b")]); + realChildren.push(baselineFix); + + var vlist = makeSpan$2(["vlist"], realChildren); + // Fix the final height and depth, in case there were kerns at the ends + // since the makeSpan calculation won't take that in to account. + vlist.height = Math.max(currPos, vlist.height); + vlist.depth = Math.max(-depth, vlist.depth); + return vlist; +}; + +// A table of size -> font size for the different sizing functions +var sizingMultiplier = { + size1: 0.5, + size2: 0.7, + size3: 0.8, + size4: 0.9, + size5: 1.0, + size6: 1.2, + size7: 1.44, + size8: 1.73, + size9: 2.07, + size10: 2.49 +}; + +// A map of spacing functions to their attributes, like size and corresponding +// CSS class +var spacingFunctions = { + "\\qquad": { + size: "2em", + className: "qquad" + }, + "\\quad": { + size: "1em", + className: "quad" + }, + "\\enspace": { + size: "0.5em", + className: "enspace" + }, + "\\;": { + size: "0.277778em", + className: "thickspace" + }, + "\\:": { + size: "0.22222em", + className: "mediumspace" + }, + "\\,": { + size: "0.16667em", + className: "thinspace" + }, + "\\!": { + size: "-0.16667em", + className: "negativethinspace" + } +}; + +/** + * Maps TeX font commands to objects containing: + * - variant: string used for "mathvariant" attribute in buildMathML.js + * - fontName: the "style" parameter to fontMetrics.getCharacterMetrics + */ +// A map between tex font commands an MathML mathvariant attribute values +var fontMap = { + // styles + "mathbf": { + variant: "bold", + fontName: "Main-Bold" + }, + "mathrm": { + variant: "normal", + fontName: "Main-Regular" + }, + "textit": { + variant: "italic", + fontName: "Main-Italic" + }, + + // "mathit" is missing because it requires the use of two fonts: Main-Italic + // and Math-Italic. This is handled by a special case in makeOrd which ends + // up calling mathit. + + // families + "mathbb": { + variant: "double-struck", + fontName: "AMS-Regular" + }, + "mathcal": { + variant: "script", + fontName: "Caligraphic-Regular" + }, + "mathfrak": { + variant: "fraktur", + fontName: "Fraktur-Regular" + }, + "mathscr": { + variant: "script", + fontName: "Script-Regular" + }, + "mathsf": { + variant: "sans-serif", + fontName: "SansSerif-Regular" + }, + "mathtt": { + variant: "monospace", + fontName: "Typewriter-Regular" + } +}; + +var buildCommon$2 = { + fontMap: fontMap, + makeSymbol: makeSymbol, + mathsym: mathsym, + makeSpan: makeSpan$2, + makeFragment: makeFragment, + makeVList: makeVList, + makeOrd: makeOrd, + prependChildren: prependChildren, + sizingMultiplier: sizingMultiplier, + spacingFunctions: spacingFunctions +}; + +/** + * This file deals with creating delimiters of various sizes. The TeXbook + * discusses these routines on page 441-442, in the "Another subroutine sets box + * x to a specified variable delimiter" paragraph. + * + * There are three main routines here. `makeSmallDelim` makes a delimiter in the + * normal font, but in either text, script, or scriptscript style. + * `makeLargeDelim` makes a delimiter in textstyle, but in one of the Size1, + * Size2, Size3, or Size4 fonts. `makeStackedDelim` makes a delimiter out of + * smaller pieces that are stacked on top of one another. + * + * The functions take a parameter `center`, which determines if the delimiter + * should be centered around the axis. + * + * Then, there are three exposed functions. `sizedDelim` makes a delimiter in + * one of the given sizes. This is used for things like `\bigl`. + * `customSizedDelim` makes a delimiter with a given total height+depth. It is + * called in places like `\sqrt`. `leftRightDelim` makes an appropriate + * delimiter which surrounds an expression of a given height an depth. It is + * used in `\left` and `\right`. + */ + +var ParseError$3 = ParseError_1; +var Style$4 = Style_1; + +var buildCommon$4 = buildCommon$2; +var fontMetrics$4 = fontMetrics$1; +var symbols$3 = symbols$1; +var utils$6 = utils$4; + +var makeSpan$3 = buildCommon$4.makeSpan; + +/** + * Get the metrics for a given symbol and font, after transformation (i.e. + * after following replacement from symbols.js) + */ +var getMetrics = function(symbol, font) { + if (symbols$3.math[symbol] && symbols$3.math[symbol].replace) { + return fontMetrics$4.getCharacterMetrics( + symbols$3.math[symbol].replace, font); + } else { + return fontMetrics$4.getCharacterMetrics( + symbol, font); + } +}; + +/** + * Builds a symbol in the given font size (note size is an integer) + */ +var mathrmSize = function(value, size, mode, options) { + return buildCommon$4.makeSymbol(value, "Size" + size + "-Regular", + mode, options); +}; + +/** + * Puts a delimiter span in a given style, and adds appropriate height, depth, + * and maxFontSizes. + */ +var styleWrap = function(delim, toStyle, options, classes) { + classes = classes || []; + var span = makeSpan$3( + classes.concat(["style-wrap", options.style.reset(), toStyle.cls()]), + [delim], options); + + var multiplier = toStyle.sizeMultiplier / options.style.sizeMultiplier; + + span.height *= multiplier; + span.depth *= multiplier; + span.maxFontSize = toStyle.sizeMultiplier; + + return span; +}; + +/** + * Makes a small delimiter. This is a delimiter that comes in the Main-Regular + * font, but is restyled to either be in textstyle, scriptstyle, or + * scriptscriptstyle. + */ +var makeSmallDelim = function(delim, style, center, options, mode, classes) { + var text = buildCommon$4.makeSymbol(delim, "Main-Regular", mode, options); + + var span = styleWrap(text, style, options, classes); + + if (center) { + var shift = + (1 - options.style.sizeMultiplier / style.sizeMultiplier) * + options.style.metrics.axisHeight; + + span.style.top = shift + "em"; + span.height -= shift; + span.depth += shift; + } + + return span; +}; + +/** + * Makes a large delimiter. This is a delimiter that comes in the Size1, Size2, + * Size3, or Size4 fonts. It is always rendered in textstyle. + */ +var makeLargeDelim = function(delim, size, center, options, mode, classes) { + var inner = mathrmSize(delim, size, mode, options); + + var span = styleWrap( + makeSpan$3(["delimsizing", "size" + size], [inner], options), + Style$4.TEXT, options, classes); + + if (center) { + var shift = (1 - options.style.sizeMultiplier) * + options.style.metrics.axisHeight; + + span.style.top = shift + "em"; + span.height -= shift; + span.depth += shift; + } + + return span; +}; + +/** + * Make an inner span with the given offset and in the given font. This is used + * in `makeStackedDelim` to make the stacking pieces for the delimiter. + */ +var makeInner = function(symbol, font, mode) { + var sizeClass; + // Apply the correct CSS class to choose the right font. + if (font === "Size1-Regular") { + sizeClass = "delim-size1"; + } else if (font === "Size4-Regular") { + sizeClass = "delim-size4"; + } + + var inner = makeSpan$3( + ["delimsizinginner", sizeClass], + [makeSpan$3([], [buildCommon$4.makeSymbol(symbol, font, mode)])]); + + // Since this will be passed into `makeVList` in the end, wrap the element + // in the appropriate tag that VList uses. + return {type: "elem", elem: inner}; +}; + +/** + * Make a stacked delimiter out of a given delimiter, with the total height at + * least `heightTotal`. This routine is mentioned on page 442 of the TeXbook. + */ +var makeStackedDelim = function(delim, heightTotal, center, options, mode, + classes) { + // There are four parts, the top, an optional middle, a repeated part, and a + // bottom. + var top; + var middle; + var repeat; + var bottom; + top = repeat = bottom = delim; + middle = null; + // Also keep track of what font the delimiters are in + var font = "Size1-Regular"; + + // We set the parts and font based on the symbol. Note that we use + // '\u23d0' instead of '|' and '\u2016' instead of '\\|' for the + // repeats of the arrows + if (delim === "\\uparrow") { + repeat = bottom = "\u23d0"; + } else if (delim === "\\Uparrow") { + repeat = bottom = "\u2016"; + } else if (delim === "\\downarrow") { + top = repeat = "\u23d0"; + } else if (delim === "\\Downarrow") { + top = repeat = "\u2016"; + } else if (delim === "\\updownarrow") { + top = "\\uparrow"; + repeat = "\u23d0"; + bottom = "\\downarrow"; + } else if (delim === "\\Updownarrow") { + top = "\\Uparrow"; + repeat = "\u2016"; + bottom = "\\Downarrow"; + } else if (delim === "[" || delim === "\\lbrack") { + top = "\u23a1"; + repeat = "\u23a2"; + bottom = "\u23a3"; + font = "Size4-Regular"; + } else if (delim === "]" || delim === "\\rbrack") { + top = "\u23a4"; + repeat = "\u23a5"; + bottom = "\u23a6"; + font = "Size4-Regular"; + } else if (delim === "\\lfloor") { + repeat = top = "\u23a2"; + bottom = "\u23a3"; + font = "Size4-Regular"; + } else if (delim === "\\lceil") { + top = "\u23a1"; + repeat = bottom = "\u23a2"; + font = "Size4-Regular"; + } else if (delim === "\\rfloor") { + repeat = top = "\u23a5"; + bottom = "\u23a6"; + font = "Size4-Regular"; + } else if (delim === "\\rceil") { + top = "\u23a4"; + repeat = bottom = "\u23a5"; + font = "Size4-Regular"; + } else if (delim === "(") { + top = "\u239b"; + repeat = "\u239c"; + bottom = "\u239d"; + font = "Size4-Regular"; + } else if (delim === ")") { + top = "\u239e"; + repeat = "\u239f"; + bottom = "\u23a0"; + font = "Size4-Regular"; + } else if (delim === "\\{" || delim === "\\lbrace") { + top = "\u23a7"; + middle = "\u23a8"; + bottom = "\u23a9"; + repeat = "\u23aa"; + font = "Size4-Regular"; + } else if (delim === "\\}" || delim === "\\rbrace") { + top = "\u23ab"; + middle = "\u23ac"; + bottom = "\u23ad"; + repeat = "\u23aa"; + font = "Size4-Regular"; + } else if (delim === "\\lgroup") { + top = "\u23a7"; + bottom = "\u23a9"; + repeat = "\u23aa"; + font = "Size4-Regular"; + } else if (delim === "\\rgroup") { + top = "\u23ab"; + bottom = "\u23ad"; + repeat = "\u23aa"; + font = "Size4-Regular"; + } else if (delim === "\\lmoustache") { + top = "\u23a7"; + bottom = "\u23ad"; + repeat = "\u23aa"; + font = "Size4-Regular"; + } else if (delim === "\\rmoustache") { + top = "\u23ab"; + bottom = "\u23a9"; + repeat = "\u23aa"; + font = "Size4-Regular"; + } else if (delim === "\\surd") { + top = "\ue001"; + bottom = "\u23b7"; + repeat = "\ue000"; + font = "Size4-Regular"; + } + + // Get the metrics of the four sections + var topMetrics = getMetrics(top, font); + var topHeightTotal = topMetrics.height + topMetrics.depth; + var repeatMetrics = getMetrics(repeat, font); + var repeatHeightTotal = repeatMetrics.height + repeatMetrics.depth; + var bottomMetrics = getMetrics(bottom, font); + var bottomHeightTotal = bottomMetrics.height + bottomMetrics.depth; + var middleHeightTotal = 0; + var middleFactor = 1; + if (middle !== null) { + var middleMetrics = getMetrics(middle, font); + middleHeightTotal = middleMetrics.height + middleMetrics.depth; + middleFactor = 2; // repeat symmetrically above and below middle + } + + // Calcuate the minimal height that the delimiter can have. + // It is at least the size of the top, bottom, and optional middle combined. + var minHeight = topHeightTotal + bottomHeightTotal + middleHeightTotal; + + // Compute the number of copies of the repeat symbol we will need + var repeatCount = Math.ceil( + (heightTotal - minHeight) / (middleFactor * repeatHeightTotal)); + + // Compute the total height of the delimiter including all the symbols + var realHeightTotal = + minHeight + repeatCount * middleFactor * repeatHeightTotal; + + // The center of the delimiter is placed at the center of the axis. Note + // that in this context, "center" means that the delimiter should be + // centered around the axis in the current style, while normally it is + // centered around the axis in textstyle. + var axisHeight = options.style.metrics.axisHeight; + if (center) { + axisHeight *= options.style.sizeMultiplier; + } + // Calculate the depth + var depth = realHeightTotal / 2 - axisHeight; + + // Now, we start building the pieces that will go into the vlist + + // Keep a list of the inner pieces + var inners = []; + + // Add the bottom symbol + inners.push(makeInner(bottom, font, mode)); + + var i; + if (middle === null) { + // Add that many symbols + for (i = 0; i < repeatCount; i++) { + inners.push(makeInner(repeat, font, mode)); + } + } else { + // When there is a middle bit, we need the middle part and two repeated + // sections + for (i = 0; i < repeatCount; i++) { + inners.push(makeInner(repeat, font, mode)); + } + inners.push(makeInner(middle, font, mode)); + for (i = 0; i < repeatCount; i++) { + inners.push(makeInner(repeat, font, mode)); + } + } + + // Add the top symbol + inners.push(makeInner(top, font, mode)); + + // Finally, build the vlist + var inner = buildCommon$4.makeVList(inners, "bottom", depth, options); + + return styleWrap( + makeSpan$3(["delimsizing", "mult"], [inner], options), + Style$4.TEXT, options, classes); +}; + +// There are three kinds of delimiters, delimiters that stack when they become +// too large +var stackLargeDelimiters = [ + "(", ")", "[", "\\lbrack", "]", "\\rbrack", + "\\{", "\\lbrace", "\\}", "\\rbrace", + "\\lfloor", "\\rfloor", "\\lceil", "\\rceil", + "\\surd" +]; + +// delimiters that always stack +var stackAlwaysDelimiters = [ + "\\uparrow", "\\downarrow", "\\updownarrow", + "\\Uparrow", "\\Downarrow", "\\Updownarrow", + "|", "\\|", "\\vert", "\\Vert", + "\\lvert", "\\rvert", "\\lVert", "\\rVert", + "\\lgroup", "\\rgroup", "\\lmoustache", "\\rmoustache" +]; + +// and delimiters that never stack +var stackNeverDelimiters = [ + "<", ">", "\\langle", "\\rangle", "/", "\\backslash", "\\lt", "\\gt" +]; + +// Metrics of the different sizes. Found by looking at TeX's output of +// $\bigl| // \Bigl| \biggl| \Biggl| \showlists$ +// Used to create stacked delimiters of appropriate sizes in makeSizedDelim. +var sizeToMaxHeight = [0, 1.2, 1.8, 2.4, 3.0]; + +/** + * Used to create a delimiter of a specific size, where `size` is 1, 2, 3, or 4. + */ +var makeSizedDelim = function(delim, size, options, mode, classes) { + // < and > turn into \langle and \rangle in delimiters + if (delim === "<" || delim === "\\lt") { + delim = "\\langle"; + } else if (delim === ">" || delim === "\\gt") { + delim = "\\rangle"; + } + + // Sized delimiters are never centered. + if (utils$6.contains(stackLargeDelimiters, delim) || + utils$6.contains(stackNeverDelimiters, delim)) { + return makeLargeDelim(delim, size, false, options, mode, classes); + } else if (utils$6.contains(stackAlwaysDelimiters, delim)) { + return makeStackedDelim( + delim, sizeToMaxHeight[size], false, options, mode, classes); + } else { + throw new ParseError$3("Illegal delimiter: '" + delim + "'"); + } +}; + +/** + * There are three different sequences of delimiter sizes that the delimiters + * follow depending on the kind of delimiter. This is used when creating custom + * sized delimiters to decide whether to create a small, large, or stacked + * delimiter. + * + * In real TeX, these sequences aren't explicitly defined, but are instead + * defined inside the font metrics. Since there are only three sequences that + * are possible for the delimiters that TeX defines, it is easier to just encode + * them explicitly here. + */ + +// Delimiters that never stack try small delimiters and large delimiters only +var stackNeverDelimiterSequence = [ + {type: "small", style: Style$4.SCRIPTSCRIPT}, + {type: "small", style: Style$4.SCRIPT}, + {type: "small", style: Style$4.TEXT}, + {type: "large", size: 1}, + {type: "large", size: 2}, + {type: "large", size: 3}, + {type: "large", size: 4} +]; + +// Delimiters that always stack try the small delimiters first, then stack +var stackAlwaysDelimiterSequence = [ + {type: "small", style: Style$4.SCRIPTSCRIPT}, + {type: "small", style: Style$4.SCRIPT}, + {type: "small", style: Style$4.TEXT}, + {type: "stack"} +]; + +// Delimiters that stack when large try the small and then large delimiters, and +// stack afterwards +var stackLargeDelimiterSequence = [ + {type: "small", style: Style$4.SCRIPTSCRIPT}, + {type: "small", style: Style$4.SCRIPT}, + {type: "small", style: Style$4.TEXT}, + {type: "large", size: 1}, + {type: "large", size: 2}, + {type: "large", size: 3}, + {type: "large", size: 4}, + {type: "stack"} +]; + +/** + * Get the font used in a delimiter based on what kind of delimiter it is. + */ +var delimTypeToFont = function(type) { + if (type.type === "small") { + return "Main-Regular"; + } else if (type.type === "large") { + return "Size" + type.size + "-Regular"; + } else if (type.type === "stack") { + return "Size4-Regular"; + } +}; + +/** + * Traverse a sequence of types of delimiters to decide what kind of delimiter + * should be used to create a delimiter of the given height+depth. + */ +var traverseSequence = function(delim, height, sequence, options) { + // Here, we choose the index we should start at in the sequences. In smaller + // sizes (which correspond to larger numbers in style.size) we start earlier + // in the sequence. Thus, scriptscript starts at index 3-3=0, script starts + // at index 3-2=1, text starts at 3-1=2, and display starts at min(2,3-0)=2 + var start = Math.min(2, 3 - options.style.size); + for (var i = start; i < sequence.length; i++) { + if (sequence[i].type === "stack") { + // This is always the last delimiter, so we just break the loop now. + break; + } + + var metrics = getMetrics(delim, delimTypeToFont(sequence[i])); + var heightDepth = metrics.height + metrics.depth; + + // Small delimiters are scaled down versions of the same font, so we + // account for the style change size. + + if (sequence[i].type === "small") { + heightDepth *= sequence[i].style.sizeMultiplier; + } + + // Check if the delimiter at this size works for the given height. + if (heightDepth > height) { + return sequence[i]; + } + } + + // If we reached the end of the sequence, return the last sequence element. + return sequence[sequence.length - 1]; +}; + +/** + * Make a delimiter of a given height+depth, with optional centering. Here, we + * traverse the sequences, and create a delimiter that the sequence tells us to. + */ +var makeCustomSizedDelim = function(delim, height, center, options, mode, + classes) { + if (delim === "<" || delim === "\\lt") { + delim = "\\langle"; + } else if (delim === ">" || delim === "\\gt") { + delim = "\\rangle"; + } + + // Decide what sequence to use + var sequence; + if (utils$6.contains(stackNeverDelimiters, delim)) { + sequence = stackNeverDelimiterSequence; + } else if (utils$6.contains(stackLargeDelimiters, delim)) { + sequence = stackLargeDelimiterSequence; + } else { + sequence = stackAlwaysDelimiterSequence; + } + + // Look through the sequence + var delimType = traverseSequence(delim, height, sequence, options); + + // Depending on the sequence element we decided on, call the appropriate + // function. + if (delimType.type === "small") { + return makeSmallDelim(delim, delimType.style, center, options, mode, + classes); + } else if (delimType.type === "large") { + return makeLargeDelim(delim, delimType.size, center, options, mode, + classes); + } else if (delimType.type === "stack") { + return makeStackedDelim(delim, height, center, options, mode, classes); + } +}; + +/** + * Make a delimiter for use with `\left` and `\right`, given a height and depth + * of an expression that the delimiters surround. + */ +var makeLeftRightDelim = function(delim, height, depth, options, mode, + classes) { + // We always center \left/\right delimiters, so the axis is always shifted + var axisHeight = + options.style.metrics.axisHeight * options.style.sizeMultiplier; + + // Taken from TeX source, tex.web, function make_left_right + var delimiterFactor = 901; + var delimiterExtend = 5.0 / fontMetrics$4.metrics.ptPerEm; + + var maxDistFromAxis = Math.max( + height - axisHeight, depth + axisHeight); + + var totalHeight = Math.max( + // In real TeX, calculations are done using integral values which are + // 65536 per pt, or 655360 per em. So, the division here truncates in + // TeX but doesn't here, producing different results. If we wanted to + // exactly match TeX's calculation, we could do + // Math.floor(655360 * maxDistFromAxis / 500) * + // delimiterFactor / 655360 + // (To see the difference, compare + // x^{x^{\left(\rule{0.1em}{0.68em}\right)}} + // in TeX and KaTeX) + maxDistFromAxis / 500 * delimiterFactor, + 2 * maxDistFromAxis - delimiterExtend); + + // Finally, we defer to `makeCustomSizedDelim` with our calculated total + // height + return makeCustomSizedDelim(delim, totalHeight, true, options, mode, + classes); +}; + +var delimiter$1 = { + sizedDelim: makeSizedDelim, + customSizedDelim: makeCustomSizedDelim, + leftRightDelim: makeLeftRightDelim +}; + +/* eslint no-console:0 */ +/** + * This file does the main work of building a domTree structure from a parse + * tree. The entry point is the `buildHTML` function, which takes a parse tree. + * Then, the buildExpression, buildGroup, and various groupTypes functions are + * called, to produce a final HTML tree. + */ + +var ParseError$2 = ParseError_1; +var Style$1 = Style_1; + +var buildCommon$1 = buildCommon$2; +var delimiter = delimiter$1; +var domTree = domTree$2; +var fontMetrics = fontMetrics$1; +var utils$1 = utils$4; + +var makeSpan$1 = buildCommon$1.makeSpan; + +var isSpace = function(node) { + return node instanceof domTree.span && node.classes[0] === "mspace"; +}; + +// Binary atoms (first class `mbin`) change into ordinary atoms (`mord`) +// depending on their surroundings. See TeXbook pg. 442-446, Rules 5 and 6, +// and the text before Rule 19. + +var isBin = function(node) { + return node && node.classes[0] === "mbin"; +}; + +var isBinLeftCanceller = function(node, isRealGroup) { + // TODO: This code assumes that a node's math class is the first element + // of its `classes` array. A later cleanup should ensure this, for + // instance by changing the signature of `makeSpan`. + if (node) { + return utils$1.contains(["mbin", "mopen", "mrel", "mop", "mpunct"], + node.classes[0]); + } else { + return isRealGroup; + } +}; + +var isBinRightCanceller = function(node, isRealGroup) { + if (node) { + return utils$1.contains(["mrel", "mclose", "mpunct"], node.classes[0]); + } else { + return isRealGroup; + } +}; + +/** + * Take a list of nodes, build them in order, and return a list of the built + * nodes. documentFragments are flattened into their contents, so the + * returned list contains no fragments. `isRealGroup` is true if `expression` + * is a real group (no atoms will be added on either side), as opposed to + * a partial group (e.g. one created by \color). + */ +var buildExpression = function(expression, options, isRealGroup) { + // Parse expressions into `groups`. + var groups = []; + for (var i = 0; i < expression.length; i++) { + var group = expression[i]; + var output = buildGroup(group, options); + if (output instanceof domTree.documentFragment) { + Array.prototype.push.apply(groups, output.children); + } else { + groups.push(output); + } + } + // At this point `groups` consists entirely of `symbolNode`s and `span`s. + + // Explicit spaces (e.g., \;, \,) should be ignored with respect to atom + // spacing (e.g., "add thick space between mord and mrel"). Since CSS + // adjacency rules implement atom spacing, spaces should be invisible to + // CSS. So we splice them out of `groups` and into the atoms themselves. + var spaces = null; + for (i = 0; i < groups.length; i++) { + if (isSpace(groups[i])) { + spaces = spaces || []; + spaces.push(groups[i]); + groups.splice(i, 1); + i--; + } else if (spaces) { + if (groups[i] instanceof domTree.symbolNode) { + groups[i] = makeSpan$1([].concat(groups[i].classes), [groups[i]]); + } + buildCommon$1.prependChildren(groups[i], spaces); + spaces = null; + } + } + if (spaces) { + Array.prototype.push.apply(groups, spaces); + } + + // Binary operators change to ordinary symbols in some contexts. + for (i = 0; i < groups.length; i++) { + if (isBin(groups[i]) + && (isBinLeftCanceller(groups[i - 1], isRealGroup) + || isBinRightCanceller(groups[i + 1], isRealGroup))) { + groups[i].classes[0] = "mord"; + } + } + + return groups; +}; + +// Return math atom class (mclass) of a domTree. +var getTypeOfDomTree = function(node) { + if (node instanceof domTree.documentFragment) { + if (node.children.length) { + return getTypeOfDomTree( + node.children[node.children.length - 1]); + } + } else { + if (utils$1.contains(["mord", "mop", "mbin", "mrel", "mopen", "mclose", + "mpunct", "minner"], node.classes[0])) { + return node.classes[0]; + } + } + return null; +}; + +/** + * Sometimes, groups perform special rules when they have superscripts or + * subscripts attached to them. This function lets the `supsub` group know that + * its inner element should handle the superscripts and subscripts instead of + * handling them itself. + */ +var shouldHandleSupSub = function(group, options) { + if (!group) { + return false; + } else if (group.type === "op") { + // Operators handle supsubs differently when they have limits + // (e.g. `\displaystyle\sum_2^3`) + return group.value.limits && + (options.style.size === Style$1.DISPLAY.size || + group.value.alwaysHandleSupSub); + } else if (group.type === "accent") { + return isCharacterBox(group.value.base); + } else { + return null; + } +}; + +/** + * Sometimes we want to pull out the innermost element of a group. In most + * cases, this will just be the group itself, but when ordgroups and colors have + * a single element, we want to pull that out. + */ +var getBaseElem = function(group) { + if (!group) { + return false; + } else if (group.type === "ordgroup") { + if (group.value.length === 1) { + return getBaseElem(group.value[0]); + } else { + return group; + } + } else if (group.type === "color") { + if (group.value.value.length === 1) { + return getBaseElem(group.value.value[0]); + } else { + return group; + } + } else if (group.type === "font") { + return getBaseElem(group.value.body); + } else { + return group; + } +}; + +/** + * TeXbook algorithms often reference "character boxes", which are simply groups + * with a single character in them. To decide if something is a character box, + * we find its innermost group, and see if it is a single character. + */ +var isCharacterBox = function(group) { + var baseElem = getBaseElem(group); + + // These are all they types of groups which hold single characters + return baseElem.type === "mathord" || + baseElem.type === "textord" || + baseElem.type === "bin" || + baseElem.type === "rel" || + baseElem.type === "inner" || + baseElem.type === "open" || + baseElem.type === "close" || + baseElem.type === "punct"; +}; + +var makeNullDelimiter = function(options, classes) { + return makeSpan$1(classes.concat([ + "sizing", "reset-" + options.size, "size5", + options.style.reset(), Style$1.TEXT.cls(), + "nulldelimiter"])); +}; + +/** + * This is a map of group types to the function used to handle that type. + * Simpler types come at the beginning, while complicated types come afterwards. + */ +var groupTypes = {}; + +groupTypes.mathord = function(group, options) { + return buildCommon$1.makeOrd(group, options, "mathord"); +}; + +groupTypes.textord = function(group, options) { + return buildCommon$1.makeOrd(group, options, "textord"); +}; + +groupTypes.bin = function(group, options) { + return buildCommon$1.mathsym( + group.value, group.mode, options, ["mbin"]); +}; + +groupTypes.rel = function(group, options) { + return buildCommon$1.mathsym( + group.value, group.mode, options, ["mrel"]); +}; + +groupTypes.open = function(group, options) { + return buildCommon$1.mathsym( + group.value, group.mode, options, ["mopen"]); +}; + +groupTypes.close = function(group, options) { + return buildCommon$1.mathsym( + group.value, group.mode, options, ["mclose"]); +}; + +groupTypes.inner = function(group, options) { + return buildCommon$1.mathsym( + group.value, group.mode, options, ["minner"]); +}; + +groupTypes.punct = function(group, options) { + return buildCommon$1.mathsym( + group.value, group.mode, options, ["mpunct"]); +}; + +groupTypes.ordgroup = function(group, options) { + return makeSpan$1( + ["mord", options.style.cls()], + buildExpression(group.value, options.reset(), true), + options + ); +}; + +groupTypes.text = function(group, options) { + var newOptions = options.withFont(group.value.style); + var inner = buildExpression(group.value.body, newOptions, true); + for (var i = 0; i < inner.length - 1; i++) { + if (inner[i].tryCombine(inner[i + 1])) { + inner.splice(i + 1, 1); + i--; + } + } + return makeSpan$1(["mord", "text", newOptions.style.cls()], + inner, newOptions); +}; + +groupTypes.color = function(group, options) { + var elements = buildExpression( + group.value.value, + options.withColor(group.value.color), + false + ); + + // \color isn't supposed to affect the type of the elements it contains. + // To accomplish this, we wrap the results in a fragment, so the inner + // elements will be able to directly interact with their neighbors. For + // example, `\color{red}{2 +} 3` has the same spacing as `2 + 3` + return new buildCommon$1.makeFragment(elements); +}; + +groupTypes.supsub = function(group, options) { + // Superscript and subscripts are handled in the TeXbook on page + // 445-446, rules 18(a-f). + + // Here is where we defer to the inner group if it should handle + // superscripts and subscripts itself. + if (shouldHandleSupSub(group.value.base, options)) { + return groupTypes[group.value.base.type](group, options); + } + + var base = buildGroup(group.value.base, options.reset()); + var supmid; + var submid; + var sup; + var sub; + + var style = options.style; + var newOptions; + + if (group.value.sup) { + newOptions = options.withStyle(style.sup()); + sup = buildGroup(group.value.sup, newOptions); + supmid = makeSpan$1([style.reset(), style.sup().cls()], + [sup], newOptions); + } + + if (group.value.sub) { + newOptions = options.withStyle(style.sub()); + sub = buildGroup(group.value.sub, newOptions); + submid = makeSpan$1([style.reset(), style.sub().cls()], + [sub], newOptions); + } + + // Rule 18a + var supShift; + var subShift; + if (isCharacterBox(group.value.base)) { + supShift = 0; + subShift = 0; + } else { + supShift = base.height - style.metrics.supDrop; + subShift = base.depth + style.metrics.subDrop; + } + + // Rule 18c + var minSupShift; + if (style === Style$1.DISPLAY) { + minSupShift = style.metrics.sup1; + } else if (style.cramped) { + minSupShift = style.metrics.sup3; + } else { + minSupShift = style.metrics.sup2; + } + + // scriptspace is a font-size-independent size, so scale it + // appropriately + var multiplier = Style$1.TEXT.sizeMultiplier * + style.sizeMultiplier; + var scriptspace = + (0.5 / fontMetrics.metrics.ptPerEm) / multiplier + "em"; + + var supsub; + if (!group.value.sup) { + // Rule 18b + subShift = Math.max( + subShift, style.metrics.sub1, + sub.height - 0.8 * style.metrics.xHeight); + + supsub = buildCommon$1.makeVList([ + {type: "elem", elem: submid} + ], "shift", subShift, options); + + supsub.children[0].style.marginRight = scriptspace; + + // Subscripts shouldn't be shifted by the base's italic correction. + // Account for that by shifting the subscript back the appropriate + // amount. Note we only do this when the base is a single symbol. + if (base instanceof domTree.symbolNode) { + supsub.children[0].style.marginLeft = -base.italic + "em"; + } + } else if (!group.value.sub) { + // Rule 18c, d + supShift = Math.max(supShift, minSupShift, + sup.depth + 0.25 * style.metrics.xHeight); + + supsub = buildCommon$1.makeVList([ + {type: "elem", elem: supmid} + ], "shift", -supShift, options); + + supsub.children[0].style.marginRight = scriptspace; + } else { + supShift = Math.max( + supShift, minSupShift, sup.depth + 0.25 * style.metrics.xHeight); + subShift = Math.max(subShift, style.metrics.sub2); + + var ruleWidth = fontMetrics.metrics.defaultRuleThickness; + + // Rule 18e + if ((supShift - sup.depth) - (sub.height - subShift) < + 4 * ruleWidth) { + subShift = 4 * ruleWidth - (supShift - sup.depth) + sub.height; + var psi = 0.8 * style.metrics.xHeight - (supShift - sup.depth); + if (psi > 0) { + supShift += psi; + subShift -= psi; + } + } + + supsub = buildCommon$1.makeVList([ + {type: "elem", elem: submid, shift: subShift}, + {type: "elem", elem: supmid, shift: -supShift} + ], "individualShift", null, options); + + // See comment above about subscripts not being shifted + if (base instanceof domTree.symbolNode) { + supsub.children[0].style.marginLeft = -base.italic + "em"; + } + + supsub.children[0].style.marginRight = scriptspace; + supsub.children[1].style.marginRight = scriptspace; + } + + // We ensure to wrap the supsub vlist in a span.msupsub to reset text-align + var mclass = getTypeOfDomTree(base) || "mord"; + return makeSpan$1([mclass], + [base, makeSpan$1(["msupsub"], [supsub])], + options); +}; + +groupTypes.genfrac = function(group, options) { + // Fractions are handled in the TeXbook on pages 444-445, rules 15(a-e). + // Figure out what style this fraction should be in based on the + // function used + var style = options.style; + if (group.value.size === "display") { + style = Style$1.DISPLAY; + } else if (group.value.size === "text") { + style = Style$1.TEXT; + } + + var nstyle = style.fracNum(); + var dstyle = style.fracDen(); + var newOptions; + + newOptions = options.withStyle(nstyle); + var numer = buildGroup(group.value.numer, newOptions); + var numerreset = makeSpan$1([style.reset(), nstyle.cls()], + [numer], newOptions); + + newOptions = options.withStyle(dstyle); + var denom = buildGroup(group.value.denom, newOptions); + var denomreset = makeSpan$1([style.reset(), dstyle.cls()], + [denom], newOptions); + + var ruleWidth; + if (group.value.hasBarLine) { + ruleWidth = fontMetrics.metrics.defaultRuleThickness / + options.style.sizeMultiplier; + } else { + ruleWidth = 0; + } + + // Rule 15b + var numShift; + var clearance; + var denomShift; + if (style.size === Style$1.DISPLAY.size) { + numShift = style.metrics.num1; + if (ruleWidth > 0) { + clearance = 3 * ruleWidth; + } else { + clearance = 7 * fontMetrics.metrics.defaultRuleThickness; + } + denomShift = style.metrics.denom1; + } else { + if (ruleWidth > 0) { + numShift = style.metrics.num2; + clearance = ruleWidth; + } else { + numShift = style.metrics.num3; + clearance = 3 * fontMetrics.metrics.defaultRuleThickness; + } + denomShift = style.metrics.denom2; + } + + var frac; + if (ruleWidth === 0) { + // Rule 15c + var candidateClearance = + (numShift - numer.depth) - (denom.height - denomShift); + if (candidateClearance < clearance) { + numShift += 0.5 * (clearance - candidateClearance); + denomShift += 0.5 * (clearance - candidateClearance); + } + + frac = buildCommon$1.makeVList([ + {type: "elem", elem: denomreset, shift: denomShift}, + {type: "elem", elem: numerreset, shift: -numShift} + ], "individualShift", null, options); + } else { + // Rule 15d + var axisHeight = style.metrics.axisHeight; + + if ((numShift - numer.depth) - (axisHeight + 0.5 * ruleWidth) < + clearance) { + numShift += + clearance - ((numShift - numer.depth) - + (axisHeight + 0.5 * ruleWidth)); + } + + if ((axisHeight - 0.5 * ruleWidth) - (denom.height - denomShift) < + clearance) { + denomShift += + clearance - ((axisHeight - 0.5 * ruleWidth) - + (denom.height - denomShift)); + } + + var mid = makeSpan$1( + [options.style.reset(), Style$1.TEXT.cls(), "frac-line"]); + // Manually set the height of the line because its height is + // created in CSS + mid.height = ruleWidth; + + var midShift = -(axisHeight - 0.5 * ruleWidth); + + frac = buildCommon$1.makeVList([ + {type: "elem", elem: denomreset, shift: denomShift}, + {type: "elem", elem: mid, shift: midShift}, + {type: "elem", elem: numerreset, shift: -numShift} + ], "individualShift", null, options); + } + + // Since we manually change the style sometimes (with \dfrac or \tfrac), + // account for the possible size change here. + frac.height *= style.sizeMultiplier / options.style.sizeMultiplier; + frac.depth *= style.sizeMultiplier / options.style.sizeMultiplier; + + // Rule 15e + var delimSize; + if (style.size === Style$1.DISPLAY.size) { + delimSize = style.metrics.delim1; + } else { + delimSize = style.metrics.delim2; + } + + var leftDelim; + var rightDelim; + if (group.value.leftDelim == null) { + leftDelim = makeNullDelimiter(options, ["mopen"]); + } else { + leftDelim = delimiter.customSizedDelim( + group.value.leftDelim, delimSize, true, + options.withStyle(style), group.mode, ["mopen"]); + } + if (group.value.rightDelim == null) { + rightDelim = makeNullDelimiter(options, ["mclose"]); + } else { + rightDelim = delimiter.customSizedDelim( + group.value.rightDelim, delimSize, true, + options.withStyle(style), group.mode, ["mclose"]); + } + + return makeSpan$1( + ["mord", options.style.reset(), style.cls()], + [leftDelim, makeSpan$1(["mfrac"], [frac]), rightDelim], + options); +}; + +var calculateSize = function(sizeValue, style) { + var x = sizeValue.number; + if (sizeValue.unit === "ex") { + x *= style.metrics.emPerEx; + } else if (sizeValue.unit === "mu") { + x /= 18; + } + return x; +}; + +groupTypes.array = function(group, options) { + var r; + var c; + var nr = group.value.body.length; + var nc = 0; + var body = new Array(nr); + + var style = options.style; + + // Horizontal spacing + var pt = 1 / fontMetrics.metrics.ptPerEm; + var arraycolsep = 5 * pt; // \arraycolsep in article.cls + + // Vertical spacing + var baselineskip = 12 * pt; // see size10.clo + // Default \arraystretch from lttab.dtx + // TODO(gagern): may get redefined once we have user-defined macros + var arraystretch = utils$1.deflt(group.value.arraystretch, 1); + var arrayskip = arraystretch * baselineskip; + var arstrutHeight = 0.7 * arrayskip; // \strutbox in ltfsstrc.dtx and + var arstrutDepth = 0.3 * arrayskip; // \@arstrutbox in lttab.dtx + + var totalHeight = 0; + for (r = 0; r < group.value.body.length; ++r) { + var inrow = group.value.body[r]; + var height = arstrutHeight; // \@array adds an \@arstrut + var depth = arstrutDepth; // to each tow (via the template) + + if (nc < inrow.length) { + nc = inrow.length; + } + + var outrow = new Array(inrow.length); + for (c = 0; c < inrow.length; ++c) { + var elt = buildGroup(inrow[c], options); + if (depth < elt.depth) { + depth = elt.depth; + } + if (height < elt.height) { + height = elt.height; + } + outrow[c] = elt; + } + + var gap = 0; + if (group.value.rowGaps[r]) { + gap = calculateSize(group.value.rowGaps[r].value, style); + if (gap > 0) { // \@argarraycr + gap += arstrutDepth; + if (depth < gap) { + depth = gap; // \@xargarraycr + } + gap = 0; + } + } + + outrow.height = height; + outrow.depth = depth; + totalHeight += height; + outrow.pos = totalHeight; + totalHeight += depth + gap; // \@yargarraycr + body[r] = outrow; + } + + var offset = totalHeight / 2 + style.metrics.axisHeight; + var colDescriptions = group.value.cols || []; + var cols = []; + var colSep; + var colDescrNum; + for (c = 0, colDescrNum = 0; + // Continue while either there are more columns or more column + // descriptions, so trailing separators don't get lost. + c < nc || colDescrNum < colDescriptions.length; + ++c, ++colDescrNum) { + + var colDescr = colDescriptions[colDescrNum] || {}; + + var firstSeparator = true; + while (colDescr.type === "separator") { + // If there is more than one separator in a row, add a space + // between them. + if (!firstSeparator) { + colSep = makeSpan$1(["arraycolsep"], []); + colSep.style.width = + fontMetrics.metrics.doubleRuleSep + "em"; + cols.push(colSep); + } + + if (colDescr.separator === "|") { + var separator = makeSpan$1( + ["vertical-separator"], + []); + separator.style.height = totalHeight + "em"; + separator.style.verticalAlign = + -(totalHeight - offset) + "em"; + + cols.push(separator); + } else { + throw new ParseError$2( + "Invalid separator type: " + colDescr.separator); + } + + colDescrNum++; + colDescr = colDescriptions[colDescrNum] || {}; + firstSeparator = false; + } + + if (c >= nc) { + continue; + } + + var sepwidth; + if (c > 0 || group.value.hskipBeforeAndAfter) { + sepwidth = utils$1.deflt(colDescr.pregap, arraycolsep); + if (sepwidth !== 0) { + colSep = makeSpan$1(["arraycolsep"], []); + colSep.style.width = sepwidth + "em"; + cols.push(colSep); + } + } + + var col = []; + for (r = 0; r < nr; ++r) { + var row = body[r]; + var elem = row[c]; + if (!elem) { + continue; + } + var shift = row.pos - offset; + elem.depth = row.depth; + elem.height = row.height; + col.push({type: "elem", elem: elem, shift: shift}); + } + + col = buildCommon$1.makeVList(col, "individualShift", null, options); + col = makeSpan$1( + ["col-align-" + (colDescr.align || "c")], + [col]); + cols.push(col); + + if (c < nc - 1 || group.value.hskipBeforeAndAfter) { + sepwidth = utils$1.deflt(colDescr.postgap, arraycolsep); + if (sepwidth !== 0) { + colSep = makeSpan$1(["arraycolsep"], []); + colSep.style.width = sepwidth + "em"; + cols.push(colSep); + } + } + } + body = makeSpan$1(["mtable"], cols); + return makeSpan$1(["mord"], [body], options); +}; + +groupTypes.spacing = function(group, options) { + if (group.value === "\\ " || group.value === "\\space" || + group.value === " " || group.value === "~") { + // Spaces are generated by adding an actual space. Each of these + // things has an entry in the symbols table, so these will be turned + // into appropriate outputs. + if (group.mode === "text") { + return buildCommon$1.makeOrd(group, options, "textord"); + } else { + return makeSpan$1(["mspace"], + [buildCommon$1.mathsym(group.value, group.mode, options)], + options); + } + } else { + // Other kinds of spaces are of arbitrary width. We use CSS to + // generate these. + return makeSpan$1( + ["mspace", + buildCommon$1.spacingFunctions[group.value].className], + [], options); + } +}; + +groupTypes.llap = function(group, options) { + var inner = makeSpan$1( + ["inner"], [buildGroup(group.value.body, options.reset())]); + var fix = makeSpan$1(["fix"], []); + return makeSpan$1( + ["mord", "llap", options.style.cls()], [inner, fix], options); +}; + +groupTypes.rlap = function(group, options) { + var inner = makeSpan$1( + ["inner"], [buildGroup(group.value.body, options.reset())]); + var fix = makeSpan$1(["fix"], []); + return makeSpan$1( + ["mord", "rlap", options.style.cls()], [inner, fix], options); +}; + +groupTypes.op = function(group, options) { + // Operators are handled in the TeXbook pg. 443-444, rule 13(a). + var supGroup; + var subGroup; + var hasLimits = false; + if (group.type === "supsub") { + // If we have limits, supsub will pass us its group to handle. Pull + // out the superscript and subscript and set the group to the op in + // its base. + supGroup = group.value.sup; + subGroup = group.value.sub; + group = group.value.base; + hasLimits = true; + } + + var style = options.style; + + // Most operators have a large successor symbol, but these don't. + var noSuccessor = [ + "\\smallint" + ]; + + var large = false; + if (style.size === Style$1.DISPLAY.size && + group.value.symbol && + !utils$1.contains(noSuccessor, group.value.body)) { + + // Most symbol operators get larger in displaystyle (rule 13) + large = true; + } + + var base; + var baseShift = 0; + var slant = 0; + if (group.value.symbol) { + // If this is a symbol, create the symbol. + var fontName = large ? "Size2-Regular" : "Size1-Regular"; + base = buildCommon$1.makeSymbol( + group.value.body, fontName, "math", options, + ["mop", "op-symbol", large ? "large-op" : "small-op"]); + + // Shift the symbol so its center lies on the axis (rule 13). It + // appears that our fonts have the centers of the symbols already + // almost on the axis, so these numbers are very small. Note we + // don't actually apply this here, but instead it is used either in + // the vlist creation or separately when there are no limits. + baseShift = (base.height - base.depth) / 2 - + style.metrics.axisHeight * style.sizeMultiplier; + + // The slant of the symbol is just its italic correction. + slant = base.italic; + } else if (group.value.value) { + // If this is a list, compose that list. + var inner = buildExpression(group.value.value, options, true); + + base = makeSpan$1(["mop"], inner, options); + } else { + // Otherwise, this is a text operator. Build the text from the + // operator's name. + // TODO(emily): Add a space in the middle of some of these + // operators, like \limsup + var output = []; + for (var i = 1; i < group.value.body.length; i++) { + output.push(buildCommon$1.mathsym(group.value.body[i], group.mode)); + } + base = makeSpan$1(["mop"], output, options); + } + + if (hasLimits) { + // IE 8 clips \int if it is in a display: inline-block. We wrap it + // in a new span so it is an inline, and works. + base = makeSpan$1([], [base]); + + var supmid; + var supKern; + var submid; + var subKern; + var newOptions; + // We manually have to handle the superscripts and subscripts. This, + // aside from the kern calculations, is copied from supsub. + if (supGroup) { + newOptions = options.withStyle(style.sup()); + var sup = buildGroup(supGroup, newOptions); + supmid = makeSpan$1([style.reset(), style.sup().cls()], + [sup], newOptions); + + supKern = Math.max( + fontMetrics.metrics.bigOpSpacing1, + fontMetrics.metrics.bigOpSpacing3 - sup.depth); + } + + if (subGroup) { + newOptions = options.withStyle(style.sub()); + var sub = buildGroup(subGroup, newOptions); + submid = makeSpan$1([style.reset(), style.sub().cls()], + [sub], newOptions); + + subKern = Math.max( + fontMetrics.metrics.bigOpSpacing2, + fontMetrics.metrics.bigOpSpacing4 - sub.height); + } + + // Build the final group as a vlist of the possible subscript, base, + // and possible superscript. + var finalGroup; + var top; + var bottom; + if (!supGroup) { + top = base.height - baseShift; + + finalGroup = buildCommon$1.makeVList([ + {type: "kern", size: fontMetrics.metrics.bigOpSpacing5}, + {type: "elem", elem: submid}, + {type: "kern", size: subKern}, + {type: "elem", elem: base} + ], "top", top, options); + + // Here, we shift the limits by the slant of the symbol. Note + // that we are supposed to shift the limits by 1/2 of the slant, + // but since we are centering the limits adding a full slant of + // margin will shift by 1/2 that. + finalGroup.children[0].style.marginLeft = -slant + "em"; + } else if (!subGroup) { + bottom = base.depth + baseShift; + + finalGroup = buildCommon$1.makeVList([ + {type: "elem", elem: base}, + {type: "kern", size: supKern}, + {type: "elem", elem: supmid}, + {type: "kern", size: fontMetrics.metrics.bigOpSpacing5} + ], "bottom", bottom, options); + + // See comment above about slants + finalGroup.children[1].style.marginLeft = slant + "em"; + } else if (!supGroup && !subGroup) { + // This case probably shouldn't occur (this would mean the + // supsub was sending us a group with no superscript or + // subscript) but be safe. + return base; + } else { + bottom = fontMetrics.metrics.bigOpSpacing5 + + submid.height + submid.depth + + subKern + + base.depth + baseShift; + + finalGroup = buildCommon$1.makeVList([ + {type: "kern", size: fontMetrics.metrics.bigOpSpacing5}, + {type: "elem", elem: submid}, + {type: "kern", size: subKern}, + {type: "elem", elem: base}, + {type: "kern", size: supKern}, + {type: "elem", elem: supmid}, + {type: "kern", size: fontMetrics.metrics.bigOpSpacing5} + ], "bottom", bottom, options); + + // See comment above about slants + finalGroup.children[0].style.marginLeft = -slant + "em"; + finalGroup.children[2].style.marginLeft = slant + "em"; + } + + return makeSpan$1(["mop", "op-limits"], [finalGroup], options); + } else { + if (group.value.symbol) { + base.style.top = baseShift + "em"; + } + + return base; + } +}; + +groupTypes.mod = function(group, options) { + var inner = []; + + if (group.value.modType === "bmod") { + // “\nonscript\mskip-\medmuskip\mkern5mu” + if (!options.style.isTight()) { + inner.push(makeSpan$1( + ["mspace", "negativemediumspace"], [], options)); + } + inner.push(makeSpan$1(["mspace", "thickspace"], [], options)); + } else if (options.style.size === Style$1.DISPLAY.size) { + inner.push(makeSpan$1(["mspace", "quad"], [], options)); + } else if (group.value.modType === "mod") { + inner.push(makeSpan$1(["mspace", "twelvemuspace"], [], options)); + } else { + inner.push(makeSpan$1(["mspace", "eightmuspace"], [], options)); + } + + if (group.value.modType === "pod" || group.value.modType === "pmod") { + inner.push(buildCommon$1.mathsym("(", group.mode)); + } + + if (group.value.modType !== "pod") { + var modInner = [ + buildCommon$1.mathsym("m", group.mode), + buildCommon$1.mathsym("o", group.mode), + buildCommon$1.mathsym("d", group.mode)]; + if (group.value.modType === "bmod") { + inner.push(makeSpan$1(["mbin"], modInner, options)); + // “\mkern5mu\nonscript\mskip-\medmuskip” + inner.push(makeSpan$1(["mspace", "thickspace"], [], options)); + if (!options.style.isTight()) { + inner.push(makeSpan$1( + ["mspace", "negativemediumspace"], [], options)); + } + } else { + Array.prototype.push.apply(inner, modInner); + inner.push(makeSpan$1(["mspace", "sixmuspace"], [], options)); + } + } + + if (group.value.value) { + Array.prototype.push.apply(inner, + buildExpression(group.value.value, options, false)); + } + + if (group.value.modType === "pod" || group.value.modType === "pmod") { + inner.push(buildCommon$1.mathsym(")", group.mode)); + } + + return buildCommon$1.makeFragment(inner); +}; + +groupTypes.katex = function(group, options) { + // The KaTeX logo. The offsets for the K and a were chosen to look + // good, but the offsets for the T, E, and X were taken from the + // definition of \TeX in TeX (see TeXbook pg. 356) + var k = makeSpan$1( + ["k"], [buildCommon$1.mathsym("K", group.mode)], options); + var a = makeSpan$1( + ["a"], [buildCommon$1.mathsym("A", group.mode)], options); + + a.height = (a.height + 0.2) * 0.75; + a.depth = (a.height - 0.2) * 0.75; + + var t = makeSpan$1( + ["t"], [buildCommon$1.mathsym("T", group.mode)], options); + var e = makeSpan$1( + ["e"], [buildCommon$1.mathsym("E", group.mode)], options); + + e.height = (e.height - 0.2155); + e.depth = (e.depth + 0.2155); + + var x = makeSpan$1( + ["x"], [buildCommon$1.mathsym("X", group.mode)], options); + + return makeSpan$1( + ["mord", "katex-logo"], [k, a, t, e, x], options); +}; + +groupTypes.overline = function(group, options) { + // Overlines are handled in the TeXbook pg 443, Rule 9. + var style = options.style; + + // Build the inner group in the cramped style. + var innerGroup = buildGroup(group.value.body, + options.withStyle(style.cramp())); + + var ruleWidth = fontMetrics.metrics.defaultRuleThickness / + style.sizeMultiplier; + + // Create the line above the body + var line = makeSpan$1( + [style.reset(), Style$1.TEXT.cls(), "overline-line"]); + line.height = ruleWidth; + line.maxFontSize = 1.0; + + // Generate the vlist, with the appropriate kerns + var vlist = buildCommon$1.makeVList([ + {type: "elem", elem: innerGroup}, + {type: "kern", size: 3 * ruleWidth}, + {type: "elem", elem: line}, + {type: "kern", size: ruleWidth} + ], "firstBaseline", null, options); + + return makeSpan$1(["mord", "overline"], [vlist], options); +}; + +groupTypes.underline = function(group, options) { + // Underlines are handled in the TeXbook pg 443, Rule 10. + var style = options.style; + + // Build the inner group. + var innerGroup = buildGroup(group.value.body, options); + + var ruleWidth = fontMetrics.metrics.defaultRuleThickness / + style.sizeMultiplier; + + // Create the line above the body + var line = makeSpan$1([style.reset(), Style$1.TEXT.cls(), "underline-line"]); + line.height = ruleWidth; + line.maxFontSize = 1.0; + + // Generate the vlist, with the appropriate kerns + var vlist = buildCommon$1.makeVList([ + {type: "kern", size: ruleWidth}, + {type: "elem", elem: line}, + {type: "kern", size: 3 * ruleWidth}, + {type: "elem", elem: innerGroup} + ], "top", innerGroup.height, options); + + return makeSpan$1(["mord", "underline"], [vlist], options); +}; + +groupTypes.sqrt = function(group, options) { + // Square roots are handled in the TeXbook pg. 443, Rule 11. + var style = options.style; + + // First, we do the same steps as in overline to build the inner group + // and line + var inner = buildGroup(group.value.body, options.withStyle(style.cramp())); + + var ruleWidth = fontMetrics.metrics.defaultRuleThickness / + style.sizeMultiplier; + + var line = makeSpan$1( + [style.reset(), Style$1.TEXT.cls(), "sqrt-line"], [], + options); + line.height = ruleWidth; + line.maxFontSize = 1.0; + + var phi = ruleWidth; + if (style.id < Style$1.TEXT.id) { + phi = style.metrics.xHeight; + } + + // Calculate the clearance between the body and line + var lineClearance = ruleWidth + phi / 4; + + var innerHeight = (inner.height + inner.depth) * style.sizeMultiplier; + var minDelimiterHeight = innerHeight + lineClearance + ruleWidth; + + // Create a \surd delimiter of the required minimum size + var delim = makeSpan$1(["sqrt-sign"], [ + delimiter.customSizedDelim("\\surd", minDelimiterHeight, + false, options, group.mode)], + options); + + var delimDepth = (delim.height + delim.depth) - ruleWidth; + + // Adjust the clearance based on the delimiter size + if (delimDepth > inner.height + inner.depth + lineClearance) { + lineClearance = + (lineClearance + delimDepth - inner.height - inner.depth) / 2; + } + + // Shift the delimiter so that its top lines up with the top of the line + var delimShift = -(inner.height + lineClearance + ruleWidth) + delim.height; + delim.style.top = delimShift + "em"; + delim.height -= delimShift; + delim.depth += delimShift; + + // We add a special case here, because even when `inner` is empty, we + // still get a line. So, we use a simple heuristic to decide if we + // should omit the body entirely. (note this doesn't work for something + // like `\sqrt{\rlap{x}}`, but if someone is doing that they deserve for + // it not to work. + var body; + if (inner.height === 0 && inner.depth === 0) { + body = makeSpan$1(); + } else { + body = buildCommon$1.makeVList([ + {type: "elem", elem: inner}, + {type: "kern", size: lineClearance}, + {type: "elem", elem: line}, + {type: "kern", size: ruleWidth} + ], "firstBaseline", null, options); + } + + if (!group.value.index) { + return makeSpan$1(["mord", "sqrt"], [delim, body], options); + } else { + // Handle the optional root index + + // The index is always in scriptscript style + var newOptions = options.withStyle(Style$1.SCRIPTSCRIPT); + var root = buildGroup(group.value.index, newOptions); + var rootWrap = makeSpan$1( + [style.reset(), Style$1.SCRIPTSCRIPT.cls()], + [root], + newOptions); + + // Figure out the height and depth of the inner part + var innerRootHeight = Math.max(delim.height, body.height); + var innerRootDepth = Math.max(delim.depth, body.depth); + + // The amount the index is shifted by. This is taken from the TeX + // source, in the definition of `\r@@t`. + var toShift = 0.6 * (innerRootHeight - innerRootDepth); + + // Build a VList with the superscript shifted up correctly + var rootVList = buildCommon$1.makeVList( + [{type: "elem", elem: rootWrap}], + "shift", -toShift, options); + // Add a class surrounding it so we can add on the appropriate + // kerning + var rootVListWrap = makeSpan$1(["root"], [rootVList]); + + return makeSpan$1(["mord", "sqrt"], + [rootVListWrap, delim, body], options); + } +}; + +groupTypes.sizing = function(group, options) { + // Handle sizing operators like \Huge. Real TeX doesn't actually allow + // these functions inside of math expressions, so we do some special + // handling. + var inner = buildExpression(group.value.value, + options.withSize(group.value.size), false); + + // Compute the correct maxFontSize. + var style = options.style; + var fontSize = buildCommon$1.sizingMultiplier[group.value.size]; + fontSize = fontSize * style.sizeMultiplier; + + // Add size-resetting classes to the inner list and set maxFontSize + // manually. Handle nested size changes. + for (var i = 0; i < inner.length; i++) { + var pos = utils$1.indexOf(inner[i].classes, "sizing"); + if (pos < 0) { + inner[i].classes.push("sizing", "reset-" + options.size, + group.value.size, style.cls()); + inner[i].maxFontSize = fontSize; + } else if (inner[i].classes[pos + 1] === "reset-" + group.value.size) { + // This is a nested size change: e.g., inner[i] is the "b" in + // `\Huge a \small b`. Override the old size (the `reset-` class) + // but not the new size. + inner[i].classes[pos + 1] = "reset-" + options.size; + } + } + + return buildCommon$1.makeFragment(inner); +}; + +groupTypes.styling = function(group, options) { + // Style changes are handled in the TeXbook on pg. 442, Rule 3. + + // Figure out what style we're changing to. + var styleMap = { + "display": Style$1.DISPLAY, + "text": Style$1.TEXT, + "script": Style$1.SCRIPT, + "scriptscript": Style$1.SCRIPTSCRIPT + }; + + var newStyle = styleMap[group.value.style]; + var newOptions = options.withStyle(newStyle); + + // Build the inner expression in the new style. + var inner = buildExpression( + group.value.value, newOptions, false); + + // Add style-resetting classes to the inner list. Handle nested changes. + for (var i = 0; i < inner.length; i++) { + var pos = utils$1.indexOf(inner[i].classes, newStyle.reset()); + if (pos < 0) { + inner[i].classes.push(options.style.reset(), newStyle.cls()); + } else { + // This is a nested style change, as `\textstyle a\scriptstyle b`. + // Only override the old style (the reset class). + inner[i].classes[pos] = options.style.reset(); + } + } + + return new buildCommon$1.makeFragment(inner); +}; + +groupTypes.font = function(group, options) { + var font = group.value.font; + return buildGroup(group.value.body, options.withFont(font)); +}; + +groupTypes.delimsizing = function(group, options) { + var delim = group.value.value; + + if (delim === ".") { + // Empty delimiters still count as elements, even though they don't + // show anything. + return makeSpan$1([group.value.mclass]); + } + + // Use delimiter.sizedDelim to generate the delimiter. + return delimiter.sizedDelim( + delim, group.value.size, options, group.mode, + [group.value.mclass]); +}; + +groupTypes.leftright = function(group, options) { + // Build the inner expression + var inner = buildExpression(group.value.body, options.reset(), true); + + var innerHeight = 0; + var innerDepth = 0; + var hadMiddle = false; + + // Calculate its height and depth + for (var i = 0; i < inner.length; i++) { + if (inner[i].isMiddle) { + hadMiddle = true; + } else { + innerHeight = Math.max(inner[i].height, innerHeight); + innerDepth = Math.max(inner[i].depth, innerDepth); + } + } + + var style = options.style; + + // The size of delimiters is the same, regardless of what style we are + // in. Thus, to correctly calculate the size of delimiter we need around + // a group, we scale down the inner size based on the size. + innerHeight *= style.sizeMultiplier; + innerDepth *= style.sizeMultiplier; + + var leftDelim; + if (group.value.left === ".") { + // Empty delimiters in \left and \right make null delimiter spaces. + leftDelim = makeNullDelimiter(options, ["mopen"]); + } else { + // Otherwise, use leftRightDelim to generate the correct sized + // delimiter. + leftDelim = delimiter.leftRightDelim( + group.value.left, innerHeight, innerDepth, options, + group.mode, ["mopen"]); + } + // Add it to the beginning of the expression + inner.unshift(leftDelim); + + // Handle middle delimiters + if (hadMiddle) { + for (i = 1; i < inner.length; i++) { + if (inner[i].isMiddle) { + // Apply the options that were active when \middle was called + inner[i] = delimiter.leftRightDelim( + inner[i].isMiddle.value, innerHeight, innerDepth, + inner[i].isMiddle.options, group.mode, []); + } + } + } + + var rightDelim; + // Same for the right delimiter + if (group.value.right === ".") { + rightDelim = makeNullDelimiter(options, ["mclose"]); + } else { + rightDelim = delimiter.leftRightDelim( + group.value.right, innerHeight, innerDepth, options, + group.mode, ["mclose"]); + } + // Add it to the end of the expression. + inner.push(rightDelim); + + return makeSpan$1( + ["minner", style.cls()], inner, options); +}; + +groupTypes.middle = function(group, options) { + var middleDelim; + if (group.value.value === ".") { + middleDelim = makeNullDelimiter(options, []); + } else { + middleDelim = delimiter.sizedDelim( + group.value.value, 1, options, + group.mode, []); + middleDelim.isMiddle = {value: group.value.value, options: options}; + } + return middleDelim; +}; + +groupTypes.rule = function(group, options) { + // Make an empty span for the rule + var rule = makeSpan$1(["mord", "rule"], [], options); + var style = options.style; + + // Calculate the shift, width, and height of the rule, and account for units + var shift = 0; + if (group.value.shift) { + shift = calculateSize(group.value.shift, style); + } + + var width = calculateSize(group.value.width, style); + var height = calculateSize(group.value.height, style); + + // The sizes of rules are absolute, so make it larger if we are in a + // smaller style. + shift /= style.sizeMultiplier; + width /= style.sizeMultiplier; + height /= style.sizeMultiplier; + + // Style the rule to the right size + rule.style.borderRightWidth = width + "em"; + rule.style.borderTopWidth = height + "em"; + rule.style.bottom = shift + "em"; + + // Record the height and width + rule.width = width; + rule.height = height + shift; + rule.depth = -shift; + + return rule; +}; + +groupTypes.kern = function(group, options) { + // Make an empty span for the rule + var rule = makeSpan$1(["mord", "rule"], [], options); + var style = options.style; + + var dimension = 0; + if (group.value.dimension) { + dimension = calculateSize(group.value.dimension, style); + } + + dimension /= style.sizeMultiplier; + + rule.style.marginLeft = dimension + "em"; + + return rule; +}; + +groupTypes.accent = function(group, options) { + // Accents are handled in the TeXbook pg. 443, rule 12. + var base = group.value.base; + var style = options.style; + + var supsubGroup; + if (group.type === "supsub") { + // If our base is a character box, and we have superscripts and + // subscripts, the supsub will defer to us. In particular, we want + // to attach the superscripts and subscripts to the inner body (so + // that the position of the superscripts and subscripts won't be + // affected by the height of the accent). We accomplish this by + // sticking the base of the accent into the base of the supsub, and + // rendering that, while keeping track of where the accent is. + + // The supsub group is the group that was passed in + var supsub = group; + // The real accent group is the base of the supsub group + group = supsub.value.base; + // The character box is the base of the accent group + base = group.value.base; + // Stick the character box into the base of the supsub group + supsub.value.base = base; + + // Rerender the supsub group with its new base, and store that + // result. + supsubGroup = buildGroup( + supsub, options.reset()); + } + + // Build the base group + var body = buildGroup( + base, options.withStyle(style.cramp())); + + // Calculate the skew of the accent. This is based on the line "If the + // nucleus is not a single character, let s = 0; otherwise set s to the + // kern amount for the nucleus followed by the \skewchar of its font." + // Note that our skew metrics are just the kern between each character + // and the skewchar. + var skew; + if (isCharacterBox(base)) { + // If the base is a character box, then we want the skew of the + // innermost character. To do that, we find the innermost character: + var baseChar = getBaseElem(base); + // Then, we render its group to get the symbol inside it + var baseGroup = buildGroup( + baseChar, options.withStyle(style.cramp())); + // Finally, we pull the skew off of the symbol. + skew = baseGroup.skew; + // Note that we now throw away baseGroup, because the layers we + // removed with getBaseElem might contain things like \color which + // we can't get rid of. + // TODO(emily): Find a better way to get the skew + } else { + skew = 0; + } + + // calculate the amount of space between the body and the accent + var clearance = Math.min( + body.height, + style.metrics.xHeight); + + // Build the accent + var accent = buildCommon$1.makeSymbol( + group.value.accent, "Main-Regular", "math", options); + // Remove the italic correction of the accent, because it only serves to + // shift the accent over to a place we don't want. + accent.italic = 0; + + // The \vec character that the fonts use is a combining character, and + // thus shows up much too far to the left. To account for this, we add a + // specific class which shifts the accent over to where we want it. + // TODO(emily): Fix this in a better way, like by changing the font + var vecClass = group.value.accent === "\\vec" ? "accent-vec" : null; + + var accentBody = makeSpan$1(["accent-body", vecClass], [ + makeSpan$1([], [accent])]); + + accentBody = buildCommon$1.makeVList([ + {type: "elem", elem: body}, + {type: "kern", size: -clearance}, + {type: "elem", elem: accentBody} + ], "firstBaseline", null, options); + + // Shift the accent over by the skew. Note we shift by twice the skew + // because we are centering the accent, so by adding 2*skew to the left, + // we shift it to the right by 1*skew. + accentBody.children[1].style.marginLeft = 2 * skew + "em"; + + var accentWrap = makeSpan$1(["mord", "accent"], [accentBody], options); + + if (supsubGroup) { + // Here, we replace the "base" child of the supsub with our newly + // generated accent. + supsubGroup.children[0] = accentWrap; + + // Since we don't rerun the height calculation after replacing the + // accent, we manually recalculate height. + supsubGroup.height = Math.max(accentWrap.height, supsubGroup.height); + + // Accents should always be ords, even when their innards are not. + supsubGroup.classes[0] = "mord"; + + return supsubGroup; + } else { + return accentWrap; + } +}; + +groupTypes.phantom = function(group, options) { + var elements = buildExpression( + group.value.value, + options.withPhantom(), + false + ); + + // \phantom isn't supposed to affect the elements it contains. + // See "color" for more details. + return new buildCommon$1.makeFragment(elements); +}; + +groupTypes.mclass = function(group, options) { + var elements = buildExpression(group.value.value, options, true); + + return makeSpan$1([group.value.mclass], elements, options); +}; + +/** + * buildGroup is the function that takes a group and calls the correct groupType + * function for it. It also handles the interaction of size and style changes + * between parents and children. + */ +var buildGroup = function(group, options) { + if (!group) { + return makeSpan$1(); + } + + if (groupTypes[group.type]) { + // Call the groupTypes function + var groupNode = groupTypes[group.type](group, options); + var multiplier; + + // If the style changed between the parent and the current group, + // account for the size difference + if (options.style !== options.parentStyle) { + multiplier = options.style.sizeMultiplier / + options.parentStyle.sizeMultiplier; + + groupNode.height *= multiplier; + groupNode.depth *= multiplier; + } + + // If the size changed between the parent and the current group, account + // for that size difference. + if (options.size !== options.parentSize) { + multiplier = buildCommon$1.sizingMultiplier[options.size] / + buildCommon$1.sizingMultiplier[options.parentSize]; + + groupNode.height *= multiplier; + groupNode.depth *= multiplier; + } + + return groupNode; + } else { + throw new ParseError$2( + "Got group of unknown type: '" + group.type + "'"); + } +}; + +/** + * Take an entire parse tree, and build it into an appropriate set of HTML + * nodes. + */ +var buildHTML$1 = function(tree, options) { + // buildExpression is destructive, so we need to make a clone + // of the incoming tree so that it isn't accidentally changed + tree = JSON.parse(JSON.stringify(tree)); + + // Build the expression contained in the tree + var expression = buildExpression(tree, options, true); + var body = makeSpan$1(["base", options.style.cls()], expression, options); + + // Add struts, which ensure that the top of the HTML element falls at the + // height of the expression, and the bottom of the HTML element falls at the + // depth of the expression. + var topStrut = makeSpan$1(["strut"]); + var bottomStrut = makeSpan$1(["strut", "bottom"]); + + topStrut.style.height = body.height + "em"; + bottomStrut.style.height = (body.height + body.depth) + "em"; + // We'd like to use `vertical-align: top` but in IE 9 this lowers the + // baseline of the box to the bottom of this strut (instead staying in the + // normal place) so we use an absolute value for vertical-align instead + bottomStrut.style.verticalAlign = -body.depth + "em"; + + // Wrap the struts and body together + var htmlNode = makeSpan$1(["katex-html"], [topStrut, bottomStrut, body]); + + htmlNode.setAttribute("aria-hidden", "true"); + + return htmlNode; +}; + +var buildHTML_1 = buildHTML$1; + +/** + * These objects store data about MathML nodes. This is the MathML equivalent + * of the types in domTree.js. Since MathML handles its own rendering, and + * since we're mainly using MathML to improve accessibility, we don't manage + * any of the styling state that the plain DOM nodes do. + * + * The `toNode` and `toMarkup` functions work simlarly to how they do in + * domTree.js, creating namespaced DOM nodes and HTML text markup respectively. + */ + +var utils$8 = utils$4; + +/** + * This node represents a general purpose MathML node of any type. The + * constructor requires the type of node to create (for example, `"mo"` or + * `"mspace"`, corresponding to `` and `` tags). + */ +function MathNode(type, children) { + this.type = type; + this.attributes = {}; + this.children = children || []; +} + +/** + * Sets an attribute on a MathML node. MathML depends on attributes to convey a + * semantic content, so this is used heavily. + */ +MathNode.prototype.setAttribute = function(name, value) { + this.attributes[name] = value; +}; + +/** + * Converts the math node into a MathML-namespaced DOM element. + */ +MathNode.prototype.toNode = function() { + var this$1 = this; + + var node = document.createElementNS( + "http://www.w3.org/1998/Math/MathML", this.type); + + for (var attr in this.attributes) { + if (Object.prototype.hasOwnProperty.call(this$1.attributes, attr)) { + node.setAttribute(attr, this$1.attributes[attr]); + } + } + + for (var i = 0; i < this.children.length; i++) { + node.appendChild(this$1.children[i].toNode()); + } + + return node; +}; + +/** + * Converts the math node into an HTML markup string. + */ +MathNode.prototype.toMarkup = function() { + var this$1 = this; + + var markup = "<" + this.type; + + // Add the attributes + for (var attr in this.attributes) { + if (Object.prototype.hasOwnProperty.call(this$1.attributes, attr)) { + markup += " " + attr + "=\""; + markup += utils$8.escape(this$1.attributes[attr]); + markup += "\""; + } + } + + markup += ">"; + + for (var i = 0; i < this.children.length; i++) { + markup += this$1.children[i].toMarkup(); + } + + markup += ""; + + return markup; +}; + +/** + * This node represents a piece of text. + */ +function TextNode(text) { + this.text = text; +} + +/** + * Converts the text node into a DOM text node. + */ +TextNode.prototype.toNode = function() { + return document.createTextNode(this.text); +}; + +/** + * Converts the text node into HTML markup (which is just the text itself). + */ +TextNode.prototype.toMarkup = function() { + return utils$8.escape(this.text); +}; + +var mathMLTree$1 = { + MathNode: MathNode, + TextNode: TextNode +}; + +/** + * This file converts a parse tree into a cooresponding MathML tree. The main + * entry point is the `buildMathML` function, which takes a parse tree from the + * parser. + */ + +var buildCommon$5 = buildCommon$2; +var fontMetrics$5 = fontMetrics$1; +var mathMLTree = mathMLTree$1; +var ParseError$4 = ParseError_1; +var symbols$4 = symbols$1; +var utils$7 = utils$4; + +var makeSpan$4 = buildCommon$5.makeSpan; +var fontMap$1 = buildCommon$5.fontMap; + +/** + * Takes a symbol and converts it into a MathML text node after performing + * optional replacement from symbols.js. + */ +var makeText = function(text, mode) { + if (symbols$4[mode][text] && symbols$4[mode][text].replace) { + text = symbols$4[mode][text].replace; + } + + return new mathMLTree.TextNode(text); +}; + +/** + * Returns the math variant as a string or null if none is required. + */ +var getVariant = function(group, options) { + var font = options.font; + if (!font) { + return null; + } + + var mode = group.mode; + if (font === "mathit") { + return "italic"; + } + + var value = group.value; + if (utils$7.contains(["\\imath", "\\jmath"], value)) { + return null; + } + + if (symbols$4[mode][value] && symbols$4[mode][value].replace) { + value = symbols$4[mode][value].replace; + } + + var fontName = fontMap$1[font].fontName; + if (fontMetrics$5.getCharacterMetrics(value, fontName)) { + return fontMap$1[options.font].variant; + } + + return null; +}; + +/** + * Functions for handling the different types of groups found in the parse + * tree. Each function should take a parse group and return a MathML node. + */ +var groupTypes$1 = {}; + +groupTypes$1.mathord = function(group, options) { + var node = new mathMLTree.MathNode( + "mi", + [makeText(group.value, group.mode)]); + + var variant = getVariant(group, options); + if (variant) { + node.setAttribute("mathvariant", variant); + } + return node; +}; + +groupTypes$1.textord = function(group, options) { + var text = makeText(group.value, group.mode); + + var variant = getVariant(group, options) || "normal"; + + var node; + if (/[0-9]/.test(group.value)) { + // TODO(kevinb) merge adjacent nodes + // do it as a post processing step + node = new mathMLTree.MathNode("mn", [text]); + if (options.font) { + node.setAttribute("mathvariant", variant); + } + } else { + node = new mathMLTree.MathNode("mi", [text]); + node.setAttribute("mathvariant", variant); + } + + return node; +}; + +groupTypes$1.bin = function(group) { + var node = new mathMLTree.MathNode( + "mo", [makeText(group.value, group.mode)]); + + return node; +}; + +groupTypes$1.rel = function(group) { + var node = new mathMLTree.MathNode( + "mo", [makeText(group.value, group.mode)]); + + return node; +}; + +groupTypes$1.open = function(group) { + var node = new mathMLTree.MathNode( + "mo", [makeText(group.value, group.mode)]); + + return node; +}; + +groupTypes$1.close = function(group) { + var node = new mathMLTree.MathNode( + "mo", [makeText(group.value, group.mode)]); + + return node; +}; + +groupTypes$1.inner = function(group) { + var node = new mathMLTree.MathNode( + "mo", [makeText(group.value, group.mode)]); + + return node; +}; + +groupTypes$1.punct = function(group) { + var node = new mathMLTree.MathNode( + "mo", [makeText(group.value, group.mode)]); + + node.setAttribute("separator", "true"); + + return node; +}; + +groupTypes$1.ordgroup = function(group, options) { + var inner = buildExpression$1(group.value, options); + + var node = new mathMLTree.MathNode("mrow", inner); + + return node; +}; + +groupTypes$1.text = function(group, options) { + var inner = buildExpression$1(group.value.body, options); + + var node = new mathMLTree.MathNode("mtext", inner); + + return node; +}; + +groupTypes$1.color = function(group, options) { + var inner = buildExpression$1(group.value.value, options); + + var node = new mathMLTree.MathNode("mstyle", inner); + + node.setAttribute("mathcolor", group.value.color); + + return node; +}; + +groupTypes$1.supsub = function(group, options) { + var children = [buildGroup$1(group.value.base, options)]; + + if (group.value.sub) { + children.push(buildGroup$1(group.value.sub, options)); + } + + if (group.value.sup) { + children.push(buildGroup$1(group.value.sup, options)); + } + + var nodeType; + if (!group.value.sub) { + nodeType = "msup"; + } else if (!group.value.sup) { + nodeType = "msub"; + } else { + nodeType = "msubsup"; + } + + var node = new mathMLTree.MathNode(nodeType, children); + + return node; +}; + +groupTypes$1.genfrac = function(group, options) { + var node = new mathMLTree.MathNode( + "mfrac", + [buildGroup$1(group.value.numer, options), + buildGroup$1(group.value.denom, options)]); + + if (!group.value.hasBarLine) { + node.setAttribute("linethickness", "0px"); + } + + if (group.value.leftDelim != null || group.value.rightDelim != null) { + var withDelims = []; + + if (group.value.leftDelim != null) { + var leftOp = new mathMLTree.MathNode( + "mo", [new mathMLTree.TextNode(group.value.leftDelim)]); + + leftOp.setAttribute("fence", "true"); + + withDelims.push(leftOp); + } + + withDelims.push(node); + + if (group.value.rightDelim != null) { + var rightOp = new mathMLTree.MathNode( + "mo", [new mathMLTree.TextNode(group.value.rightDelim)]); + + rightOp.setAttribute("fence", "true"); + + withDelims.push(rightOp); + } + + var outerNode = new mathMLTree.MathNode("mrow", withDelims); + + return outerNode; + } + + return node; +}; + +groupTypes$1.array = function(group, options) { + return new mathMLTree.MathNode( + "mtable", group.value.body.map(function(row) { + return new mathMLTree.MathNode( + "mtr", row.map(function(cell) { + return new mathMLTree.MathNode( + "mtd", [buildGroup$1(cell, options)]); + })); + })); +}; + +groupTypes$1.sqrt = function(group, options) { + var node; + if (group.value.index) { + node = new mathMLTree.MathNode( + "mroot", [ + buildGroup$1(group.value.body, options), + buildGroup$1(group.value.index, options) + ]); + } else { + node = new mathMLTree.MathNode( + "msqrt", [buildGroup$1(group.value.body, options)]); + } + + return node; +}; + +groupTypes$1.leftright = function(group, options) { + var inner = buildExpression$1(group.value.body, options); + + if (group.value.left !== ".") { + var leftNode = new mathMLTree.MathNode( + "mo", [makeText(group.value.left, group.mode)]); + + leftNode.setAttribute("fence", "true"); + + inner.unshift(leftNode); + } + + if (group.value.right !== ".") { + var rightNode = new mathMLTree.MathNode( + "mo", [makeText(group.value.right, group.mode)]); + + rightNode.setAttribute("fence", "true"); + + inner.push(rightNode); + } + + var outerNode = new mathMLTree.MathNode("mrow", inner); + + return outerNode; +}; + +groupTypes$1.middle = function(group, options) { + var middleNode = new mathMLTree.MathNode( + "mo", [makeText(group.value.middle, group.mode)]); + middleNode.setAttribute("fence", "true"); + return middleNode; +}; + +groupTypes$1.accent = function(group, options) { + var accentNode = new mathMLTree.MathNode( + "mo", [makeText(group.value.accent, group.mode)]); + + var node = new mathMLTree.MathNode( + "mover", + [buildGroup$1(group.value.base, options), + accentNode]); + + node.setAttribute("accent", "true"); + + return node; +}; + +groupTypes$1.spacing = function(group) { + var node; + + if (group.value === "\\ " || group.value === "\\space" || + group.value === " " || group.value === "~") { + node = new mathMLTree.MathNode( + "mtext", [new mathMLTree.TextNode("\u00a0")]); + } else { + node = new mathMLTree.MathNode("mspace"); + + node.setAttribute( + "width", buildCommon$5.spacingFunctions[group.value].size); + } + + return node; +}; + +groupTypes$1.op = function(group, options) { + var node; + + // TODO(emily): handle big operators using the `largeop` attribute + + if (group.value.symbol) { + // This is a symbol. Just add the symbol. + node = new mathMLTree.MathNode( + "mo", [makeText(group.value.body, group.mode)]); + } else if (group.value.value) { + // This is an operator with children. Add them. + node = new mathMLTree.MathNode( + "mo", buildExpression$1(group.value.value, options)); + } else { + // This is a text operator. Add all of the characters from the + // operator's name. + // TODO(emily): Add a space in the middle of some of these + // operators, like \limsup. + node = new mathMLTree.MathNode( + "mi", [new mathMLTree.TextNode(group.value.body.slice(1))]); + } + + return node; +}; + +groupTypes$1.mod = function(group, options) { + var inner = []; + + if (group.value.modType === "pod" || group.value.modType === "pmod") { + inner.push(new mathMLTree.MathNode( + "mo", [makeText("(", group.mode)])); + } + if (group.value.modType !== "pod") { + inner.push(new mathMLTree.MathNode( + "mo", [makeText("mod", group.mode)])); + } + if (group.value.value) { + var space = new mathMLTree.MathNode("mspace"); + space.setAttribute("width", "0.333333em"); + inner.push(space); + inner = inner.concat(buildExpression$1(group.value.value, options)); + } + if (group.value.modType === "pod" || group.value.modType === "pmod") { + inner.push(new mathMLTree.MathNode( + "mo", [makeText(")", group.mode)])); + } + + return new mathMLTree.MathNode("mo", inner); +}; + +groupTypes$1.katex = function(group) { + var node = new mathMLTree.MathNode( + "mtext", [new mathMLTree.TextNode("KaTeX")]); + + return node; +}; + +groupTypes$1.font = function(group, options) { + var font = group.value.font; + return buildGroup$1(group.value.body, options.withFont(font)); +}; + +groupTypes$1.delimsizing = function(group) { + var children = []; + + if (group.value.value !== ".") { + children.push(makeText(group.value.value, group.mode)); + } + + var node = new mathMLTree.MathNode("mo", children); + + if (group.value.mclass === "mopen" || + group.value.mclass === "mclose") { + // Only some of the delimsizing functions act as fences, and they + // return "mopen" or "mclose" mclass. + node.setAttribute("fence", "true"); + } else { + // Explicitly disable fencing if it's not a fence, to override the + // defaults. + node.setAttribute("fence", "false"); + } + + return node; +}; + +groupTypes$1.styling = function(group, options) { + var inner = buildExpression$1(group.value.value, options); + + var node = new mathMLTree.MathNode("mstyle", inner); + + var styleAttributes = { + "display": ["0", "true"], + "text": ["0", "false"], + "script": ["1", "false"], + "scriptscript": ["2", "false"] + }; + + var attr = styleAttributes[group.value.style]; + + node.setAttribute("scriptlevel", attr[0]); + node.setAttribute("displaystyle", attr[1]); + + return node; +}; + +groupTypes$1.sizing = function(group, options) { + var inner = buildExpression$1(group.value.value, options); + + var node = new mathMLTree.MathNode("mstyle", inner); + + // TODO(emily): This doesn't produce the correct size for nested size + // changes, because we don't keep state of what style we're currently + // in, so we can't reset the size to normal before changing it. Now + // that we're passing an options parameter we should be able to fix + // this. + node.setAttribute( + "mathsize", buildCommon$5.sizingMultiplier[group.value.size] + "em"); + + return node; +}; + +groupTypes$1.overline = function(group, options) { + var operator = new mathMLTree.MathNode( + "mo", [new mathMLTree.TextNode("\u203e")]); + operator.setAttribute("stretchy", "true"); + + var node = new mathMLTree.MathNode( + "mover", + [buildGroup$1(group.value.body, options), + operator]); + node.setAttribute("accent", "true"); + + return node; +}; + +groupTypes$1.underline = function(group, options) { + var operator = new mathMLTree.MathNode( + "mo", [new mathMLTree.TextNode("\u203e")]); + operator.setAttribute("stretchy", "true"); + + var node = new mathMLTree.MathNode( + "munder", + [buildGroup$1(group.value.body, options), + operator]); + node.setAttribute("accentunder", "true"); + + return node; +}; + +groupTypes$1.rule = function(group) { + // TODO(emily): Figure out if there's an actual way to draw black boxes + // in MathML. + var node = new mathMLTree.MathNode("mrow"); + + return node; +}; + +groupTypes$1.kern = function(group) { + // TODO(kevin): Figure out if there's a way to add space in MathML + var node = new mathMLTree.MathNode("mrow"); + + return node; +}; + +groupTypes$1.llap = function(group, options) { + var node = new mathMLTree.MathNode( + "mpadded", [buildGroup$1(group.value.body, options)]); + + node.setAttribute("lspace", "-1width"); + node.setAttribute("width", "0px"); + + return node; +}; + +groupTypes$1.rlap = function(group, options) { + var node = new mathMLTree.MathNode( + "mpadded", [buildGroup$1(group.value.body, options)]); + + node.setAttribute("width", "0px"); + + return node; +}; + +groupTypes$1.phantom = function(group, options) { + var inner = buildExpression$1(group.value.value, options); + return new mathMLTree.MathNode("mphantom", inner); +}; + +groupTypes$1.mclass = function(group, options) { + var inner = buildExpression$1(group.value.value, options); + return new mathMLTree.MathNode("mstyle", inner); +}; + +/** + * Takes a list of nodes, builds them, and returns a list of the generated + * MathML nodes. A little simpler than the HTML version because we don't do any + * previous-node handling. + */ +var buildExpression$1 = function(expression, options) { + var groups = []; + for (var i = 0; i < expression.length; i++) { + var group = expression[i]; + groups.push(buildGroup$1(group, options)); + } + return groups; +}; + +/** + * Takes a group from the parser and calls the appropriate groupTypes function + * on it to produce a MathML node. + */ +var buildGroup$1 = function(group, options) { + if (!group) { + return new mathMLTree.MathNode("mrow"); + } + + if (groupTypes$1[group.type]) { + // Call the groupTypes function + return groupTypes$1[group.type](group, options); + } else { + throw new ParseError$4( + "Got group of unknown type: '" + group.type + "'"); + } +}; + +/** + * Takes a full parse tree and settings and builds a MathML representation of + * it. In particular, we put the elements from building the parse tree into a + * tag so we can also include that TeX source as an annotation. + * + * Note that we actually return a domTree element with a `` inside it so + * we can do appropriate styling. + */ +var buildMathML$1 = function(tree, texExpression, options) { + var expression = buildExpression$1(tree, options); + + // Wrap up the expression in an mrow so it is presented in the semantics + // tag correctly. + var wrapper = new mathMLTree.MathNode("mrow", expression); + + // Build a TeX annotation of the source + var annotation = new mathMLTree.MathNode( + "annotation", [new mathMLTree.TextNode(texExpression)]); + + annotation.setAttribute("encoding", "application/x-tex"); + + var semantics = new mathMLTree.MathNode( + "semantics", [wrapper, annotation]); + + var math = new mathMLTree.MathNode("math", [semantics]); + + // You can't style nodes, so we wrap the node in a span. + return makeSpan$4(["katex-mathml"], [math]); +}; + +var buildMathML_1 = buildMathML$1; + +/** + * This file contains information about the options that the Parser carries + * around with it while parsing. Data is held in an `Options` object, and when + * recursing, a new `Options` object can be created with the `.with*` and + * `.reset` functions. + */ + +/** + * This is the main options class. It contains the style, size, color, and font + * of the current parse level. It also contains the style and size of the parent + * parse level, so size changes can be handled efficiently. + * + * Each of the `.with*` and `.reset` functions passes its current style and size + * as the parentStyle and parentSize of the new options class, so parent + * handling is taken care of automatically. + */ +function Options$1(data) { + this.style = data.style; + this.color = data.color; + this.size = data.size; + this.phantom = data.phantom; + this.font = data.font; + + if (data.parentStyle === undefined) { + this.parentStyle = data.style; + } else { + this.parentStyle = data.parentStyle; + } + + if (data.parentSize === undefined) { + this.parentSize = data.size; + } else { + this.parentSize = data.parentSize; + } +} + +/** + * Returns a new options object with the same properties as "this". Properties + * from "extension" will be copied to the new options object. + */ +Options$1.prototype.extend = function(extension) { + var data = { + style: this.style, + size: this.size, + color: this.color, + parentStyle: this.style, + parentSize: this.size, + phantom: this.phantom, + font: this.font + }; + + for (var key in extension) { + if (extension.hasOwnProperty(key)) { + data[key] = extension[key]; + } + } + + return new Options$1(data); +}; + +/** + * Create a new options object with the given style. + */ +Options$1.prototype.withStyle = function(style) { + return this.extend({ + style: style + }); +}; + +/** + * Create a new options object with the given size. + */ +Options$1.prototype.withSize = function(size) { + return this.extend({ + size: size + }); +}; + +/** + * Create a new options object with the given color. + */ +Options$1.prototype.withColor = function(color) { + return this.extend({ + color: color + }); +}; + +/** + * Create a new options object with "phantom" set to true. + */ +Options$1.prototype.withPhantom = function() { + return this.extend({ + phantom: true + }); +}; + +/** + * Create a new options objects with the give font. + */ +Options$1.prototype.withFont = function(font) { + return this.extend({ + font: font || this.font + }); +}; + +/** + * Create a new options object with the same style, size, and color. This is + * used so that parent style and size changes are handled correctly. + */ +Options$1.prototype.reset = function() { + return this.extend({}); +}; + +/** + * A map of color names to CSS colors. + * TODO(emily): Remove this when we have real macros + */ +var colorMap = { + "katex-blue": "#6495ed", + "katex-orange": "#ffa500", + "katex-pink": "#ff00af", + "katex-red": "#df0030", + "katex-green": "#28ae7b", + "katex-gray": "gray", + "katex-purple": "#9d38bd", + "katex-blueA": "#ccfaff", + "katex-blueB": "#80f6ff", + "katex-blueC": "#63d9ea", + "katex-blueD": "#11accd", + "katex-blueE": "#0c7f99", + "katex-tealA": "#94fff5", + "katex-tealB": "#26edd5", + "katex-tealC": "#01d1c1", + "katex-tealD": "#01a995", + "katex-tealE": "#208170", + "katex-greenA": "#b6ffb0", + "katex-greenB": "#8af281", + "katex-greenC": "#74cf70", + "katex-greenD": "#1fab54", + "katex-greenE": "#0d923f", + "katex-goldA": "#ffd0a9", + "katex-goldB": "#ffbb71", + "katex-goldC": "#ff9c39", + "katex-goldD": "#e07d10", + "katex-goldE": "#a75a05", + "katex-redA": "#fca9a9", + "katex-redB": "#ff8482", + "katex-redC": "#f9685d", + "katex-redD": "#e84d39", + "katex-redE": "#bc2612", + "katex-maroonA": "#ffbde0", + "katex-maroonB": "#ff92c6", + "katex-maroonC": "#ed5fa6", + "katex-maroonD": "#ca337c", + "katex-maroonE": "#9e034e", + "katex-purpleA": "#ddd7ff", + "katex-purpleB": "#c6b9fc", + "katex-purpleC": "#aa87ff", + "katex-purpleD": "#7854ab", + "katex-purpleE": "#543b78", + "katex-mintA": "#f5f9e8", + "katex-mintB": "#edf2df", + "katex-mintC": "#e0e5cc", + "katex-grayA": "#f6f7f7", + "katex-grayB": "#f0f1f2", + "katex-grayC": "#e3e5e6", + "katex-grayD": "#d6d8da", + "katex-grayE": "#babec2", + "katex-grayF": "#888d93", + "katex-grayG": "#626569", + "katex-grayH": "#3b3e40", + "katex-grayI": "#21242c", + "katex-kaBlue": "#314453", + "katex-kaGreen": "#71B307" +}; + +/** + * Gets the CSS color of the current options object, accounting for the + * `colorMap`. + */ +Options$1.prototype.getColor = function() { + if (this.phantom) { + return "transparent"; + } else { + return colorMap[this.color] || this.color; + } +}; + +var Options_1 = Options$1; + +var buildHTML = buildHTML_1; +var buildMathML = buildMathML_1; +var buildCommon = buildCommon$2; +var Options = Options_1; +var Settings$2 = Settings_1; +var Style = Style_1; + +var makeSpan = buildCommon.makeSpan; + +var buildTree$1 = function(tree, expression, settings) { + settings = settings || new Settings$2({}); + + var startStyle = Style.TEXT; + if (settings.displayMode) { + startStyle = Style.DISPLAY; + } + + // Setup the default options + var options = new Options({ + style: startStyle, + size: "size5" + }); + + // `buildHTML` sometimes messes with the parse tree (like turning bins -> + // ords), so we build the MathML version first. + var mathMLNode = buildMathML(tree, expression, options); + var htmlNode = buildHTML(tree, options); + + var katexNode = makeSpan(["katex"], [ + mathMLNode, htmlNode + ]); + + if (settings.displayMode) { + return makeSpan(["katex-display"], [katexNode]); + } else { + return katexNode; + } +}; + +var buildTree_1 = buildTree$1; + +/** + * The resulting parse tree nodes of the parse tree. + * + * It is possible to provide position information, so that a ParseNode can + * fulfil a role similar to a Token in error reporting. + * For details on the corresponding properties see Token constructor. + * Providing such information can lead to better error reporting. + * + * @param {string} type type of node, like e.g. "ordgroup" + * @param {?object} value type-specific representation of the node + * @param {string} mode parse mode in action for this node, + * "math" or "text" + * @param {Token=} firstToken first token of the input for this node, + * will omit position information if unset + * @param {Token=} lastToken last token of the input for this node, + * will default to firstToken if unset + */ +function ParseNode$1(type, value, mode, firstToken, lastToken) { + this.type = type; + this.value = value; + this.mode = mode; + if (firstToken && (!lastToken || lastToken.lexer === firstToken.lexer)) { + this.lexer = firstToken.lexer; + this.start = firstToken.start; + this.end = (lastToken || firstToken).end; + } +} + +var parseData$1 = { + ParseNode: ParseNode$1 +}; + +var functions$1 = createCommonjsModule(function (module) { +var utils = utils$4; +var ParseError = ParseError_1; +var parseData = parseData$1; +var ParseNode = parseData.ParseNode; + +/* This file contains a list of functions that we parse, identified by + * the calls to defineFunction. + * + * The first argument to defineFunction is a single name or a list of names. + * All functions named in such a list will share a single implementation. + * + * Each declared function can have associated properties, which + * include the following: + * + * - numArgs: The number of arguments the function takes. + * If this is the only property, it can be passed as a number + * instead of an element of a properties object. + * - argTypes: (optional) An array corresponding to each argument of the + * function, giving the type of argument that should be parsed. Its + * length should be equal to `numArgs + numOptionalArgs`. Valid + * types: + * - "size": A size-like thing, such as "1em" or "5ex" + * - "color": An html color, like "#abc" or "blue" + * - "original": The same type as the environment that the + * function being parsed is in (e.g. used for the + * bodies of functions like \color where the first + * argument is special and the second argument is + * parsed normally) + * Other possible types (probably shouldn't be used) + * - "text": Text-like (e.g. \text) + * - "math": Normal math + * If undefined, this will be treated as an appropriate length + * array of "original" strings + * - greediness: (optional) The greediness of the function to use ungrouped + * arguments. + * + * E.g. if you have an expression + * \sqrt \frac 1 2 + * since \frac has greediness=2 vs \sqrt's greediness=1, \frac + * will use the two arguments '1' and '2' as its two arguments, + * then that whole function will be used as the argument to + * \sqrt. On the other hand, the expressions + * \frac \frac 1 2 3 + * and + * \frac \sqrt 1 2 + * will fail because \frac and \frac have equal greediness + * and \sqrt has a lower greediness than \frac respectively. To + * make these parse, we would have to change them to: + * \frac {\frac 1 2} 3 + * and + * \frac {\sqrt 1} 2 + * + * The default value is `1` + * - allowedInText: (optional) Whether or not the function is allowed inside + * text mode (default false) + * - numOptionalArgs: (optional) The number of optional arguments the function + * should parse. If the optional arguments aren't found, + * `null` will be passed to the handler in their place. + * (default 0) + * - infix: (optional) Must be true if the function is an infix operator. + * + * The last argument is that implementation, the handler for the function(s). + * It is called to handle these functions and their arguments. + * It receives two arguments: + * - context contains information and references provided by the parser + * - args is an array of arguments obtained from TeX input + * The context contains the following properties: + * - funcName: the text (i.e. name) of the function, including \ + * - parser: the parser object + * - lexer: the lexer object + * - positions: the positions in the overall string of the function + * and the arguments. + * The latter three should only be used to produce error messages. + * + * The function should return an object with the following keys: + * - type: The type of element that this is. This is then used in + * buildHTML/buildMathML to determine which function + * should be called to build this node into a DOM node + * Any other data can be added to the object, which will be passed + * in to the function in buildHTML/buildMathML as `group.value`. + */ + +function defineFunction(names, props, handler) { + if (typeof names === "string") { + names = [names]; + } + if (typeof props === "number") { + props = { numArgs: props }; + } + // Set default values of functions + var data = { + numArgs: props.numArgs, + argTypes: props.argTypes, + greediness: (props.greediness === undefined) ? 1 : props.greediness, + allowedInText: !!props.allowedInText, + numOptionalArgs: props.numOptionalArgs || 0, + infix: !!props.infix, + handler: handler + }; + for (var i = 0; i < names.length; ++i) { + module.exports[names[i]] = data; + } +} + +// Since the corresponding buildHTML/buildMathML function expects a +// list of elements, we normalize for different kinds of arguments +var ordargument = function(arg) { + if (arg.type === "ordgroup") { + return arg.value; + } else { + return [arg]; + } +}; + +// A normal square root +defineFunction("\\sqrt", { + numArgs: 1, + numOptionalArgs: 1 +}, function(context, args) { + var index = args[0]; + var body = args[1]; + return { + type: "sqrt", + body: body, + index: index + }; +}); + +// Non-mathy text, possibly in a font +var textFunctionStyles = { + "\\text": undefined, "\\textrm": "mathrm", "\\textsf": "mathsf", + "\\texttt": "mathtt", "\\textnormal": "mathrm", "\\textbf": "mathbf", + "\\textit": "textit" +}; + +defineFunction([ + "\\text", "\\textrm", "\\textsf", "\\texttt", "\\textnormal", + "\\textbf", "\\textit" +], { + numArgs: 1, + argTypes: ["text"], + greediness: 2, + allowedInText: true +}, function(context, args) { + var body = args[0]; + return { + type: "text", + body: ordargument(body), + style: textFunctionStyles[context.funcName] + }; +}); + +// A two-argument custom color +defineFunction("\\color", { + numArgs: 2, + allowedInText: true, + greediness: 3, + argTypes: ["color", "original"] +}, function(context, args) { + var color = args[0]; + var body = args[1]; + return { + type: "color", + color: color.value, + value: ordargument(body) + }; +}); + +// An overline +defineFunction("\\overline", { + numArgs: 1 +}, function(context, args) { + var body = args[0]; + return { + type: "overline", + body: body + }; +}); + +// An underline +defineFunction("\\underline", { + numArgs: 1 +}, function(context, args) { + var body = args[0]; + return { + type: "underline", + body: body + }; +}); + +// A box of the width and height +defineFunction("\\rule", { + numArgs: 2, + numOptionalArgs: 1, + argTypes: ["size", "size", "size"] +}, function(context, args) { + var shift = args[0]; + var width = args[1]; + var height = args[2]; + return { + type: "rule", + shift: shift && shift.value, + width: width.value, + height: height.value + }; +}); + +// TODO: In TeX, \mkern only accepts mu-units, and \kern does not accept +// mu-units. In current KaTeX we relax this; both commands accept any unit. +defineFunction(["\\kern", "\\mkern"], { + numArgs: 1, + argTypes: ["size"] +}, function(context, args) { + return { + type: "kern", + dimension: args[0].value + }; +}); + +// A KaTeX logo +defineFunction("\\KaTeX", { + numArgs: 0 +}, function(context) { + return { + type: "katex" + }; +}); + +defineFunction("\\phantom", { + numArgs: 1 +}, function(context, args) { + var body = args[0]; + return { + type: "phantom", + value: ordargument(body) + }; +}); + +// Math class commands except \mathop +defineFunction([ + "\\mathord", "\\mathbin", "\\mathrel", "\\mathopen", + "\\mathclose", "\\mathpunct", "\\mathinner" +], { + numArgs: 1 +}, function(context, args) { + var body = args[0]; + return { + type: "mclass", + mclass: "m" + context.funcName.substr(5), + value: ordargument(body) + }; +}); + +// Build a relation by placing one symbol on top of another +defineFunction("\\stackrel", { + numArgs: 2 +}, function(context, args) { + var top = args[0]; + var bottom = args[1]; + + var bottomop = new ParseNode("op", { + type: "op", + limits: true, + alwaysHandleSupSub: true, + symbol: false, + value: ordargument(bottom) + }, bottom.mode); + + var supsub = new ParseNode("supsub", { + base: bottomop, + sup: top, + sub: null + }, top.mode); + + return { + type: "mclass", + mclass: "mrel", + value: [supsub] + }; +}); + +// \mod-type functions +defineFunction("\\bmod", { + numArgs: 0 +}, function(context, args) { + return { + type: "mod", + modType: "bmod", + value: null + }; +}); + +defineFunction(["\\pod", "\\pmod", "\\mod"], { + numArgs: 1 +}, function(context, args) { + var body = args[0]; + return { + type: "mod", + modType: context.funcName.substr(1), + value: ordargument(body) + }; +}); + +// Extra data needed for the delimiter handler down below +var delimiterSizes = { + "\\bigl" : {mclass: "mopen", size: 1}, + "\\Bigl" : {mclass: "mopen", size: 2}, + "\\biggl": {mclass: "mopen", size: 3}, + "\\Biggl": {mclass: "mopen", size: 4}, + "\\bigr" : {mclass: "mclose", size: 1}, + "\\Bigr" : {mclass: "mclose", size: 2}, + "\\biggr": {mclass: "mclose", size: 3}, + "\\Biggr": {mclass: "mclose", size: 4}, + "\\bigm" : {mclass: "mrel", size: 1}, + "\\Bigm" : {mclass: "mrel", size: 2}, + "\\biggm": {mclass: "mrel", size: 3}, + "\\Biggm": {mclass: "mrel", size: 4}, + "\\big" : {mclass: "mord", size: 1}, + "\\Big" : {mclass: "mord", size: 2}, + "\\bigg" : {mclass: "mord", size: 3}, + "\\Bigg" : {mclass: "mord", size: 4} +}; + +var delimiters = [ + "(", ")", "[", "\\lbrack", "]", "\\rbrack", + "\\{", "\\lbrace", "\\}", "\\rbrace", + "\\lfloor", "\\rfloor", "\\lceil", "\\rceil", + "<", ">", "\\langle", "\\rangle", "\\lt", "\\gt", + "\\lvert", "\\rvert", "\\lVert", "\\rVert", + "\\lgroup", "\\rgroup", "\\lmoustache", "\\rmoustache", + "/", "\\backslash", + "|", "\\vert", "\\|", "\\Vert", + "\\uparrow", "\\Uparrow", + "\\downarrow", "\\Downarrow", + "\\updownarrow", "\\Updownarrow", + "." +]; + +var fontAliases = { + "\\Bbb": "\\mathbb", + "\\bold": "\\mathbf", + "\\frak": "\\mathfrak" +}; + +// Single-argument color functions +defineFunction([ + "\\blue", "\\orange", "\\pink", "\\red", + "\\green", "\\gray", "\\purple", + "\\blueA", "\\blueB", "\\blueC", "\\blueD", "\\blueE", + "\\tealA", "\\tealB", "\\tealC", "\\tealD", "\\tealE", + "\\greenA", "\\greenB", "\\greenC", "\\greenD", "\\greenE", + "\\goldA", "\\goldB", "\\goldC", "\\goldD", "\\goldE", + "\\redA", "\\redB", "\\redC", "\\redD", "\\redE", + "\\maroonA", "\\maroonB", "\\maroonC", "\\maroonD", "\\maroonE", + "\\purpleA", "\\purpleB", "\\purpleC", "\\purpleD", "\\purpleE", + "\\mintA", "\\mintB", "\\mintC", + "\\grayA", "\\grayB", "\\grayC", "\\grayD", "\\grayE", + "\\grayF", "\\grayG", "\\grayH", "\\grayI", + "\\kaBlue", "\\kaGreen" +], { + numArgs: 1, + allowedInText: true, + greediness: 3 +}, function(context, args) { + var body = args[0]; + return { + type: "color", + color: "katex-" + context.funcName.slice(1), + value: ordargument(body) + }; +}); + +// There are 2 flags for operators; whether they produce limits in +// displaystyle, and whether they are symbols and should grow in +// displaystyle. These four groups cover the four possible choices. + +// No limits, not symbols +defineFunction([ + "\\arcsin", "\\arccos", "\\arctan", "\\arg", "\\cos", "\\cosh", + "\\cot", "\\coth", "\\csc", "\\deg", "\\dim", "\\exp", "\\hom", + "\\ker", "\\lg", "\\ln", "\\log", "\\sec", "\\sin", "\\sinh", + "\\tan", "\\tanh" +], { + numArgs: 0 +}, function(context) { + return { + type: "op", + limits: false, + symbol: false, + body: context.funcName + }; +}); + +// Limits, not symbols +defineFunction([ + "\\det", "\\gcd", "\\inf", "\\lim", "\\liminf", "\\limsup", "\\max", + "\\min", "\\Pr", "\\sup" +], { + numArgs: 0 +}, function(context) { + return { + type: "op", + limits: true, + symbol: false, + body: context.funcName + }; +}); + +// No limits, symbols +defineFunction([ + "\\int", "\\iint", "\\iiint", "\\oint" +], { + numArgs: 0 +}, function(context) { + return { + type: "op", + limits: false, + symbol: true, + body: context.funcName + }; +}); + +// Limits, symbols +defineFunction([ + "\\coprod", "\\bigvee", "\\bigwedge", "\\biguplus", "\\bigcap", + "\\bigcup", "\\intop", "\\prod", "\\sum", "\\bigotimes", + "\\bigoplus", "\\bigodot", "\\bigsqcup", "\\smallint" +], { + numArgs: 0 +}, function(context) { + return { + type: "op", + limits: true, + symbol: true, + body: context.funcName + }; +}); + +// \mathop class command +defineFunction("\\mathop", { + numArgs: 1 +}, function(context, args) { + var body = args[0]; + return { + type: "op", + limits: false, + symbol: false, + value: ordargument(body) + }; +}); + +// Fractions +defineFunction([ + "\\dfrac", "\\frac", "\\tfrac", + "\\dbinom", "\\binom", "\\tbinom", + "\\\\atopfrac" // can’t be entered directly +], { + numArgs: 2, + greediness: 2 +}, function(context, args) { + var numer = args[0]; + var denom = args[1]; + var hasBarLine; + var leftDelim = null; + var rightDelim = null; + var size = "auto"; + + switch (context.funcName) { + case "\\dfrac": + case "\\frac": + case "\\tfrac": + hasBarLine = true; + break; + case "\\\\atopfrac": + hasBarLine = false; + break; + case "\\dbinom": + case "\\binom": + case "\\tbinom": + hasBarLine = false; + leftDelim = "("; + rightDelim = ")"; + break; + default: + throw new Error("Unrecognized genfrac command"); + } + + switch (context.funcName) { + case "\\dfrac": + case "\\dbinom": + size = "display"; + break; + case "\\tfrac": + case "\\tbinom": + size = "text"; + break; + } + + return { + type: "genfrac", + numer: numer, + denom: denom, + hasBarLine: hasBarLine, + leftDelim: leftDelim, + rightDelim: rightDelim, + size: size + }; +}); + +// Left and right overlap functions +defineFunction(["\\llap", "\\rlap"], { + numArgs: 1, + allowedInText: true +}, function(context, args) { + var body = args[0]; + return { + type: context.funcName.slice(1), + body: body + }; +}); + +// Delimiter functions +var checkDelimiter = function(delim, context) { + if (utils.contains(delimiters, delim.value)) { + return delim; + } else { + throw new ParseError( + "Invalid delimiter: '" + delim.value + "' after '" + + context.funcName + "'", delim); + } +}; + +defineFunction([ + "\\bigl", "\\Bigl", "\\biggl", "\\Biggl", + "\\bigr", "\\Bigr", "\\biggr", "\\Biggr", + "\\bigm", "\\Bigm", "\\biggm", "\\Biggm", + "\\big", "\\Big", "\\bigg", "\\Bigg" +], { + numArgs: 1 +}, function(context, args) { + var delim = checkDelimiter(args[0], context); + + return { + type: "delimsizing", + size: delimiterSizes[context.funcName].size, + mclass: delimiterSizes[context.funcName].mclass, + value: delim.value + }; +}); + +defineFunction([ + "\\left", "\\right" +], { + numArgs: 1 +}, function(context, args) { + var delim = checkDelimiter(args[0], context); + + // \left and \right are caught somewhere in Parser.js, which is + // why this data doesn't match what is in buildHTML. + return { + type: "leftright", + value: delim.value + }; +}); + +defineFunction("\\middle", { + numArgs: 1 +}, function(context, args) { + var delim = checkDelimiter(args[0], context); + if (!context.parser.leftrightDepth) { + throw new ParseError("\\middle without preceding \\left", delim); + } + + return { + type: "middle", + value: delim.value + }; +}); + +// Sizing functions (handled in Parser.js explicitly, hence no handler) +defineFunction([ + "\\tiny", "\\scriptsize", "\\footnotesize", "\\small", + "\\normalsize", "\\large", "\\Large", "\\LARGE", "\\huge", "\\Huge" +], 0, null); + +// Style changing functions (handled in Parser.js explicitly, hence no +// handler) +defineFunction([ + "\\displaystyle", "\\textstyle", "\\scriptstyle", + "\\scriptscriptstyle" +], 0, null); + +defineFunction([ + // styles + "\\mathrm", "\\mathit", "\\mathbf", + + // families + "\\mathbb", "\\mathcal", "\\mathfrak", "\\mathscr", "\\mathsf", + "\\mathtt", + + // aliases + "\\Bbb", "\\bold", "\\frak" +], { + numArgs: 1, + greediness: 2 +}, function(context, args) { + var body = args[0]; + var func = context.funcName; + if (func in fontAliases) { + func = fontAliases[func]; + } + return { + type: "font", + font: func.slice(1), + body: body + }; +}); + +// Accents +defineFunction([ + "\\acute", "\\grave", "\\ddot", "\\tilde", "\\bar", "\\breve", + "\\check", "\\hat", "\\vec", "\\dot" ], { + numArgs: 1 +}, function(context, args) { + var base = args[0]; + return { + type: "accent", + accent: context.funcName, + base: base + }; +}); + +// Infix generalized fractions +defineFunction(["\\over", "\\choose", "\\atop"], { + numArgs: 0, + infix: true +}, function(context) { + var replaceWith; + switch (context.funcName) { + case "\\over": + replaceWith = "\\frac"; + break; + case "\\choose": + replaceWith = "\\binom"; + break; + case "\\atop": + replaceWith = "\\\\atopfrac"; + break; + default: + throw new Error("Unrecognized infix genfrac command"); + } + return { + type: "infix", + replaceWith: replaceWith, + token: context.token + }; +}); + +// Row breaks for aligned data +defineFunction(["\\\\", "\\cr"], { + numArgs: 0, + numOptionalArgs: 1, + argTypes: ["size"] +}, function(context, args) { + var size = args[0]; + return { + type: "cr", + size: size + }; +}); + +// Environment delimiters +defineFunction(["\\begin", "\\end"], { + numArgs: 1, + argTypes: ["text"] +}, function(context, args) { + var nameGroup = args[0]; + if (nameGroup.type !== "ordgroup") { + throw new ParseError("Invalid environment name", nameGroup); + } + var name = ""; + for (var i = 0; i < nameGroup.value.length; ++i) { + name += nameGroup.value[i].value; + } + return { + type: "environment", + name: name, + nameGroup: nameGroup + }; +}); +}); + +var environments$1 = createCommonjsModule(function (module) { +/* eslint no-constant-condition:0 */ +var parseData = parseData$1; +var ParseError = ParseError_1; +var Style = Style_1; + +var ParseNode = parseData.ParseNode; + +/** + * Parse the body of the environment, with rows delimited by \\ and + * columns delimited by &, and create a nested list in row-major order + * with one group per cell. + */ +function parseArray(parser, result) { + var row = []; + var body = [row]; + var rowGaps = []; + while (true) { + var cell = parser.parseExpression(false, null); + row.push(new ParseNode("ordgroup", cell, parser.mode)); + var next = parser.nextToken.text; + if (next === "&") { + parser.consume(); + } else if (next === "\\end") { + break; + } else if (next === "\\\\" || next === "\\cr") { + var cr = parser.parseFunction(); + rowGaps.push(cr.value.size); + row = []; + body.push(row); + } else { + throw new ParseError("Expected & or \\\\ or \\end", + parser.nextToken); + } + } + result.body = body; + result.rowGaps = rowGaps; + return new ParseNode(result.type, result, parser.mode); +} + +/* + * An environment definition is very similar to a function definition: + * it is declared with a name or a list of names, a set of properties + * and a handler containing the actual implementation. + * + * The properties include: + * - numArgs: The number of arguments after the \begin{name} function. + * - argTypes: (optional) Just like for a function + * - allowedInText: (optional) Whether or not the environment is allowed inside + * text mode (default false) (not enforced yet) + * - numOptionalArgs: (optional) Just like for a function + * A bare number instead of that object indicates the numArgs value. + * + * The handler function will receive two arguments + * - context: information and references provided by the parser + * - args: an array of arguments passed to \begin{name} + * The context contains the following properties: + * - envName: the name of the environment, one of the listed names. + * - parser: the parser object + * - lexer: the lexer object + * - positions: the positions associated with these arguments from args. + * The handler must return a ParseResult. + */ + +function defineEnvironment(names, props, handler) { + if (typeof names === "string") { + names = [names]; + } + if (typeof props === "number") { + props = { numArgs: props }; + } + // Set default values of environments + var data = { + numArgs: props.numArgs || 0, + argTypes: props.argTypes, + greediness: 1, + allowedInText: !!props.allowedInText, + numOptionalArgs: props.numOptionalArgs || 0, + handler: handler + }; + for (var i = 0; i < names.length; ++i) { + module.exports[names[i]] = data; + } +} + +// Arrays are part of LaTeX, defined in lttab.dtx so its documentation +// is part of the source2e.pdf file of LaTeX2e source documentation. +defineEnvironment("array", { + numArgs: 1 +}, function(context, args) { + var colalign = args[0]; + colalign = colalign.value.map ? colalign.value : [colalign]; + var cols = colalign.map(function(node) { + var ca = node.value; + if ("lcr".indexOf(ca) !== -1) { + return { + type: "align", + align: ca + }; + } else if (ca === "|") { + return { + type: "separator", + separator: "|" + }; + } + throw new ParseError( + "Unknown column alignment: " + node.value, + node); + }); + var res = { + type: "array", + cols: cols, + hskipBeforeAndAfter: true // \@preamble in lttab.dtx + }; + res = parseArray(context.parser, res); + return res; +}); + +// The matrix environments of amsmath builds on the array environment +// of LaTeX, which is discussed above. +defineEnvironment([ + "matrix", + "pmatrix", + "bmatrix", + "Bmatrix", + "vmatrix", + "Vmatrix" +], { +}, function(context) { + var delimiters = { + "matrix": null, + "pmatrix": ["(", ")"], + "bmatrix": ["[", "]"], + "Bmatrix": ["\\{", "\\}"], + "vmatrix": ["|", "|"], + "Vmatrix": ["\\Vert", "\\Vert"] + }[context.envName]; + var res = { + type: "array", + hskipBeforeAndAfter: false // \hskip -\arraycolsep in amsmath + }; + res = parseArray(context.parser, res); + if (delimiters) { + res = new ParseNode("leftright", { + body: [res], + left: delimiters[0], + right: delimiters[1] + }, context.mode); + } + return res; +}); + +// A cases environment (in amsmath.sty) is almost equivalent to +// \def\arraystretch{1.2}% +// \left\{\begin{array}{@{}l@{\quad}l@{}} … \end{array}\right. +defineEnvironment("cases", { +}, function(context) { + var res = { + type: "array", + arraystretch: 1.2, + cols: [{ + type: "align", + align: "l", + pregap: 0, + // TODO(kevinb) get the current style. + // For now we use the metrics for TEXT style which is what we were + // doing before. Before attempting to get the current style we + // should look at TeX's behavior especially for \over and matrices. + postgap: Style.TEXT.metrics.quad + }, { + type: "align", + align: "l", + pregap: 0, + postgap: 0 + }] + }; + res = parseArray(context.parser, res); + res = new ParseNode("leftright", { + body: [res], + left: "\\{", + right: "." + }, context.mode); + return res; +}); + +// An aligned environment is like the align* environment +// except it operates within math mode. +// Note that we assume \nomallineskiplimit to be zero, +// so that \strut@ is the same as \strut. +defineEnvironment("aligned", { +}, function(context) { + var res = { + type: "array", + cols: [] + }; + res = parseArray(context.parser, res); + var emptyGroup = new ParseNode("ordgroup", [], context.mode); + var numCols = 0; + res.value.body.forEach(function(row) { + var i; + for (i = 1; i < row.length; i += 2) { + row[i].value.unshift(emptyGroup); + } + if (numCols < row.length) { + numCols = row.length; + } + }); + for (var i = 0; i < numCols; ++i) { + var align = "r"; + var pregap = 0; + if (i % 2 === 1) { + align = "l"; + } else if (i > 0) { + pregap = 2; // one \qquad between columns + } + res.value.cols[i] = { + type: "align", + align: align, + pregap: pregap, + postgap: 0 + }; + } + return res; +}); +}); + +/** @flow */ + +function getRelocatable(re) { + // In the future, this could use a WeakMap instead of an expando. + if (!re.__matchAtRelocatable) { + // Disjunctions are the lowest-precedence operator, so we can make any + // pattern match the empty string by appending `|()` to it: + // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-patterns + var source = re.source + "|()"; + + // We always make the new regex global. + var flags = "g" + (re.ignoreCase ? "i" : "") + (re.multiline ? "m" : "") + (re.unicode ? "u" : ""); + + re.__matchAtRelocatable = new RegExp(source, flags); + } + return re.__matchAtRelocatable; +} + +function matchAt$1(re, str, pos) { + if (re.global || re.sticky) { + throw new Error("matchAt(...): Only non-global regexes are supported"); + } + var reloc = getRelocatable(re); + reloc.lastIndex = pos; + var match = reloc.exec(str); + // Last capturing group is our sentinel that indicates whether the regex + // matched at the given location. + if (match[match.length - 1] == null) { + // Original regex matched. + match.length = match.length - 1; + return match; + } else { + return null; + } +} + +var matchAt_1 = matchAt$1; + +/** + * The Lexer class handles tokenizing the input in various ways. Since our + * parser expects us to be able to backtrack, the lexer allows lexing from any + * given starting point. + * + * Its main exposed function is the `lex` function, which takes a position to + * lex from and a type of token to lex. It defers to the appropriate `_innerLex` + * function. + * + * The various `_innerLex` functions perform the actual lexing of different + * kinds. + */ + +var matchAt = matchAt_1; + +var ParseError$6 = ParseError_1; + +// The main lexer class +function Lexer$1(input) { + this.input = input; + this.pos = 0; +} + +/** + * The resulting token returned from `lex`. + * + * It consists of the token text plus some position information. + * The position information is essentially a range in an input string, + * but instead of referencing the bare input string, we refer to the lexer. + * That way it is possible to attach extra metadata to the input string, + * like for example a file name or similar. + * + * The position information (all three parameters) is optional, + * so it is OK to construct synthetic tokens if appropriate. + * Not providing available position information may lead to + * degraded error reporting, though. + * + * @param {string} text the text of this token + * @param {number=} start the start offset, zero-based inclusive + * @param {number=} end the end offset, zero-based exclusive + * @param {Lexer=} lexer the lexer which in turn holds the input string + */ +function Token(text, start, end, lexer) { + this.text = text; + this.start = start; + this.end = end; + this.lexer = lexer; +} + +/** + * Given a pair of tokens (this and endToken), compute a “Token” encompassing + * the whole input range enclosed by these two. + * + * @param {Token} endToken last token of the range, inclusive + * @param {string} text the text of the newly constructed token + */ +Token.prototype.range = function(endToken, text) { + if (endToken.lexer !== this.lexer) { + return new Token(text); // sorry, no position information available + } + return new Token(text, this.start, endToken.end, this.lexer); +}; + +/* The following tokenRegex + * - matches typical whitespace (but not NBSP etc.) using its first group + * - does not match any control character \x00-\x1f except whitespace + * - does not match a bare backslash + * - matches any ASCII character except those just mentioned + * - does not match the BMP private use area \uE000-\uF8FF + * - does not match bare surrogate code units + * - matches any BMP character except for those just described + * - matches any valid Unicode surrogate pair + * - matches a backslash followed by one or more letters + * - matches a backslash followed by any BMP character, including newline + * Just because the Lexer matches something doesn't mean it's valid input: + * If there is no matching function or symbol definition, the Parser will + * still reject the input. + */ +var tokenRegex = new RegExp( + "([ \r\n\t]+)|" + // whitespace + "([!-\\[\\]-\u2027\u202A-\uD7FF\uF900-\uFFFF]" + // single codepoint + "|[\uD800-\uDBFF][\uDC00-\uDFFF]" + // surrogate pair + "|\\\\(?:[a-zA-Z]+|[^\uD800-\uDFFF])" + // function name + ")" +); + +/** + * This function lexes a single token. + */ +Lexer$1.prototype.lex = function() { + var input = this.input; + var pos = this.pos; + if (pos === input.length) { + return new Token("EOF", pos, pos, this); + } + var match = matchAt(tokenRegex, input, pos); + if (match === null) { + throw new ParseError$6( + "Unexpected character: '" + input[pos] + "'", + new Token(input[pos], pos, pos + 1, this)); + } + var text = match[2] || " "; + var start = this.pos; + this.pos += match[0].length; + var end = this.pos; + return new Token(text, start, end, this); +}; + +var Lexer_1 = Lexer$1; + +/** + * This file contains the “gullet” where macros are expanded + * until only non-macro tokens remain. + */ + +var Lexer = Lexer_1; + +function MacroExpander$1(input, macros) { + this.lexer = new Lexer(input); + this.macros = macros; + this.stack = []; // contains tokens in REVERSE order + this.discardedWhiteSpace = []; +} + +/** + * Recursively expand first token, then return first non-expandable token. + */ +MacroExpander$1.prototype.nextToken = function() { + var this$1 = this; + + for (;;) { + if (this$1.stack.length === 0) { + this$1.stack.push(this$1.lexer.lex()); + } + var topToken = this$1.stack.pop(); + var name = topToken.text; + if (!(name.charAt(0) === "\\" && this$1.macros.hasOwnProperty(name))) { + return topToken; + } + var expansion = this$1.macros[name]; + if (typeof expansion === "string") { + var bodyLexer = new Lexer(expansion); + expansion = []; + var tok = bodyLexer.lex(); + while (tok.text !== "EOF") { + expansion.push(tok); + tok = bodyLexer.lex(); + } + expansion.reverse(); // to fit in with stack using push and pop + this$1.macros[name] = expansion; + } + this$1.stack = this$1.stack.concat(expansion); + } +}; + +MacroExpander$1.prototype.get = function(ignoreSpace) { + var this$1 = this; + + this.discardedWhiteSpace = []; + var token = this.nextToken(); + if (ignoreSpace) { + while (token.text === " ") { + this$1.discardedWhiteSpace.push(token); + token = this$1.nextToken(); + } + } + return token; +}; + +/** + * Undo the effect of the preceding call to the get method. + * A call to this method MUST be immediately preceded and immediately followed + * by a call to get. Only used during mode switching, i.e. after one token + * was got in the old mode but should get got again in a new mode + * with possibly different whitespace handling. + */ +MacroExpander$1.prototype.unget = function(token) { + var this$1 = this; + + this.stack.push(token); + while (this.discardedWhiteSpace.length !== 0) { + this$1.stack.push(this$1.discardedWhiteSpace.pop()); + } +}; + +var MacroExpander_1 = MacroExpander$1; + +/* eslint no-constant-condition:0 */ +var functions = functions$1; +var environments = environments$1; +var MacroExpander = MacroExpander_1; +var symbols$5 = symbols$1; +var utils$9 = utils$4; +var cjkRegex$2 = unicodeRegexes.cjkRegex; + +var parseData = parseData$1; +var ParseError$5 = ParseError_1; + +/** + * This file contains the parser used to parse out a TeX expression from the + * input. Since TeX isn't context-free, standard parsers don't work particularly + * well. + * + * The strategy of this parser is as such: + * + * The main functions (the `.parse...` ones) take a position in the current + * parse string to parse tokens from. The lexer (found in Lexer.js, stored at + * this.lexer) also supports pulling out tokens at arbitrary places. When + * individual tokens are needed at a position, the lexer is called to pull out a + * token, which is then used. + * + * The parser has a property called "mode" indicating the mode that + * the parser is currently in. Currently it has to be one of "math" or + * "text", which denotes whether the current environment is a math-y + * one or a text-y one (e.g. inside \text). Currently, this serves to + * limit the functions which can be used in text mode. + * + * The main functions then return an object which contains the useful data that + * was parsed at its given point, and a new position at the end of the parsed + * data. The main functions can call each other and continue the parsing by + * using the returned position as a new starting point. + * + * There are also extra `.handle...` functions, which pull out some reused + * functionality into self-contained functions. + * + * The earlier functions return ParseNodes. + * The later functions (which are called deeper in the parse) sometimes return + * ParseFuncOrArgument, which contain a ParseNode as well as some data about + * whether the parsed object is a function which is missing some arguments, or a + * standalone object which can be used as an argument to another function. + */ + +/** + * Main Parser class + */ +function Parser$1(input, settings) { + // Create a new macro expander (gullet) and (indirectly via that) also a + // new lexer (mouth) for this parser (stomach, in the language of TeX) + this.gullet = new MacroExpander(input, settings.macros); + // Store the settings for use in parsing + this.settings = settings; + // Count leftright depth (for \middle errors) + this.leftrightDepth = 0; +} + +var ParseNode = parseData.ParseNode; + +/** + * An initial function (without its arguments), or an argument to a function. + * The `result` argument should be a ParseNode. + */ +function ParseFuncOrArgument(result, isFunction, token) { + this.result = result; + // Is this a function (i.e. is it something defined in functions.js)? + this.isFunction = isFunction; + this.token = token; +} + +/** + * Checks a result to make sure it has the right type, and throws an + * appropriate error otherwise. + * + * @param {boolean=} consume whether to consume the expected token, + * defaults to true + */ +Parser$1.prototype.expect = function(text, consume) { + if (this.nextToken.text !== text) { + throw new ParseError$5( + "Expected '" + text + "', got '" + this.nextToken.text + "'", + this.nextToken + ); + } + if (consume !== false) { + this.consume(); + } +}; + +/** + * Considers the current look ahead token as consumed, + * and fetches the one after that as the new look ahead. + */ +Parser$1.prototype.consume = function() { + this.nextToken = this.gullet.get(this.mode === "math"); +}; + +Parser$1.prototype.switchMode = function(newMode) { + this.gullet.unget(this.nextToken); + this.mode = newMode; + this.consume(); +}; + +/** + * Main parsing function, which parses an entire input. + * + * @return {?Array.} + */ +Parser$1.prototype.parse = function() { + // Try to parse the input + this.mode = "math"; + this.consume(); + var parse = this.parseInput(); + return parse; +}; + +/** + * Parses an entire input tree. + */ +Parser$1.prototype.parseInput = function() { + // Parse an expression + var expression = this.parseExpression(false); + // If we succeeded, make sure there's an EOF at the end + this.expect("EOF", false); + return expression; +}; + +var endOfExpression = ["}", "\\end", "\\right", "&", "\\\\", "\\cr"]; + +/** + * Parses an "expression", which is a list of atoms. + * + * @param {boolean} breakOnInfix Should the parsing stop when we hit infix + * nodes? This happens when functions have higher precendence + * than infix nodes in implicit parses. + * + * @param {?string} breakOnTokenText The text of the token that the expression + * should end with, or `null` if something else should end the + * expression. + * + * @return {ParseNode} + */ +Parser$1.prototype.parseExpression = function(breakOnInfix, breakOnTokenText) { + var this$1 = this; + + var body = []; + // Keep adding atoms to the body until we can't parse any more atoms (either + // we reached the end, a }, or a \right) + while (true) { + var lex = this$1.nextToken; + if (endOfExpression.indexOf(lex.text) !== -1) { + break; + } + if (breakOnTokenText && lex.text === breakOnTokenText) { + break; + } + if (breakOnInfix && functions[lex.text] && functions[lex.text].infix) { + break; + } + var atom = this$1.parseAtom(); + if (!atom) { + if (!this$1.settings.throwOnError && lex.text[0] === "\\") { + var errorNode = this$1.handleUnsupportedCmd(); + body.push(errorNode); + continue; + } + + break; + } + body.push(atom); + } + return this.handleInfixNodes(body); +}; + +/** + * Rewrites infix operators such as \over with corresponding commands such + * as \frac. + * + * There can only be one infix operator per group. If there's more than one + * then the expression is ambiguous. This can be resolved by adding {}. + * + * @returns {Array} + */ +Parser$1.prototype.handleInfixNodes = function(body) { + var overIndex = -1; + var funcName; + + for (var i = 0; i < body.length; i++) { + var node = body[i]; + if (node.type === "infix") { + if (overIndex !== -1) { + throw new ParseError$5( + "only one infix operator per group", + node.value.token); + } + overIndex = i; + funcName = node.value.replaceWith; + } + } + + if (overIndex !== -1) { + var numerNode; + var denomNode; + + var numerBody = body.slice(0, overIndex); + var denomBody = body.slice(overIndex + 1); + + if (numerBody.length === 1 && numerBody[0].type === "ordgroup") { + numerNode = numerBody[0]; + } else { + numerNode = new ParseNode("ordgroup", numerBody, this.mode); + } + + if (denomBody.length === 1 && denomBody[0].type === "ordgroup") { + denomNode = denomBody[0]; + } else { + denomNode = new ParseNode("ordgroup", denomBody, this.mode); + } + + var value = this.callFunction( + funcName, [numerNode, denomNode], null); + return [new ParseNode(value.type, value, this.mode)]; + } else { + return body; + } +}; + +// The greediness of a superscript or subscript +var SUPSUB_GREEDINESS = 1; + +/** + * Handle a subscript or superscript with nice errors. + */ +Parser$1.prototype.handleSupSubscript = function(name) { + var symbolToken = this.nextToken; + var symbol = symbolToken.text; + this.consume(); + var group = this.parseGroup(); + + if (!group) { + if (!this.settings.throwOnError && this.nextToken.text[0] === "\\") { + return this.handleUnsupportedCmd(); + } else { + throw new ParseError$5( + "Expected group after '" + symbol + "'", + symbolToken + ); + } + } else if (group.isFunction) { + // ^ and _ have a greediness, so handle interactions with functions' + // greediness + var funcGreediness = functions[group.result].greediness; + if (funcGreediness > SUPSUB_GREEDINESS) { + return this.parseFunction(group); + } else { + throw new ParseError$5( + "Got function '" + group.result + "' with no arguments " + + "as " + name, symbolToken); + } + } else { + return group.result; + } +}; + +/** + * Converts the textual input of an unsupported command into a text node + * contained within a color node whose color is determined by errorColor + */ +Parser$1.prototype.handleUnsupportedCmd = function() { + var text = this.nextToken.text; + var textordArray = []; + + for (var i = 0; i < text.length; i++) { + textordArray.push(new ParseNode("textord", text[i], "text")); + } + + var textNode = new ParseNode( + "text", + { + body: textordArray, + type: "text" + }, + this.mode); + + var colorNode = new ParseNode( + "color", + { + color: this.settings.errorColor, + value: [textNode], + type: "color" + }, + this.mode); + + this.consume(); + return colorNode; +}; + +/** + * Parses a group with optional super/subscripts. + * + * @return {?ParseNode} + */ +Parser$1.prototype.parseAtom = function() { + var this$1 = this; + + // The body of an atom is an implicit group, so that things like + // \left(x\right)^2 work correctly. + var base = this.parseImplicitGroup(); + + // In text mode, we don't have superscripts or subscripts + if (this.mode === "text") { + return base; + } + + // Note that base may be empty (i.e. null) at this point. + + var superscript; + var subscript; + while (true) { + // Lex the first token + var lex = this$1.nextToken; + + if (lex.text === "\\limits" || lex.text === "\\nolimits") { + // We got a limit control + if (!base || base.type !== "op") { + throw new ParseError$5( + "Limit controls must follow a math operator", + lex); + } else { + var limits = lex.text === "\\limits"; + base.value.limits = limits; + base.value.alwaysHandleSupSub = true; + } + this$1.consume(); + } else if (lex.text === "^") { + // We got a superscript start + if (superscript) { + throw new ParseError$5("Double superscript", lex); + } + superscript = this$1.handleSupSubscript("superscript"); + } else if (lex.text === "_") { + // We got a subscript start + if (subscript) { + throw new ParseError$5("Double subscript", lex); + } + subscript = this$1.handleSupSubscript("subscript"); + } else if (lex.text === "'") { + // We got a prime + var prime = new ParseNode("textord", "\\prime", this$1.mode); + + // Many primes can be grouped together, so we handle this here + var primes = [prime]; + this$1.consume(); + // Keep lexing tokens until we get something that's not a prime + while (this.nextToken.text === "'") { + // For each one, add another prime to the list + primes.push(prime); + this$1.consume(); + } + // Put them into an ordgroup as the superscript + superscript = new ParseNode("ordgroup", primes, this$1.mode); + } else { + // If it wasn't ^, _, or ', stop parsing super/subscripts + break; + } + } + + if (superscript || subscript) { + // If we got either a superscript or subscript, create a supsub + return new ParseNode("supsub", { + base: base, + sup: superscript, + sub: subscript + }, this.mode); + } else { + // Otherwise return the original body + return base; + } +}; + +// A list of the size-changing functions, for use in parseImplicitGroup +var sizeFuncs = [ + "\\tiny", "\\scriptsize", "\\footnotesize", "\\small", "\\normalsize", + "\\large", "\\Large", "\\LARGE", "\\huge", "\\Huge" +]; + +// A list of the style-changing functions, for use in parseImplicitGroup +var styleFuncs = [ + "\\displaystyle", "\\textstyle", "\\scriptstyle", "\\scriptscriptstyle" +]; + +/** + * Parses an implicit group, which is a group that starts at the end of a + * specified, and ends right before a higher explicit group ends, or at EOL. It + * is used for functions that appear to affect the current style, like \Large or + * \textrm, where instead of keeping a style we just pretend that there is an + * implicit grouping after it until the end of the group. E.g. + * small text {\Large large text} small text again + * It is also used for \left and \right to get the correct grouping. + * + * @return {?ParseNode} + */ +Parser$1.prototype.parseImplicitGroup = function() { + var start = this.parseSymbol(); + + if (start == null) { + // If we didn't get anything we handle, fall back to parseFunction + return this.parseFunction(); + } + + var func = start.result; + var body; + + if (func === "\\left") { + // If we see a left: + // Parse the entire left function (including the delimiter) + var left = this.parseFunction(start); + // Parse out the implicit body + ++this.leftrightDepth; + body = this.parseExpression(false); + --this.leftrightDepth; + // Check the next token + this.expect("\\right", false); + var right = this.parseFunction(); + return new ParseNode("leftright", { + body: body, + left: left.value.value, + right: right.value.value + }, this.mode); + } else if (func === "\\begin") { + // begin...end is similar to left...right + var begin = this.parseFunction(start); + var envName = begin.value.name; + if (!environments.hasOwnProperty(envName)) { + throw new ParseError$5( + "No such environment: " + envName, begin.value.nameGroup); + } + // Build the environment object. Arguments and other information will + // be made available to the begin and end methods using properties. + var env = environments[envName]; + var args = this.parseArguments("\\begin{" + envName + "}", env); + var context = { + mode: this.mode, + envName: envName, + parser: this, + positions: args.pop() + }; + var result = env.handler(context, args); + this.expect("\\end", false); + var endNameToken = this.nextToken; + var end = this.parseFunction(); + if (end.value.name !== envName) { + throw new ParseError$5( + "Mismatch: \\begin{" + envName + "} matched " + + "by \\end{" + end.value.name + "}", + endNameToken); + } + result.position = end.position; + return result; + } else if (utils$9.contains(sizeFuncs, func)) { + // If we see a sizing function, parse out the implict body + body = this.parseExpression(false); + return new ParseNode("sizing", { + // Figure out what size to use based on the list of functions above + size: "size" + (utils$9.indexOf(sizeFuncs, func) + 1), + value: body + }, this.mode); + } else if (utils$9.contains(styleFuncs, func)) { + // If we see a styling function, parse out the implict body + body = this.parseExpression(true); + return new ParseNode("styling", { + // Figure out what style to use by pulling out the style from + // the function name + style: func.slice(1, func.length - 5), + value: body + }, this.mode); + } else { + // Defer to parseFunction if it's not a function we handle + return this.parseFunction(start); + } +}; + +/** + * Parses an entire function, including its base and all of its arguments. + * The base might either have been parsed already, in which case + * it is provided as an argument, or it's the next group in the input. + * + * @param {ParseFuncOrArgument=} baseGroup optional as described above + * @return {?ParseNode} + */ +Parser$1.prototype.parseFunction = function(baseGroup) { + if (!baseGroup) { + baseGroup = this.parseGroup(); + } + + if (baseGroup) { + if (baseGroup.isFunction) { + var func = baseGroup.result; + var funcData = functions[func]; + if (this.mode === "text" && !funcData.allowedInText) { + throw new ParseError$5( + "Can't use function '" + func + "' in text mode", + baseGroup.token); + } + + var args = this.parseArguments(func, funcData); + var token = baseGroup.token; + var result = this.callFunction(func, args, args.pop(), token); + return new ParseNode(result.type, result, this.mode); + } else { + return baseGroup.result; + } + } else { + return null; + } +}; + +/** + * Call a function handler with a suitable context and arguments. + */ +Parser$1.prototype.callFunction = function(name, args, positions, token) { + var context = { + funcName: name, + parser: this, + positions: positions, + token: token + }; + return functions[name].handler(context, args); +}; + +/** + * Parses the arguments of a function or environment + * + * @param {string} func "\name" or "\begin{name}" + * @param {{numArgs:number,numOptionalArgs:number|undefined}} funcData + * @return the array of arguments, with the list of positions as last element + */ +Parser$1.prototype.parseArguments = function(func, funcData) { + var this$1 = this; + + var totalArgs = funcData.numArgs + funcData.numOptionalArgs; + if (totalArgs === 0) { + return [[this.pos]]; + } + + var baseGreediness = funcData.greediness; + var positions = [this.pos]; + var args = []; + + for (var i = 0; i < totalArgs; i++) { + var nextToken = this$1.nextToken; + var argType = funcData.argTypes && funcData.argTypes[i]; + var arg; + if (i < funcData.numOptionalArgs) { + if (argType) { + arg = this$1.parseGroupOfType(argType, true); + } else { + arg = this$1.parseGroup(true); + } + if (!arg) { + args.push(null); + positions.push(this$1.pos); + continue; + } + } else { + if (argType) { + arg = this$1.parseGroupOfType(argType); + } else { + arg = this$1.parseGroup(); + } + if (!arg) { + if (!this$1.settings.throwOnError && + this$1.nextToken.text[0] === "\\") { + arg = new ParseFuncOrArgument( + this$1.handleUnsupportedCmd(this$1.nextToken.text), + false); + } else { + throw new ParseError$5( + "Expected group after '" + func + "'", nextToken); + } + } + } + var argNode; + if (arg.isFunction) { + var argGreediness = + functions[arg.result].greediness; + if (argGreediness > baseGreediness) { + argNode = this$1.parseFunction(arg); + } else { + throw new ParseError$5( + "Got function '" + arg.result + "' as " + + "argument to '" + func + "'", nextToken); + } + } else { + argNode = arg.result; + } + args.push(argNode); + positions.push(this$1.pos); + } + + args.push(positions); + + return args; +}; + + +/** + * Parses a group when the mode is changing. + * + * @return {?ParseFuncOrArgument} + */ +Parser$1.prototype.parseGroupOfType = function(innerMode, optional) { + var this$1 = this; + + var outerMode = this.mode; + // Handle `original` argTypes + if (innerMode === "original") { + innerMode = outerMode; + } + + if (innerMode === "color") { + return this.parseColorGroup(optional); + } + if (innerMode === "size") { + return this.parseSizeGroup(optional); + } + + this.switchMode(innerMode); + if (innerMode === "text") { + // text mode is special because it should ignore the whitespace before + // it + while (this.nextToken.text === " ") { + this$1.consume(); + } + } + // By the time we get here, innerMode is one of "text" or "math". + // We switch the mode of the parser, recurse, then restore the old mode. + var res = this.parseGroup(optional); + this.switchMode(outerMode); + return res; +}; + +/** + * Parses a group, essentially returning the string formed by the + * brace-enclosed tokens plus some position information. + * + * @param {string} modeName Used to describe the mode in error messages + * @param {boolean=} optional Whether the group is optional or required + */ +Parser$1.prototype.parseStringGroup = function(modeName, optional) { + var this$1 = this; + + if (optional && this.nextToken.text !== "[") { + return null; + } + var outerMode = this.mode; + this.mode = "text"; + this.expect(optional ? "[" : "{"); + var str = ""; + var firstToken = this.nextToken; + var lastToken = firstToken; + while (this.nextToken.text !== (optional ? "]" : "}")) { + if (this$1.nextToken.text === "EOF") { + throw new ParseError$5( + "Unexpected end of input in " + modeName, + firstToken.range(this$1.nextToken, str)); + } + lastToken = this$1.nextToken; + str += lastToken.text; + this$1.consume(); + } + this.mode = outerMode; + this.expect(optional ? "]" : "}"); + return firstToken.range(lastToken, str); +}; + +/** + * Parses a regex-delimited group: the largest sequence of tokens + * whose concatenated strings match `regex`. Returns the string + * formed by the tokens plus some position information. + * + * @param {RegExp} regex + * @param {string} modeName Used to describe the mode in error messages + */ +Parser$1.prototype.parseRegexGroup = function(regex, modeName) { + var this$1 = this; + + var outerMode = this.mode; + this.mode = "text"; + var firstToken = this.nextToken; + var lastToken = firstToken; + var str = ""; + while (this.nextToken.text !== "EOF" + && regex.test(str + this.nextToken.text)) { + lastToken = this$1.nextToken; + str += lastToken.text; + this$1.consume(); + } + if (str === "") { + throw new ParseError$5( + "Invalid " + modeName + ": '" + firstToken.text + "'", + firstToken); + } + this.mode = outerMode; + return firstToken.range(lastToken, str); +}; + +/** + * Parses a color description. + */ +Parser$1.prototype.parseColorGroup = function(optional) { + var res = this.parseStringGroup("color", optional); + if (!res) { + return null; + } + var match = (/^(#[a-z0-9]+|[a-z]+)$/i).exec(res.text); + if (!match) { + throw new ParseError$5("Invalid color: '" + res.text + "'", res); + } + return new ParseFuncOrArgument( + new ParseNode("color", match[0], this.mode), + false); +}; + +/** + * Parses a size specification, consisting of magnitude and unit. + */ +Parser$1.prototype.parseSizeGroup = function(optional) { + var res; + if (!optional && this.nextToken.text !== "{") { + res = this.parseRegexGroup( + /^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2}$/, "size"); + } else { + res = this.parseStringGroup("size", optional); + } + if (!res) { + return null; + } + var match = (/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/).exec(res.text); + if (!match) { + throw new ParseError$5("Invalid size: '" + res.text + "'", res); + } + var data = { + number: +(match[1] + match[2]), // sign + magnitude, cast to number + unit: match[3] + }; + if (data.unit !== "em" && data.unit !== "ex" && data.unit !== "mu") { + throw new ParseError$5("Invalid unit: '" + data.unit + "'", res); + } + return new ParseFuncOrArgument( + new ParseNode("color", data, this.mode), + false); +}; + +/** + * If the argument is false or absent, this parses an ordinary group, + * which is either a single nucleus (like "x") or an expression + * in braces (like "{x+y}"). + * If the argument is true, it parses either a bracket-delimited expression + * (like "[x+y]") or returns null to indicate the absence of a + * bracket-enclosed group. + * + * @param {boolean=} optional Whether the group is optional or required + * @return {?ParseFuncOrArgument} + */ +Parser$1.prototype.parseGroup = function(optional) { + var firstToken = this.nextToken; + // Try to parse an open brace + if (this.nextToken.text === (optional ? "[" : "{")) { + // If we get a brace, parse an expression + this.consume(); + var expression = this.parseExpression(false, optional ? "]" : null); + var lastToken = this.nextToken; + // Make sure we get a close brace + this.expect(optional ? "]" : "}"); + if (this.mode === "text") { + this.formLigatures(expression); + } + return new ParseFuncOrArgument( + new ParseNode("ordgroup", expression, this.mode, + firstToken, lastToken), + false); + } else { + // Otherwise, just return a nucleus, or nothing for an optional group + return optional ? null : this.parseSymbol(); + } +}; + +/** + * Form ligature-like combinations of characters for text mode. + * This includes inputs like "--", "---", "``" and "''". + * The result will simply replace multiple textord nodes with a single + * character in each value by a single textord node having multiple + * characters in its value. The representation is still ASCII source. + * + * @param {Array.} group the nodes of this group, + * list will be moified in place + */ +Parser$1.prototype.formLigatures = function(group) { + var i; + var n = group.length - 1; + for (i = 0; i < n; ++i) { + var a = group[i]; + var v = a.value; + if (v === "-" && group[i + 1].value === "-") { + if (i + 1 < n && group[i + 2].value === "-") { + group.splice(i, 3, new ParseNode( + "textord", "---", "text", a, group[i + 2])); + n -= 2; + } else { + group.splice(i, 2, new ParseNode( + "textord", "--", "text", a, group[i + 1])); + n -= 1; + } + } + if ((v === "'" || v === "`") && group[i + 1].value === v) { + group.splice(i, 2, new ParseNode( + "textord", v + v, "text", a, group[i + 1])); + n -= 1; + } + } +}; + +/** + * Parse a single symbol out of the string. Here, we handle both the functions + * we have defined, as well as the single character symbols + * + * @return {?ParseFuncOrArgument} + */ +Parser$1.prototype.parseSymbol = function() { + var nucleus = this.nextToken; + + if (functions[nucleus.text]) { + this.consume(); + // If there exists a function with this name, we return the function and + // say that it is a function. + return new ParseFuncOrArgument( + nucleus.text, + true, nucleus); + } else if (symbols$5[this.mode][nucleus.text]) { + this.consume(); + // Otherwise if this is a no-argument function, find the type it + // corresponds to in the symbols map + return new ParseFuncOrArgument( + new ParseNode(symbols$5[this.mode][nucleus.text].group, + nucleus.text, this.mode, nucleus), + false, nucleus); + } else if (this.mode === "text" && cjkRegex$2.test(nucleus.text)) { + this.consume(); + return new ParseFuncOrArgument( + new ParseNode("textord", nucleus.text, this.mode, nucleus), + false, nucleus); + } else { + return null; + } +}; + +Parser$1.prototype.ParseNode = ParseNode; + +var Parser_1 = Parser$1; + +/** + * Provides a single function for parsing an expression using a Parser + * TODO(emily): Remove this + */ + +var Parser = Parser_1; + +/** + * Parses an expression using a Parser, then returns the parsed result. + */ +var parseTree$1 = function(toParse, settings) { + if (!(typeof toParse === 'string' || toParse instanceof String)) { + throw new TypeError('KaTeX can only parse string typed expression'); + } + var parser = new Parser(toParse, settings); + + return parser.parse(); +}; + +var parseTree_1 = parseTree$1; + +/* eslint no-console:0 */ +/** + * This is the main entry point for KaTeX. Here, we expose functions for + * rendering expressions either to DOM nodes or to markup strings. + * + * We also expose the ParseError class to check if errors thrown from KaTeX are + * errors in the expression, or errors in javascript handling. + */ + +var ParseError = ParseError_1; +var Settings = Settings_1; + +var buildTree = buildTree_1; +var parseTree = parseTree_1; +var utils = utils$4; + +/** + * Parse and build an expression, and place that expression in the DOM node + * given. + */ +var render$2 = function(expression, baseNode, options) { + utils.clearNode(baseNode); + + var settings = new Settings(options); + + var tree = parseTree(expression, settings); + var node = buildTree(tree, expression, settings).toNode(); + + baseNode.appendChild(node); +}; + +// KaTeX's styles don't work properly in quirks mode. Print out an error, and +// disable rendering. +if (typeof document !== "undefined") { + if (document.compatMode !== "CSS1Compat") { + typeof console !== "undefined" && console.warn( + "Warning: KaTeX doesn't work in quirks mode. Make sure your " + + "website has a suitable doctype."); + + render$2 = function() { + throw new ParseError("KaTeX doesn't work in quirks mode."); + }; + } +} + +/** + * Parse and build an expression, and return the markup for that. + */ +var renderToString = function(expression, options) { + var settings = new Settings(options); + + var tree = parseTree(expression, settings); + return buildTree(tree, expression, settings).toMarkup(); +}; + +/** + * Parse an expression and return the parse tree. + */ +var generateParseTree = function(expression, options) { + var settings = new Settings(options); + return parseTree(expression, settings); +}; + +var katex = { + render: render$2, + renderToString: renderToString, + /** + * NOTE: This method is not currently recommended for public use. + * The internal tree representation is unstable and is very likely + * to change. Use at your own risk. + */ + __parse: generateParseTree, + ParseError: ParseError +}; + +var html$3 = "\n\n"; + +var DTMath = function(dom, data) { + var equationElements = [].slice.call(dom.querySelectorAll("dt-math")); + equationElements.forEach(function (el) { + var content = el.textContent; + console.log(content); + var displayMode = el.hasAttribute("block") ? true : false; + el.innerHTML = html$3 + katex.renderToString(content, {displayMode: displayMode}); + }); +}; + var marked = createCommonjsModule(function (module, exports) { /** * marked - a markdown parser @@ -8787,29 +17866,29 @@ function xml(obj) { var logo = "\n \n\n"; -var html$3 = "\n\n\n\n"; +var html$4 = "\n\n\n\n"; var header = function(dom, data) { var el = dom.querySelector("dt-header"); if(el) { - el.innerHTML = html$3; + el.innerHTML = html$4; } else { var header = dom.createElement("dt-header"); - header.innerHTML = html$3; + header.innerHTML = html$4; var b = dom.querySelector("body"); b.insertBefore(header, b.firstChild); } }; -var html$4 = "\n\n\n
    \n
    \n \n " + logo + "\n Distill\n \n is dedicated to clear explanations of machine learning\n
    \n
    \n About\n Submit\n Prize\n RSS\n Twitter\n
    \n
    \n"; +var html$5 = "\n\n\n
    \n
    \n \n " + logo + "\n Distill\n \n is dedicated to clear explanations of machine learning\n
    \n
    \n About\n Submit\n Prize\n RSS\n Twitter\n
    \n
    \n"; var footer = function(dom, data) { var el = dom.querySelector("dt-footer"); if(el) { - el.innerHTML = html$4; + el.innerHTML = html$5; } else { var footer = dom.createElement("dt-footer"); - footer.innerHTML = html$4; + footer.innerHTML = html$5; var b = dom.querySelector("body"); b.appendChild(footer); } @@ -8828,6 +17907,7 @@ function renderOnLoad(dom, data) { byline(dom, data); appendix(dom, data); markdown(dom, data); + DTMath(dom, data); code$1(dom, data); citation(dom, data); footnote(dom, data); diff --git a/dist/template.js.map b/dist/template.js.map index 56e5fbd..a7ac5e0 100644 --- a/dist/template.js.map +++ b/dist/template.js.map @@ -1 +1 @@ -{"version":3,"file":null,"sources":["../components/html.js","../components/styles.js","../node_modules/js-yaml/lib/js-yaml/common.js","../node_modules/js-yaml/lib/js-yaml/exception.js","../node_modules/js-yaml/lib/js-yaml/mark.js","../node_modules/js-yaml/lib/js-yaml/type.js","../node_modules/js-yaml/lib/js-yaml/schema.js","../node_modules/js-yaml/lib/js-yaml/type/str.js","../node_modules/js-yaml/lib/js-yaml/type/seq.js","../node_modules/js-yaml/lib/js-yaml/type/map.js","../node_modules/js-yaml/lib/js-yaml/schema/failsafe.js","../node_modules/js-yaml/lib/js-yaml/type/null.js","../node_modules/js-yaml/lib/js-yaml/type/bool.js","../node_modules/js-yaml/lib/js-yaml/type/int.js","../node_modules/js-yaml/lib/js-yaml/type/float.js","../node_modules/js-yaml/lib/js-yaml/schema/json.js","../node_modules/js-yaml/lib/js-yaml/schema/core.js","../node_modules/js-yaml/lib/js-yaml/type/timestamp.js","../node_modules/js-yaml/lib/js-yaml/type/merge.js","../node_modules/js-yaml/lib/js-yaml/type/binary.js","../node_modules/js-yaml/lib/js-yaml/type/omap.js","../node_modules/js-yaml/lib/js-yaml/type/pairs.js","../node_modules/js-yaml/lib/js-yaml/type/set.js","../node_modules/js-yaml/lib/js-yaml/schema/default_safe.js","../node_modules/js-yaml/lib/js-yaml/type/js/undefined.js","../node_modules/js-yaml/lib/js-yaml/type/js/regexp.js","../node_modules/js-yaml/lib/js-yaml/type/js/function.js","../node_modules/js-yaml/lib/js-yaml/schema/default_full.js","../node_modules/js-yaml/lib/js-yaml/loader.js","../node_modules/js-yaml/lib/js-yaml/dumper.js","../node_modules/js-yaml/lib/js-yaml.js","../node_modules/js-yaml/index.js","../components/front-matter.js","../node_modules/bibtex-parse-js/bibtexParse.js","../components/bibliography.js","../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/utcMinute.js","../node_modules/d3-time/src/utcHour.js","../node_modules/d3-time/src/utcDay.js","../node_modules/d3-time/src/utcWeek.js","../node_modules/d3-time/src/utcMonth.js","../node_modules/d3-time/src/utcYear.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-time-format/src/isoFormat.js","../node_modules/d3-time-format/src/isoParse.js","../components/data.js","../../node_modules/escape-html/index.js","../components/meta.js","../components/banner.js","../node_modules/mustache/mustache.js","../components/byline.js","../components/appendix.js","../components/appendix-distill.js","../components/citation.js","../components/footnote.js","../node_modules/marked/lib/marked.js","../components/markdown.js","../node_modules/prismjs/prism.js","../components/code.js","../components/typeset.js","../components/hover-box-include.js","../components/generate-crossref.js","../components/header.js","../components/footer.js","../index.js"],"sourcesContent":["export default function(dom) {\n if (!dom.querySelector(\"html\").getAttribute(\"lang\")) {\n dom.querySelector(\"html\").setAttribute(\"lang\", \"en\")\n }\n\n let head = dom.querySelector(\"head\");\n\n if (!dom.querySelector(\"meta[charset]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"charset\", \"utf-8\");\n head.appendChild(meta);\n }\n if (!dom.querySelector(\"meta[name=viewport]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"name\", \"viewport\");\n meta.setAttribute(\"content\", \"width=device-width, initial-scale=1\");\n head.appendChild(meta);\n }\n}\n","import base from './styles-base.css';\nimport layout from './styles-layout.css';\nimport article from './styles-article.css';\nimport code from './styles-code.css';\nimport print from './styles-print.css';\n\nexport default function(dom) {\n let s = dom.createElement(\"style\");\n s.textContent = base + layout + article + code + print;\n dom.querySelector(\"head\").appendChild(s);\n}\n","'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n var result = this.name + ': ';\n\n result += this.reason || '(unknown reason)';\n\n if (!compact && this.mark) {\n result += ' ' + this.mark.toString();\n }\n\n return result;\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n\nvar common = require('./common');\n\n\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\n\n\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head, start, tail, end, snippet;\n\n if (!this.buffer) return null;\n\n indent = indent || 4;\n maxLength = maxLength || 75;\n\n head = '';\n start = this.position;\n\n while (start > 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n\n tail = '';\n end = this.position;\n\n while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n\n snippet = this.buffer.slice(start, end);\n\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' +\n common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\n\nMark.prototype.toString = function toString(compact) {\n var snippet, where = '';\n\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n if (!compact) {\n snippet = this.getSnippet();\n\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n\n return where;\n};\n\n\nmodule.exports = Mark;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name, result) {\n var exclude = [];\n\n schema.include.forEach(function (includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n\n schema[name].forEach(function (currentType) {\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n exclude.push(previousIndex);\n }\n });\n\n result.push(currentType);\n });\n\n return result.filter(function (type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {}\n }, index, length;\n\n function collectType(type) {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n\n this.implicit.forEach(function (type) {\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n });\n\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\n\nSchema.DEFAULT = null;\n\n\nSchema.create = function createSchema() {\n var schemas, types;\n\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n\n if (!schemas.every(function (schema) { return schema instanceof Schema; })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n\n if (!types.every(function (type) { return type instanceof Type; })) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n return new Schema({\n include: schemas,\n explicit: types\n });\n};\n\n\nmodule.exports = Schema;\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 8\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 10 (except 0) or base 60\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch === ':') break;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n if (!hasDigits) return false;\n\n // if !base60 - done;\n if (ch !== ':') return true;\n\n // base60 almost not used, no needs to optimize\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch, base, digits = [];\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value, 16);\n return sign * parseInt(value, 8);\n }\n\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseInt(v, 10));\n });\n\n value = 0;\n base = 1;\n\n digits.forEach(function (d) {\n value += (d * base);\n base *= 60;\n });\n\n return sign * value;\n\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (object) { return '0b' + object.toString(2); },\n octal: function (object) { return '0' + object.toString(8); },\n decimal: function (object) { return object.toString(10); },\n hexadecimal: function (object) { return '0x' + object.toString(16).toUpperCase(); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n '^(?:[-+]?(?:[0-9][0-9_]*)\\\\.[0-9_]*(?:[eE][-+][0-9]+)?' +\n '|\\\\.[0-9_]+(?:[eE][-+][0-9]+)?' +\n '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' +\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data)) return false;\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign, base, digits;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n\n } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n\n value = 0.0;\n base = 1;\n\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n\n return sign * value;\n\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./failsafe')\n ],\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./json')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\nvar NodeBuffer;\n\ntry {\n // A trick for browserified version, to not include `Buffer` shim\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n // Wrap into Buffer for NodeJS and leave Array for browser\n if (NodeBuffer) return new NodeBuffer(result);\n\n return result;\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./core')\n ],\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n return true;\n}\n\nfunction constructJavascriptUndefined() {\n /*eslint-disable no-undefined*/\n return undefined;\n}\n\nfunction representJavascriptUndefined() {\n return '';\n}\n\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n if (data === null) return false;\n if (data.length === 0) return false;\n\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // if regexp starts with '/' it can have modifiers and must be properly closed\n // `/foo/gim` - modifiers tail can be maximum 3 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n\n if (modifiers.length > 3) return false;\n // if expression starts with /, is should be properly terminated\n if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n }\n\n return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // `/foo/gim` - tail can be maximum 4 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n\n return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object /*, style*/) {\n var result = '/' + object.source + '/';\n\n if (object.global) result += 'g';\n if (object.multiline) result += 'm';\n if (object.ignoreCase) result += 'i';\n\n return result;\n}\n\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n","'use strict';\n\nvar esprima;\n\n// Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n// If not found - try to fallback to window.esprima. If not\n// found too - then fail to parse.\n//\ntry {\n // workaround to exclude package from browserify list.\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n /*global window */\n if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n if (data === null) return false;\n\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true });\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction constructJavascriptFunction(data) {\n /*jslint evil:true*/\n\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true }),\n params = [],\n body;\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n throw new Error('Failed to resolve function');\n }\n\n ast.body[0].expression.params.forEach(function (param) {\n params.push(param.name);\n });\n\n body = ast.body[0].expression.body.range;\n\n // Esprima's ranges include the first '{' and the last '}' characters on\n // function expressions. So cut them out.\n /*eslint-disable no-new-func*/\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n}\n\nfunction representJavascriptFunction(object /*, style*/) {\n return object.toString();\n}\n\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n","// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [\n require('./default_safe')\n ],\n explicit: [\n require('../type/js/undefined'),\n require('../type/js/regexp'),\n require('../type/js/function')\n ]\n});\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00);\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n return new YAMLException(\n message,\n new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length;\n _position < _length;\n _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode) {\n var index, quantity;\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n throwError(state, 'duplicated mapping key');\n }\n _result[keyNode] = valueNode;\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else {\n break; // Reading is done. Go to the epilogue.\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if (state.lineIndent > nodeIndent && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!state.anchorMap.hasOwnProperty(alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag !== null && state.tag !== '!') {\n if (state.tag === '?') {\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length;\n typeIndex < typeQuantity;\n typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only assigned to plain scalars. So, it isn't\n // needed to check for 'kind' conformity.\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = {};\n state.anchorMap = {};\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n var documents = loadDocuments(input, options), index, length;\n\n for (index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nfunction safeLoadAll(input, output, options) {\n loadAll(input, output, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nfunction safeLoad(input, options) {\n return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// Simplified test for values allowed after the first character in plain style.\nfunction isPlainSafe(c) {\n // Uses a subset of nb-char - c-flow-indicator - \":\" - \"#\"\n // where nb-char ::= c-printable - b-char - c-byte-order-mark.\n return isPrintable(c) && c !== 0xFEFF\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // - \":\" - \"#\"\n && c !== CHAR_COLON\n && c !== CHAR_SHARP;\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n return isPrintable(c) && c !== 0xFEFF\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {\n var i;\n var char;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(string.charCodeAt(0))\n && !isWhitespace(string.charCodeAt(string.length - 1));\n\n if (singleLineOnly) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n return plain && !testAmbiguousType(string)\n ? STYLE_PLAIN : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (string[0] === ' ' && indentPerLevel > 9) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey) {\n state.dump = (function () {\n if (string.length === 0) {\n return \"''\";\n }\n if (!state.noCompatMode &&\n DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n return \"'\" + string + \"'\";\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = (string[0] === ' ') ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char;\n var escapeSeq;\n\n for (var i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n result += !escapeSeq && isPrintable(char)\n ? string[i]\n : escapeSeq || encodeHex(char);\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level, object[index], false, false)) {\n if (index !== 0) _result += ', ';\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || index !== 0) {\n _result += generateNextLine(state, level);\n }\n _result += '- ' + state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (index !== 0) pairBuffer += ', ';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + ': ';\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || index !== 0) {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n state.tag = explicit ? type.tag : '?';\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n writeBlockSequence(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey);\n }\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n state.dump = '!<' + state.tag + '> ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n if (writeNode(state, 0, input, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nfunction safeDump(input, options) {\n return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n","'use strict';\n\n\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\n\n\nfunction deprecated(name) {\n return function () {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\n\n\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\n\n// Deprecated schema names from JS-YAML 2.0.x\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\n\n// Deprecated functions from JS-YAML 1.x.x\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","'use strict';\n\n\nvar yaml = require('./lib/js-yaml.js');\n\n\nmodule.exports = yaml;\n","import ymlParse from \"js-yaml\";\n\nexport default function(dom, data) {\n let localData = {};\n let el = dom.querySelector('script[type=\"text/front-matter\"]');\n if (el) {\n let text = el.textContent;\n localData = ymlParse.safeLoad(text);\n }\n\n data.title = localData.title ? localData.title : \"Untitled\";\n data.description = localData.description ? localData.description : \"No description.\";\n\n data.authors = localData.authors ? localData.authors : [];\n\n data.authors = data.authors.map((author, i) =>{\n let a = {};\n let name = Object.keys(author)[0];\n if ((typeof author) === \"string\") {\n name = author;\n } else {\n a.personalURL = author[name];\n }\n let names = name.split(\" \");\n a.name = name;\n a.firstName = names.slice(0, names.length - 1).join(\" \");\n a.lastName = names[names.length -1];\n if(localData.affiliations[i]) {\n let affiliation = Object.keys(localData.affiliations[i])[0];\n if ((typeof localData.affiliations[i]) === \"string\") {\n affiliation = localData.affiliations[i]\n } else {\n a.affiliationURL = localData.affiliations[i][affiliation];\n }\n a.affiliation = affiliation;\n }\n return a;\n });\n \n\n}\n","/* start bibtexParse 0.0.22 */\n\n//Original work by Henrik Muehe (c) 2010\n//\n//CommonJS port by Mikola Lysenko 2013\n//\n//Port to Browser lib by ORCID / RCPETERS\n//\n//Issues:\n//no comment handling within strings\n//no string concatenation\n//no variable values yet\n//Grammar implemented here:\n//bibtex -> (string | preamble | comment | entry)*;\n//string -> '@STRING' '{' key_equals_value '}';\n//preamble -> '@PREAMBLE' '{' value '}';\n//comment -> '@COMMENT' '{' value '}';\n//entry -> '@' key '{' key ',' key_value_list '}';\n//key_value_list -> key_equals_value (',' key_equals_value)*;\n//key_equals_value -> key '=' value;\n//value -> value_quotes | value_braces | key;\n//value_quotes -> '\"' .*? '\"'; // not quite\n//value_braces -> '{' .*? '\"'; // not quite\n(function(exports) {\n\n function BibtexParser() {\n \n this.months = [\"jan\", \"feb\", \"mar\", \"apr\", \"may\", \"jun\", \"jul\", \"aug\", \"sep\", \"oct\", \"nov\", \"dec\"];\n this.notKey = [',','{','}',' ','='];\n this.pos = 0;\n this.input = \"\";\n this.entries = new Array();\n\n this.currentEntry = \"\";\n\n this.setInput = function(t) {\n this.input = t;\n };\n\n this.getEntries = function() {\n return this.entries;\n };\n\n this.isWhitespace = function(s) {\n return (s == ' ' || s == '\\r' || s == '\\t' || s == '\\n');\n };\n\n this.match = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n this.pos += s.length;\n } else {\n throw \"Token mismatch, expected \" + s + \", found \"\n + this.input.substring(this.pos);\n };\n this.skipWhitespace(canCommentOut);\n };\n\n this.tryMatch = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n return true;\n } else {\n return false;\n };\n this.skipWhitespace(canCommentOut);\n };\n\n /* when search for a match all text can be ignored, not just white space */\n this.matchAt = function() {\n while (this.input.length > this.pos && this.input[this.pos] != '@') {\n this.pos++;\n };\n\n if (this.input[this.pos] == '@') {\n return true;\n };\n return false;\n };\n\n this.skipWhitespace = function(canCommentOut) {\n while (this.isWhitespace(this.input[this.pos])) {\n this.pos++;\n };\n if (this.input[this.pos] == \"%\" && canCommentOut == true) {\n while (this.input[this.pos] != \"\\n\") {\n this.pos++;\n };\n this.skipWhitespace(canCommentOut);\n };\n };\n\n this.value_braces = function() {\n var bracecount = 0;\n this.match(\"{\", false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '}') {\n if (bracecount > 0) {\n bracecount--;\n } else {\n var end = this.pos;\n this.match(\"}\", false);\n return this.input.substring(start, end);\n };\n } else if (this.input[this.pos] == '{') {\n bracecount++;\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value\";\n };\n };\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.value_comment = function() {\n var str = '';\n var brcktCnt = 0;\n while (!(this.tryMatch(\"}\", false) && brcktCnt == 0)) {\n str = str + this.input[this.pos];\n if (this.input[this.pos] == '{')\n brcktCnt++;\n if (this.input[this.pos] == '}')\n brcktCnt--;\n if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n this.pos++;\n };\n return str;\n };\n\n this.value_quotes = function() {\n this.match('\"', false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '\"') {\n var end = this.pos;\n this.match('\"', false);\n return this.input.substring(start, end);\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n }\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.single_value = function() {\n var start = this.pos;\n if (this.tryMatch(\"{\")) {\n return this.value_braces();\n } else if (this.tryMatch('\"')) {\n return this.value_quotes();\n } else {\n var k = this.key();\n if (k.match(\"^[0-9]+$\"))\n return k;\n else if (this.months.indexOf(k.toLowerCase()) >= 0)\n return k.toLowerCase();\n else\n throw \"Value expected:\" + this.input.substring(start) + ' for key: ' + k;\n \n };\n };\n\n this.value = function() {\n var values = [];\n values.push(this.single_value());\n while (this.tryMatch(\"#\")) {\n this.match(\"#\");\n values.push(this.single_value());\n };\n return values.join(\"\");\n };\n\n this.key = function() {\n var start = this.pos;\n while (true) {\n if (this.pos >= this.input.length) {\n throw \"Runaway key\";\n };\n // а-яА-Я is Cyrillic\n //console.log(this.input[this.pos]);\n if (this.notKey.indexOf(this.input[this.pos]) >= 0) {\n return this.input.substring(start, this.pos);\n } else {\n this.pos++;\n \n };\n };\n };\n\n this.key_equals_value = function() {\n var key = this.key();\n if (this.tryMatch(\"=\")) {\n this.match(\"=\");\n var val = this.value();\n return [ key, val ];\n } else {\n throw \"... = value expected, equals sign missing:\"\n + this.input.substring(this.pos);\n };\n };\n\n this.key_value_list = function() {\n var kv = this.key_equals_value();\n this.currentEntry['entryTags'] = {};\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n while (this.tryMatch(\",\")) {\n this.match(\",\");\n // fixes problems with commas at the end of a list\n if (this.tryMatch(\"}\")) {\n break;\n }\n ;\n kv = this.key_equals_value();\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n };\n };\n\n this.entry_body = function(d) {\n this.currentEntry = {};\n this.currentEntry['citationKey'] = this.key();\n this.currentEntry['entryType'] = d.substring(1);\n this.match(\",\");\n this.key_value_list();\n this.entries.push(this.currentEntry);\n };\n\n this.directive = function() {\n this.match(\"@\");\n return \"@\" + this.key();\n };\n\n this.preamble = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'PREAMBLE';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.comment = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'COMMENT';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.entry = function(d) {\n this.entry_body(d);\n };\n\n this.bibtex = function() {\n while (this.matchAt()) {\n var d = this.directive();\n this.match(\"{\");\n if (d == \"@STRING\") {\n this.string();\n } else if (d == \"@PREAMBLE\") {\n this.preamble();\n } else if (d == \"@COMMENT\") {\n this.comment();\n } else {\n this.entry(d);\n }\n this.match(\"}\");\n };\n };\n };\n \n exports.toJSON = function(bibtex) {\n var b = new BibtexParser();\n b.setInput(bibtex);\n b.bibtex();\n return b.entries;\n };\n\n /* added during hackathon don't hate on me */\n exports.toBibtex = function(json) {\n var out = '';\n for ( var i in json) {\n out += \"@\" + json[i].entryType;\n out += '{';\n if (json[i].citationKey)\n out += json[i].citationKey + ', ';\n if (json[i].entry)\n out += json[i].entry ;\n if (json[i].entryTags) {\n var tags = '';\n for (var jdx in json[i].entryTags) {\n if (tags.length != 0)\n tags += ', ';\n tags += jdx + '= {' + json[i].entryTags[jdx] + '}';\n }\n out += tags;\n }\n out += '}\\n\\n';\n }\n return out;\n \n };\n\n})(typeof exports === 'undefined' ? this['bibtexParse'] = {} : exports);\n\n/* end bibtexParse */\n","import bibtexParse from \"bibtex-parse-js\";\n\nexport default function(dom, data) {\n let el = dom.querySelector('script[type=\"text/bibliography\"]');\n let bibliography = {};\n //TODO If we don't have a local element, make a request for the document.\n if (el) {\n let rawBib = el.textContent;\n let parsed = bibtexParse.toJSON(rawBib);\n if(parsed) {\n parsed.forEach(e => {\n for (var k in e.entryTags){\n var val = e.entryTags[k];\n val = val.replace(/[\\t\\n ]+/g, \" \");\n val = val.replace(/{\\\\[\"^`\\.'acu~Hvs]( )?([a-zA-Z])}/g,\n (full, x, char) => char);\n val = val.replace(/{\\\\([a-zA-Z])}/g,\n (full, char) => char);\n e.entryTags[k.toLowerCase()] = val;\n }\n bibliography[e.citationKey] = e.entryTags;\n bibliography[e.citationKey].type = e.entryType;\n });\n }\n }\n data.bibliography = bibliography;\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(new Date(+start)); while (offseti(start, step), floori(start), start < stop)\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) while (--step >= 0) while (offseti(date, 1), !test(date)) {} // eslint-disable-line no-empty\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(Math.floor(date / durationSecond) * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(Math.floor(date / durationMinute) * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute} from \"./duration\";\n\nvar hour = interval(function(date) {\n var offset = date.getTimezoneOffset() * durationMinute % durationHour;\n if (offset < 0) offset += durationHour;\n date.setTime(Math.floor((+date - offset) / durationHour) * durationHour + offset);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval\";\nimport {durationWeek} from \"./duration\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {timeDay, timeSunday, timeMonday, timeYear, utcDay, utcSunday, utcMonday, utcYear} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"S\": formatSeconds,\n \"U\": formatWeekNumberSunday,\n \"w\": formatWeekdayNumber,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"S\": formatUTCSeconds,\n \"U\": formatUTCWeekNumberSunday,\n \"w\": formatUTCWeekdayNumber,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"S\": parseSeconds,\n \"U\": parseWeekNumberSunday,\n \"w\": parseWeekdayNumber,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0);\n if (i != string.length) return null;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n var day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?:\\:?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekdayNumber(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekdayNumber(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {timeFormat} from \"d3-time-format\";\n\nexport default function(dom, data) {\n\n //\n // Properties from source\n //\n\n // title: 'Attention and Augmented Recurrent Neural Networks',\n // description: 'A visual overview of neural attention, and the powerful extensions of neural networks being built on top of it.',\n // url: 'http://distill.pub/2016/augmented-rnns',\n // tags: [ 'rnn' ],\n // doiSuffix: 1,\n // doi: '10.23915/distill.00001',\n // volume: 1,\n // issue: 9,\n // distillPath: '2016/augmented-rnns',\n // githubPath: 'distillpub/post--augmented-rnns',\n // githubCompareUpdatesUrl: 'https://github.com/distillpub/post--augmented-rnns/compare/1596e094d8943d2dc0ea445d92071129c6419c59...3bd9209e0c24d020f87cf6152dcecc6017cbc193',\n // updatedDate: 2017-03-21T07:13:16.000Z,\n // publishedDate: 2016-09-08T07:00:00.000Z,\n // journal: {\n // \"title\": \"Distill\",\n // \"full_title\": \"Distill\",\n // \"abbrev_title\": \"Distill\",\n // \"url\": \"http://distill.pub\",\n // \"doi\": \"10.23915/distill\",\n // \"publisherName\": \"Distill Working Group\",\n // \"publisherEmail\": \"admin@distill.pub\",\n // \"issn\": \"2476-0757\",\n // \"editors\": [...],\n // \"committee\": [...]\n // }\n\n //\n // Computed Properties\n //\n\n // githubUrl: 'https://github.com/distillpub/post--augmented-rnns',\n // previewURL: 'http://distill.pub/2016/augmented-rnns/thumbnail.jpg',\n // publishedDateRFC: 'Thu, 08 Sep 2016 00:00:00 -0700',\n // publishedYear: 2016,\n // publishedMonth: 'Sept',\n // publishedDay: 8,\n // publishedMonthPadded: '09',\n // publishedDayPadded: '08',\n // updatedDateRFC: 'Tue, 21 Mar 2017 00:13:16 -0700',\n // concatenatedAuthors: 'Olah & Carter',\n // bibtexAuthors: 'Olah, Chris and Carter, Shan',\n // slug: 'olah2016attention'\n // authors: [\n // {\n // \"personalURL\": null,\n // \"name\": \"Chris Olah\",\n // \"firstName\": \"Chris\",\n // \"lastName\": \"Olah\",\n // \"affiliationURL\": null,\n // \"affiliation\": \"Google Brain\"\n // }\n // ],\n // bibliography: {\n // \"gregor2015draw\": {\n // \"title\": \"DRAW: A recurrent neural network for image generation\",\n // \"author\": \"Gregor, Karol and Danihelka, Ivo and Graves, Alex and Rezende, Danilo Jimenez and Wierstra, Daan\",\n // \"journal\": \"arXiv preprint arXiv:1502.04623\",\n // \"year\": \"2015\",\n // \"url\": \"https://arxiv.org/pdf/1502.04623.pdf\",\n // \"type\": \"article\"\n // },\n // ...\n // },\n // citations: [\n // \"gregor2015draw\",\n // \"mercier2011humans\",\n // \"dong2014image\",\n // \"dumoulin2016guide\",\n // \"mordvintsev2015inceptionism\"\n // ],\n\n\n // citations:\n let citations = [];\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach(el => {\n let key = el.getAttribute(\"key\");\n if (key) {\n let citationKeys = key.split(\",\");\n citationKeys.forEach(key => {\n if (citations.indexOf(key) == -1){\n citations.push(key);\n if (!(key in data.bibliography)){\n console.warn(\"No bibliography entry found for: \" + key);\n }\n }\n });\n }\n });\n data.citations = citations;\n\n\n data.authors = data.authors || [];\n\n // paths\n if (!data.distillPath && !data.url) {\n data.url = \"http://distill.pub/\";\n } else if (!data.url) {\n data.url = \"http://distill.pub/\" + data.distillPath;\n }\n data.githubUrl = \"https://github.com/\" + data.githubPath;\n\n data.previewURL = data.previewURL ? data.previewURL : data.url + \"/thumbnail.jpg\"\n\n // Homepage\n //data.homepage = !post.noHomepage;\n data.journal = data.journal || {};\n\n // Dates\n if (data.publishedDate){//} && data.journal) {\n data.volume = data.publishedDate.getFullYear() - 2015;\n data.issue = data.publishedDate.getMonth() + 1;\n }\n\n data.publishedDate = data.publishedDate ? data.publishedDate : new Date(\"Invalid\");\n data.updatedDate = data.updatedDate ? data.updatedDate : new Date(\"Invalid\");\n\n data.publishedDateRFC\n let RFC = timeFormat(\"%a, %d %b %Y %H:%M:%S %Z\");\n let months = [\"Jan\", \"Feb\", \"March\", \"April\", \"May\", \"June\", \"July\", \"Aug\", \"Sept\", \"Oct\", \"Nov\", \"Dec\"];\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n data.publishedDateRFC = RFC(data.publishedDate);\n data.publishedYear = data.publishedDate.getFullYear();\n data.publishedMonth = months[data.publishedDate.getMonth()];\n data.publishedDay = data.publishedDate.getDate();\n data.publishedMonthPadded = zeroPad(data.publishedDate.getMonth() + 1);\n data.publishedDayPadded = zeroPad(data.publishedDate.getDate());\n data.updatedDateRFC = RFC(data.updatedDate);\n\n if (data.authors.length > 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \", et al.\";\n } else if (data.authors.length === 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \" & \" + data.authors[1].lastName;\n } else if (data.authors.length === 1) {\n data.concatenatedAuthors = data.authors[0].lastName\n }\n\n data.bibtexAuthors = data.authors.map(function(author){\n return author.lastName + \", \" + author.firstName;\n }).join(\" and \");\n\n data.slug = data.authors.length ? data.authors[0].lastName.toLowerCase() + data.publishedYear + data.title.split(\" \")[0].toLowerCase() : \"Untitled\";\n\n}\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","import favicon from './distill-favicon.base64';\nimport escape from 'escape-html';\n\nexport default function(dom, data) {\n let head = dom.querySelector(\"head\");\n let appendHead = html => appendHtml(head, html);\n\n function meta(name, content, force) {\n if (content || force)\n appendHead(` \\n`);\n }\n\n appendHead(`\n \n \n \n \n ${data.title}\n `);\n\n appendHead(`\n \n \n \n `);\n data.authors.forEach((a) => {\n appendHtml(head, `\n `)\n });\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n // if this is a proprer article, generate Google Scholar meta data\n if (data.doiSuffix){\n appendHead(`\n \\n`);\n\n meta(\"citation_title\", data.title);\n //meta(\"citation_fulltext_html_url\", data.url);\n meta(\"citation_volume\", data.volume);\n meta(\"citation_issue\", data.issue);\n meta(\"citation_firstpage\", data.doiSuffix? `e${data.doiSuffix}` : undefined);\n meta(\"citation_doi\", data.doi);\n\n let journal = data.journal || {};\n meta(\"citation_journal_title\", journal.full_title || journal.title);\n meta(\"citation_journal_abbrev\", journal.abbrev_title);\n meta(\"citation_issn\", journal.issn);\n meta(\"citation_publisher\", journal.publisher);\n meta(\"citation_fulltext_world_readable\", \"\", true);\n\n if (data.publishedDate){\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n meta(\"citation_online_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n // Should we do something different here?\n meta(\"citation_publication_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n }\n\n (data.authors || []).forEach((a) => {\n meta(\"citation_author\", `${a.lastName}, ${a.firstName}`);\n meta(\"citation_author_institution\", a.affiliation);\n });\n\n if (data.citations) {\n data.citations.forEach(key => {\n let d = data.bibliography[key];\n if(!d) {\n console.warn(\"No bibliography data fround for \" + key)\n } else {\n meta(\"citation_reference\", citation_meta_content(data.bibliography[key]) )\n };\n });\n }\n }\n}\n\nfunction appendHtml(el, html) {\n el.innerHTML += html;\n}\n\nfunction citation_meta_content(ref){\n // Special test for arxiv\n var content = `citation_title=${ref.title};`;\n\n let name_strings = ref.author.split(\" and \").forEach(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1].trim();\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n content += `citation_author=${firsts} ${last};`;\n });\n\n if (\"year\" in ref) {\n content += `citation_publication_date=${ref.year};`;\n }\n\n var arxiv_id_search = /https?:\\/\\/arxiv\\.org\\/pdf\\/([0-9]*\\.[0-9]*)\\.pdf/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /https?:\\/\\/arxiv\\.org\\/abs\\/([0-9]*\\.[0-9]*)/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /arXiv preprint arXiv:([0-9]*\\.[0-9]*)/.exec(ref.journal);\n if (arxiv_id_search && arxiv_id_search[1]){\n content += `citation_arxiv_id=${arxiv_id_search[1]};`;\n return content;\n }\n if (\"journal\" in ref){\n content += `citation_journal_title=${ref.journal};`;\n }\n if (\"volume\" in ref) {\n content += `citation_volume=${ref.volume};`;\n }\n if (\"issue\" in ref || \"number\" in ref){\n content += `citation_number=${ref.issue || ref.number};`;\n }\n /*content += `citation_first_page=${};`;\n content += `citation_publication_date=${};`;*/\n return content;\n}\n","const html = `\n\n
    This article is a draft, awaiting review for publication in Distill
    \n`;\n\nexport default function(dom, data) {\n let banner = dom.createElement(\"dt-banner\");\n banner.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(banner, b.firstChild);\n banner.addEventListener(\"click\", function() {\n banner.style.display = \"none\";\n });\n}\n","/*!\n * mustache.js - Logic-less {{mustache}} templates with JavaScript\n * http://github.com/janl/mustache.js\n */\n\n/*global define: false Mustache: true*/\n\n(function defineMustache (global, factory) {\n if (typeof exports === 'object' && exports && typeof exports.nodeName !== 'string') {\n factory(exports); // CommonJS\n } else if (typeof define === 'function' && define.amd) {\n define(['exports'], factory); // AMD\n } else {\n global.Mustache = {};\n factory(global.Mustache); // script, wsh, asp\n }\n}(this, function mustacheFactory (mustache) {\n\n var objectToString = Object.prototype.toString;\n var isArray = Array.isArray || function isArrayPolyfill (object) {\n return objectToString.call(object) === '[object Array]';\n };\n\n function isFunction (object) {\n return typeof object === 'function';\n }\n\n /**\n * More correct typeof string handling array\n * which normally returns typeof 'object'\n */\n function typeStr (obj) {\n return isArray(obj) ? 'array' : typeof obj;\n }\n\n function escapeRegExp (string) {\n return string.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n }\n\n /**\n * Null safe way of checking whether or not an object,\n * including its prototype, has a given property\n */\n function hasProperty (obj, propName) {\n return obj != null && typeof obj === 'object' && (propName in obj);\n }\n\n // Workaround for https://issues.apache.org/jira/browse/COUCHDB-577\n // See https://github.com/janl/mustache.js/issues/189\n var regExpTest = RegExp.prototype.test;\n function testRegExp (re, string) {\n return regExpTest.call(re, string);\n }\n\n var nonSpaceRe = /\\S/;\n function isWhitespace (string) {\n return !testRegExp(nonSpaceRe, string);\n }\n\n var entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n function escapeHtml (string) {\n return String(string).replace(/[&<>\"'`=\\/]/g, function fromEntityMap (s) {\n return entityMap[s];\n });\n }\n\n var whiteRe = /\\s*/;\n var spaceRe = /\\s+/;\n var equalsRe = /\\s*=/;\n var curlyRe = /\\s*\\}/;\n var tagRe = /#|\\^|\\/|>|\\{|&|=|!/;\n\n /**\n * Breaks up the given `template` string into a tree of tokens. If the `tags`\n * argument is given here it must be an array with two string values: the\n * opening and closing tags used in the template (e.g. [ \"<%\", \"%>\" ]). Of\n * course, the default is to use mustaches (i.e. mustache.tags).\n *\n * A token is an array with at least 4 elements. The first element is the\n * mustache symbol that was used inside the tag, e.g. \"#\" or \"&\". If the tag\n * did not contain a symbol (i.e. {{myValue}}) this element is \"name\". For\n * all text that appears outside a symbol this element is \"text\".\n *\n * The second element of a token is its \"value\". For mustache tags this is\n * whatever else was inside the tag besides the opening symbol. For text tokens\n * this is the text itself.\n *\n * The third and fourth elements of the token are the start and end indices,\n * respectively, of the token in the original template.\n *\n * Tokens that are the root node of a subtree contain two more elements: 1) an\n * array of tokens in the subtree and 2) the index in the original template at\n * which the closing tag for that section begins.\n */\n function parseTemplate (template, tags) {\n if (!template)\n return [];\n\n var sections = []; // Stack to hold section tokens\n var tokens = []; // Buffer to hold the tokens\n var spaces = []; // Indices of whitespace tokens on the current line\n var hasTag = false; // Is there a {{tag}} on the current line?\n var nonSpace = false; // Is there a non-space char on the current line?\n\n // Strips all whitespace tokens array for the current line\n // if there was a {{#tag}} on it and otherwise only space.\n function stripSpace () {\n if (hasTag && !nonSpace) {\n while (spaces.length)\n delete tokens[spaces.pop()];\n } else {\n spaces = [];\n }\n\n hasTag = false;\n nonSpace = false;\n }\n\n var openingTagRe, closingTagRe, closingCurlyRe;\n function compileTags (tagsToCompile) {\n if (typeof tagsToCompile === 'string')\n tagsToCompile = tagsToCompile.split(spaceRe, 2);\n\n if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)\n throw new Error('Invalid tags: ' + tagsToCompile);\n\n openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\\\s*');\n closingTagRe = new RegExp('\\\\s*' + escapeRegExp(tagsToCompile[1]));\n closingCurlyRe = new RegExp('\\\\s*' + escapeRegExp('}' + tagsToCompile[1]));\n }\n\n compileTags(tags || mustache.tags);\n\n var scanner = new Scanner(template);\n\n var start, type, value, chr, token, openSection;\n while (!scanner.eos()) {\n start = scanner.pos;\n\n // Match any text between tags.\n value = scanner.scanUntil(openingTagRe);\n\n if (value) {\n for (var i = 0, valueLength = value.length; i < valueLength; ++i) {\n chr = value.charAt(i);\n\n if (isWhitespace(chr)) {\n spaces.push(tokens.length);\n } else {\n nonSpace = true;\n }\n\n tokens.push([ 'text', chr, start, start + 1 ]);\n start += 1;\n\n // Check for whitespace on the current line.\n if (chr === '\\n')\n stripSpace();\n }\n }\n\n // Match the opening tag.\n if (!scanner.scan(openingTagRe))\n break;\n\n hasTag = true;\n\n // Get the tag type.\n type = scanner.scan(tagRe) || 'name';\n scanner.scan(whiteRe);\n\n // Get the tag value.\n if (type === '=') {\n value = scanner.scanUntil(equalsRe);\n scanner.scan(equalsRe);\n scanner.scanUntil(closingTagRe);\n } else if (type === '{') {\n value = scanner.scanUntil(closingCurlyRe);\n scanner.scan(curlyRe);\n scanner.scanUntil(closingTagRe);\n type = '&';\n } else {\n value = scanner.scanUntil(closingTagRe);\n }\n\n // Match the closing tag.\n if (!scanner.scan(closingTagRe))\n throw new Error('Unclosed tag at ' + scanner.pos);\n\n token = [ type, value, start, scanner.pos ];\n tokens.push(token);\n\n if (type === '#' || type === '^') {\n sections.push(token);\n } else if (type === '/') {\n // Check section nesting.\n openSection = sections.pop();\n\n if (!openSection)\n throw new Error('Unopened section \"' + value + '\" at ' + start);\n\n if (openSection[1] !== value)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + start);\n } else if (type === 'name' || type === '{' || type === '&') {\n nonSpace = true;\n } else if (type === '=') {\n // Set the tags for the next time around.\n compileTags(value);\n }\n }\n\n // Make sure there are no open sections when we're done.\n openSection = sections.pop();\n\n if (openSection)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + scanner.pos);\n\n return nestTokens(squashTokens(tokens));\n }\n\n /**\n * Combines the values of consecutive text tokens in the given `tokens` array\n * to a single token.\n */\n function squashTokens (tokens) {\n var squashedTokens = [];\n\n var token, lastToken;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n if (token) {\n if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {\n lastToken[1] += token[1];\n lastToken[3] = token[3];\n } else {\n squashedTokens.push(token);\n lastToken = token;\n }\n }\n }\n\n return squashedTokens;\n }\n\n /**\n * Forms the given array of `tokens` into a nested tree structure where\n * tokens that represent a section have two additional items: 1) an array of\n * all tokens that appear in that section and 2) the index in the original\n * template that represents the end of that section.\n */\n function nestTokens (tokens) {\n var nestedTokens = [];\n var collector = nestedTokens;\n var sections = [];\n\n var token, section;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n switch (token[0]) {\n case '#':\n case '^':\n collector.push(token);\n sections.push(token);\n collector = token[4] = [];\n break;\n case '/':\n section = sections.pop();\n section[5] = token[2];\n collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;\n break;\n default:\n collector.push(token);\n }\n }\n\n return nestedTokens;\n }\n\n /**\n * A simple string scanner that is used by the template parser to find\n * tokens in template strings.\n */\n function Scanner (string) {\n this.string = string;\n this.tail = string;\n this.pos = 0;\n }\n\n /**\n * Returns `true` if the tail is empty (end of string).\n */\n Scanner.prototype.eos = function eos () {\n return this.tail === '';\n };\n\n /**\n * Tries to match the given regular expression at the current position.\n * Returns the matched text if it can match, the empty string otherwise.\n */\n Scanner.prototype.scan = function scan (re) {\n var match = this.tail.match(re);\n\n if (!match || match.index !== 0)\n return '';\n\n var string = match[0];\n\n this.tail = this.tail.substring(string.length);\n this.pos += string.length;\n\n return string;\n };\n\n /**\n * Skips all text until the given regular expression can be matched. Returns\n * the skipped string, which is the entire tail if no match can be made.\n */\n Scanner.prototype.scanUntil = function scanUntil (re) {\n var index = this.tail.search(re), match;\n\n switch (index) {\n case -1:\n match = this.tail;\n this.tail = '';\n break;\n case 0:\n match = '';\n break;\n default:\n match = this.tail.substring(0, index);\n this.tail = this.tail.substring(index);\n }\n\n this.pos += match.length;\n\n return match;\n };\n\n /**\n * Represents a rendering context by wrapping a view object and\n * maintaining a reference to the parent context.\n */\n function Context (view, parentContext) {\n this.view = view;\n this.cache = { '.': this.view };\n this.parent = parentContext;\n }\n\n /**\n * Creates a new context using the given view with this context\n * as the parent.\n */\n Context.prototype.push = function push (view) {\n return new Context(view, this);\n };\n\n /**\n * Returns the value of the given name in this context, traversing\n * up the context hierarchy if the value is absent in this context's view.\n */\n Context.prototype.lookup = function lookup (name) {\n var cache = this.cache;\n\n var value;\n if (cache.hasOwnProperty(name)) {\n value = cache[name];\n } else {\n var context = this, names, index, lookupHit = false;\n\n while (context) {\n if (name.indexOf('.') > 0) {\n value = context.view;\n names = name.split('.');\n index = 0;\n\n /**\n * Using the dot notion path in `name`, we descend through the\n * nested objects.\n *\n * To be certain that the lookup has been successful, we have to\n * check if the last object in the path actually has the property\n * we are looking for. We store the result in `lookupHit`.\n *\n * This is specially necessary for when the value has been set to\n * `undefined` and we want to avoid looking up parent contexts.\n **/\n while (value != null && index < names.length) {\n if (index === names.length - 1)\n lookupHit = hasProperty(value, names[index]);\n\n value = value[names[index++]];\n }\n } else {\n value = context.view[name];\n lookupHit = hasProperty(context.view, name);\n }\n\n if (lookupHit)\n break;\n\n context = context.parent;\n }\n\n cache[name] = value;\n }\n\n if (isFunction(value))\n value = value.call(this.view);\n\n return value;\n };\n\n /**\n * A Writer knows how to take a stream of tokens and render them to a\n * string, given a context. It also maintains a cache of templates to\n * avoid the need to parse the same template twice.\n */\n function Writer () {\n this.cache = {};\n }\n\n /**\n * Clears all cached templates in this writer.\n */\n Writer.prototype.clearCache = function clearCache () {\n this.cache = {};\n };\n\n /**\n * Parses and caches the given `template` and returns the array of tokens\n * that is generated from the parse.\n */\n Writer.prototype.parse = function parse (template, tags) {\n var cache = this.cache;\n var tokens = cache[template];\n\n if (tokens == null)\n tokens = cache[template] = parseTemplate(template, tags);\n\n return tokens;\n };\n\n /**\n * High-level method that is used to render the given `template` with\n * the given `view`.\n *\n * The optional `partials` argument may be an object that contains the\n * names and templates of partials that are used in the template. It may\n * also be a function that is used to load partial templates on the fly\n * that takes a single argument: the name of the partial.\n */\n Writer.prototype.render = function render (template, view, partials) {\n var tokens = this.parse(template);\n var context = (view instanceof Context) ? view : new Context(view);\n return this.renderTokens(tokens, context, partials, template);\n };\n\n /**\n * Low-level method that renders the given array of `tokens` using\n * the given `context` and `partials`.\n *\n * Note: The `originalTemplate` is only ever used to extract the portion\n * of the original template that was contained in a higher-order section.\n * If the template doesn't use higher-order sections, this argument may\n * be omitted.\n */\n Writer.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate) {\n var buffer = '';\n\n var token, symbol, value;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n value = undefined;\n token = tokens[i];\n symbol = token[0];\n\n if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate);\n else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate);\n else if (symbol === '>') value = this.renderPartial(token, context, partials, originalTemplate);\n else if (symbol === '&') value = this.unescapedValue(token, context);\n else if (symbol === 'name') value = this.escapedValue(token, context);\n else if (symbol === 'text') value = this.rawValue(token);\n\n if (value !== undefined)\n buffer += value;\n }\n\n return buffer;\n };\n\n Writer.prototype.renderSection = function renderSection (token, context, partials, originalTemplate) {\n var self = this;\n var buffer = '';\n var value = context.lookup(token[1]);\n\n // This function is used to render an arbitrary template\n // in the current context by higher-order sections.\n function subRender (template) {\n return self.render(template, context, partials);\n }\n\n if (!value) return;\n\n if (isArray(value)) {\n for (var j = 0, valueLength = value.length; j < valueLength; ++j) {\n buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate);\n }\n } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {\n buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate);\n } else if (isFunction(value)) {\n if (typeof originalTemplate !== 'string')\n throw new Error('Cannot use higher-order sections without the original template');\n\n // Extract the portion of the original template that the section contains.\n value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);\n\n if (value != null)\n buffer += value;\n } else {\n buffer += this.renderTokens(token[4], context, partials, originalTemplate);\n }\n return buffer;\n };\n\n Writer.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate) {\n var value = context.lookup(token[1]);\n\n // Use JavaScript's definition of falsy. Include empty arrays.\n // See https://github.com/janl/mustache.js/issues/186\n if (!value || (isArray(value) && value.length === 0))\n return this.renderTokens(token[4], context, partials, originalTemplate);\n };\n\n Writer.prototype.renderPartial = function renderPartial (token, context, partials) {\n if (!partials) return;\n\n var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\n if (value != null)\n return this.renderTokens(this.parse(value), context, partials, value);\n };\n\n Writer.prototype.unescapedValue = function unescapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return value;\n };\n\n Writer.prototype.escapedValue = function escapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return mustache.escape(value);\n };\n\n Writer.prototype.rawValue = function rawValue (token) {\n return token[1];\n };\n\n mustache.name = 'mustache.js';\n mustache.version = '2.3.0';\n mustache.tags = [ '{{', '}}' ];\n\n // All high-level mustache.* functions use this writer.\n var defaultWriter = new Writer();\n\n /**\n * Clears all cached templates in the default writer.\n */\n mustache.clearCache = function clearCache () {\n return defaultWriter.clearCache();\n };\n\n /**\n * Parses and caches the given template in the default writer and returns the\n * array of tokens it contains. Doing this ahead of time avoids the need to\n * parse templates on the fly as they are rendered.\n */\n mustache.parse = function parse (template, tags) {\n return defaultWriter.parse(template, tags);\n };\n\n /**\n * Renders the `template` with the given `view` and `partials` using the\n * default writer.\n */\n mustache.render = function render (template, view, partials) {\n if (typeof template !== 'string') {\n throw new TypeError('Invalid template! Template should be a \"string\" ' +\n 'but \"' + typeStr(template) + '\" was given as the first ' +\n 'argument for mustache#render(template, view, partials)');\n }\n\n return defaultWriter.render(template, view, partials);\n };\n\n // This is here for backwards compatibility with 0.4.x.,\n /*eslint-disable */ // eslint wants camel cased function name\n mustache.to_html = function to_html (template, view, partials, send) {\n /*eslint-enable*/\n\n var result = mustache.render(template, view, partials);\n\n if (isFunction(send)) {\n send(result);\n } else {\n return result;\n }\n };\n\n // Export the escaping function so that the user may override it.\n // See https://github.com/janl/mustache.js/issues/244\n mustache.escape = escapeHtml;\n\n // Export these mainly for testing, but also for advanced usage.\n mustache.Scanner = Scanner;\n mustache.Context = Context;\n mustache.Writer = Writer;\n\n return mustache;\n}));\n","import mustache from \"mustache\";\n\nconst html = `\n\n\n`;\n\nconst template = `\n
    \n
    \n {{#authors}}\n
    \n {{#personalURL}}\n {{name}}\n {{/personalURL}}\n {{^personalURL}}\n
    {{name}}
    \n {{/personalURL}}\n {{#affiliation}}\n {{#affiliationURL}}\n {{affiliation}}\n {{/affiliationURL}}\n {{^affiliationURL}}\n
    {{affiliation}}
    \n {{/affiliationURL}}\n {{/affiliation}}\n
    \n {{/authors}}\n
    \n {{#publishedYear}}\n
    \n
    {{publishedMonth}}. {{publishedDay}}
    \n
    {{publishedYear}}
    \n
    \n {{/publishedYear}}\n {{#publishedYear}}\n \n
    Citation:
    \n
    {{concatenatedAuthors}}, {{publishedYear}}
    \n
    \n {{/publishedYear}}\n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-byline');\n if (el) {\n el.innerHTML = html + mustache.render(template, data);\n }\n}\n","const templateHTML = `\n\n\n
    \n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-appendix')\n if (el) {\n let userHTML = el.innerHTML;\n el.innerHTML = templateHTML;\n let newHTML = \"\";\n\n // If we have some footnotes on the page, render a container for the footnote list.\n if (dom.querySelector(\"dt-fn\")) {\n newHTML = newHTML + `

    Footnotes

    `;\n }\n\n // If we have any citations on the page, render a container for the bibliography.\n if (dom.querySelector(\"dt-cite\")) {\n newHTML = newHTML + `

    References

    `;\n }\n\n let div = el.querySelector(\"div.l-body\")\n div.innerHTML = userHTML + newHTML;\n }\n\n}\n","export default function(dom, data) {\n let el = dom.querySelector('dt-appendix > div');\n if (el) {\n let newHTML = \"\";\n\n newHTML += `

    Updates and Corrections

    \n

    View all changes to this article since it was first published. If you see a mistake or want to suggest a change, please create an issue on GitHub.

    `;\n\n newHTML += `

    Citations and Reuse

    \n

    Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on GitHub. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: “Figure from …”.

    \n\n

    For attribution in academic contexts, please cite this work as

    \n
    ${data.concatenatedAuthors}, \"${data.title}\", ${data.journal.title}, ${data.publishedYear}. http://doi.org/${data.doi}
    \n\n

    BibTeX citation

    \n
    @article{${data.slug},\n  author = {${data.bibtexAuthors}},\n  title = {${data.title}},\n  journal = {${data.journal.title}},\n  year = {${data.publishedYear}},\n  url = {${data.url}},\n  doi = {${data.doi}}\n}
    `;\n\n let existingHTML = el.innerHTML;\n el.innerHTML = existingHTML + newHTML;\n }\n}","export default function(dom, data) {\n let css = `\n dt-cite {\n color: hsla(206, 90%, 20%, 0.7);\n }\n dt-cite .citation-number {\n cursor: default;\n white-space: nowrap;\n font-family: -apple-system, BlinkMacSystemFont, \"Roboto\", Helvetica, sans-serif;\n font-size: 75%;\n color: hsla(206, 90%, 20%, 0.7);\n display: inline-block;\n line-height: 1.1em;\n text-align: center;\n position: relative;\n top: -2px;\n margin: 0 2px;\n }\n figcaption dt-cite .citation-number {\n font-size: 11px;\n font-weight: normal;\n top: -2px;\n line-height: 1em;\n }\n `;\n\n let style = dom.createElement(\"style\");\n style.textContent = css;\n dom.querySelector(\"body\").appendChild(style);\n\n let citations = data.citations;\n /*if (data.citations) {\n citations = Object.keys(data.citations).map(c => data.citations[c]);\n citations.sort((a, b) => {\n return a.author.localeCompare(b.author);\n });\n }*/\n \n var appendCiteHoverDiv = (function() {\n function nodeFromString(str) {\n var div = dom.createElement(\"div\");\n div.innerHTML = str;\n return div.firstChild;\n }\n var hover_boxes_container = nodeFromString(`
    `)\n dom.querySelector(\"body\").appendChild(hover_boxes_container);\n var hover_n = 0;\n return function appendHoverDiv(content) {\n var id = `dt-cite-hover-box-${hover_n}`;\n hover_n += 1;\n var str = `
    ${content}
    `;\n var div = nodeFromString(str);\n hover_boxes_container.appendChild(div);\n return id;\n }\n })();\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach((el,n) => {\n var key = el.getAttribute(\"key\");\n if (key) {\n var keys = key.split(\",\");\n var cite_string = inline_cite_short(keys);\n var cite_hover_str = \"\";\n keys.map((key,n) => {\n if (n>0) cite_hover_str += \"

    \";\n cite_hover_str += hover_cite(data.bibliography[key]);\n });\n var ref_id = appendCiteHoverDiv(cite_hover_str);\n //cite_hover_str = cite_hover_str.replace(/\"/g, \"'\")\n var orig_string = el.innerHTML;\n if (orig_string != \"\") orig_string += \" \";\n el.innerHTML = `${orig_string}${cite_string}`;\n }\n });\n\n let bibEl = dom.querySelector(\"dt-bibliography\");\n if (bibEl) {\n let ol = dom.createElement(\"ol\");\n citations.forEach(key => {\n let el = dom.createElement(\"li\");\n el.innerHTML = bibliography_cite(data.bibliography[key]);\n ol.appendChild(el);\n })\n bibEl.appendChild(ol);\n }\n\n function inline_cite_short(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var n = data.citations.indexOf(key)+1;\n return \"\"+n;\n } else {\n return \"?\";\n }\n }\n return \"[\"+keys.map(cite_string).join(\", \")+\"]\";\n }\n\n function inline_cite_long(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var ent = data.bibliography[key];\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var year = ent.year;\n if (names.length == 1) return names[0] + \", \" + year;\n if (names.length == 2) return names[0] + \" & \" + names[1] + \", \" + year;\n if (names.length > 2) return names[0] + \", et al., \" + year;\n } else {\n return \"?\";\n }\n }\n return keys.map(cite_string).join(\", \");\n }\n\n function author_string(ent, template, sep, finalSep){\n var names = ent.author.split(\" and \");\n let name_strings = names.map(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1];\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n var initials = \"\";\n if (firsts != undefined) {\n initials = firsts.trim().split(\" \").map(s => s.trim()[0]);\n initials = initials.join(\".\")+\".\";\n }\n return template.replace(\"${F}\", firsts)\n .replace(\"${L}\", last)\n .replace(\"${I}\", initials);\n });\n if (names.length > 1) {\n var str = name_strings.slice(0, names.length-1).join(sep);\n str += (finalSep || sep) + name_strings[names.length-1];\n return str;\n } else {\n return name_strings[0];\n }\n }\n\n function venue_string(ent) {\n var cite = (ent.journal || ent.booktitle || \"\")\n if (\"volume\" in ent){\n var issue = ent.issue || ent.number;\n issue = (issue != undefined)? \"(\"+issue+\")\" : \"\";\n cite += \", Vol \" + ent.volume + issue;\n }\n if (\"pages\" in ent){\n cite += \", pp. \" + ent.pages\n }\n if (cite != \"\") cite += \". \"\n if (\"publisher\" in ent){\n cite += ent.publisher;\n if (cite[cite.length-1] != \".\") cite += \".\";\n }\n return cite;\n }\n\n function link_string(ent){\n if (\"url\" in ent){\n var url = ent.url;\n var arxiv_match = (/arxiv\\.org\\/abs\\/([0-9\\.]*)/).exec(url);\n if (arxiv_match != null){\n url = `http://arxiv.org/pdf/${arxiv_match[1]}.pdf`;\n }\n\n if (url.slice(-4) == \".pdf\"){\n var label = \"PDF\";\n } else if (url.slice(-5) == \".html\") {\n var label = \"HTML\";\n }\n return `  [${label||\"link\"}]`;\n }/* else if (\"doi\" in ent){\n return `  [DOI]`;\n }*/ else {\n return \"\";\n }\n }\n function doi_string(ent, new_line){\n if (\"doi\" in ent) {\n return `${new_line?\"
    \":\"\"} DOI: ${ent.doi}`;\n } else {\n return \"\";\n }\n }\n\n function bibliography_cite(ent, fancy){\n if (ent){\n var cite = \"\" + ent.title + \" \"\n cite += link_string(ent) + \"
    \";\n cite += author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += venue_string(ent);\n cite += doi_string(ent);\n return cite\n /*var cite = author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += \"\" + ent.title + \". \";\n cite += venue_string(ent);\n cite += doi_string(ent);\n cite += link_string(ent);\n return cite*/\n } else {\n return \"?\";\n }\n }\n\n function hover_cite(ent){\n if (ent){\n var cite = \"\";\n cite += \"\" + ent.title + \"\";\n cite += link_string(ent);\n cite += \"
    \"\n\n var a_str = author_string(ent, \"${I} ${L}\", \", \") + \".\";\n var v_str = venue_string(ent).trim() + \" \" + ent.year + \". \" + doi_string(ent, true);\n\n if ((a_str+v_str).length < Math.min(40, ent.title.length)) {\n cite += a_str + \" \" + v_str;\n } else {\n cite += a_str + \"
    \" + v_str;\n }\n return cite;\n } else {\n return \"?\";\n }\n }\n\n\n //https://scholar.google.com/scholar?q=allintitle%3ADocument+author%3Aolah\n function get_GS_URL(ent){\n if (ent){\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var title = ent.title.split(\" \")//.replace(/[,:]/, \"\")\n var url = \"http://search.labs.crossref.org/dois?\"//\"\"https://scholar.google.com/scholar?\"\n url += uris({q: names.join(\" \") + \" \" + title.join(\" \")})\n }\n\n }\n}\n","export default function(dom, data) {\n\n var appendFootnoteHoverDiv = (function() {\n function nodeFromString(str) {\n var div = dom.createElement(\"div\");\n div.innerHTML = str;\n return div.firstChild;\n }\n var hover_boxes_container = nodeFromString(`
    `)\n dom.querySelector(\"body\").appendChild(hover_boxes_container);\n var hover_n = 0;\n return function appendHoverDiv(content) {\n var id = `dt-fn-hover-box-${hover_n}`;\n hover_n += 1;\n var str = `
    ${content}
    `;\n var div = nodeFromString(str);\n hover_boxes_container.appendChild(div);\n return id;\n }\n })();\n\n\n var fnTags = [].slice.apply(dom.querySelectorAll(\"dt-fn\"));\n var fnContent = [];\n fnTags.forEach((el,n) => {\n var content = el.innerHTML;\n var ref_id = appendFootnoteHoverDiv(content)\n fnContent.push(content);\n n = (n+1)+\"\";\n var key = \"fn-\"+n;\n var escaped_content = content.replace(/\"/g, \"'\");\n el.innerHTML = `${n}`;\n });\n\n let fnList = dom.querySelector(\"dt-fn-list\");\n if (fnList) {\n let ol = dom.createElement(\"ol\");\n fnContent.forEach(content => {\n let el = dom.createElement(\"li\");\n el.innerHTML = content;\n ol.appendChild(el);\n })\n fnList.appendChild(ol);\n }\n\n}\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n */\n\n;(function() {\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^( *[-*_]){3,} *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,\n nptable: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n blockquote: /^( *>[^\\n]+(\\n(?!def)[^\\n]+)*\\n*)+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n table: noop,\n paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,\n text: /^[^\\n]+/\n};\n\nblock.bullet = /(?:[*+-]|\\d+\\.)/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = replace(block.item, 'gm')\n (/bull/g, block.bullet)\n ();\n\nblock.list = replace(block.list)\n (/bull/g, block.bullet)\n ('hr', '\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))')\n ('def', '\\\\n+(?=' + block.def.source + ')')\n ();\n\nblock.blockquote = replace(block.blockquote)\n ('def', block.def)\n ();\n\nblock._tag = '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'\n + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'\n + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|[^\\\\w\\\\s@]*@)\\\\b';\n\nblock.html = replace(block.html)\n ('comment', //)\n ('closed', /<(tag)[\\s\\S]+?<\\/\\1>/)\n ('closing', /])*?>/)\n (/tag/g, block._tag)\n ();\n\nblock.paragraph = replace(block.paragraph)\n ('hr', block.hr)\n ('heading', block.heading)\n ('lheading', block.lheading)\n ('blockquote', block.blockquote)\n ('tag', '<' + block._tag)\n ('def', block.def)\n ();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]*?)\\s*\\1 *(?:\\n+|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = replace(block.paragraph)\n ('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n ();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top, bq) {\n var src = src.replace(/^ +$/gm, '')\n , next\n , loose\n , cap\n , bull\n , b\n , item\n , space\n , i\n , l;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic\n ? cap.replace(/\\n+$/, '')\n : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top, true);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n\n this.tokens.push({\n type: 'list_start',\n ordered: bull.length > 1\n });\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n this.tokens.push({\n type: loose\n ? 'loose_item_start'\n : 'list_item_start'\n });\n\n // Recurse.\n this.token(item, false, bq);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if ((!bq && top) && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.links[cap[1].toLowerCase()] = {\n href: cap[2],\n title: cap[3]\n };\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i]\n .replace(/^ *\\| *| *\\| *$/g, '')\n .split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n autolink: /^<([^ >]+(@|:\\/)[^ >]+)>/,\n url: noop,\n tag: /^|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^\\b_((?:[^_]|__)+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n code: /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n text: /^[\\s\\S]+?(?=[\\\\?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\ninline.link = replace(inline.link)\n ('inside', inline._inside)\n ('href', inline._href)\n ();\n\ninline.reflink = replace(inline.reflink)\n ('inside', inline._inside)\n ();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: replace(inline.escape)('])', '~|])')(),\n url: /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n text: replace(inline.text)\n (']|', '~]|')\n ('|', '|https?://|')\n ()\n});\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: replace(inline.br)('{2,}', '*')(),\n text: replace(inline.gfm.text)('{2,}', '*')()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer;\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new\n Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n var out = ''\n , link\n , text\n , href\n , cap;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += cap[1];\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = cap[1].charAt(6) === ':'\n ? this.mangle(cap[1].substring(7))\n : this.mangle(cap[1]);\n href = this.mangle('mailto:') + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n src = src.substring(cap[0].length);\n text = escape(cap[1]);\n href = text;\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^/i.test(cap[0])) {\n this.inLink = false;\n }\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0]\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out += this.outputLink(cap, {\n href: cap[2],\n title: cap[3]\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2], true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = escape(link.href)\n , title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = ''\n , l = text.length\n , i = 0\n , ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || {};\n}\n\nRenderer.prototype.code = function(code, lang, escaped) {\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '\\n
    ';\n }\n\n return '
    '\n    + (escaped ? code : escape(code, true))\n    + '\\n
    \\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '
    \\n' + quote + '
    \\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw) {\n return ''\n + text\n + '\\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n};\n\nRenderer.prototype.list = function(body, ordered) {\n var type = ordered ? 'ol' : 'ul';\n return '<' + type + '>\\n' + body + '\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '
  • ' + text + '
  • \\n';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '

    ' + text + '

    \\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + '\\n'\n + body\n + '\\n'\n + '
    \\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '\\n' + content + '\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' style=\"text-align:' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.em = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? '
    ' : '
    ';\n};\n\nRenderer.prototype.del = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n if (this.options.sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return '';\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0) {\n return '';\n }\n }\n var out = '
    ';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n var out = '\"'' : '>';\n return out;\n};\n\nRenderer.prototype.text = function(text) {\n return text;\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer;\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options, renderer) {\n var parser = new Parser(options, renderer);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options, this.renderer);\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n this.token.text);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = ''\n , body = ''\n , i\n , row\n , cell\n , flags\n , j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n flags = { header: true, align: this.token.align[i] };\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n var body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n var body = ''\n , ordered = this.token.ordered;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered);\n }\n case 'list_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'loose_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'html': {\n var html = !this.token.pre && !this.options.pedantic\n ? this.inline.output(this.token.text)\n : this.token.text;\n return this.renderer.html(html);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n }\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n return html\n .replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\nfunction unescape(html) {\n\t// explicitly match decimal, hex, and named HTML entities \n return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/g, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction replace(regex, opt) {\n regex = regex.source;\n opt = opt || '';\n return function self(name, val) {\n if (!name) return new RegExp(regex, opt);\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return self;\n };\n}\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1\n , target\n , key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n\n var highlight = opt.highlight\n , tokens\n , pending\n , i = 0;\n\n try {\n tokens = Lexer.lex(src, opt)\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/chjj/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occured:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n sanitizer: null,\n mangle: true,\n smartLists: false,\n silent: false,\n highlight: null,\n langPrefix: 'lang-',\n smartypants: false,\n headerPrefix: '',\n renderer: new Renderer,\n xhtml: false\n};\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.parse = marked;\n\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n this.marked = marked;\n}\n\n}).call(function() {\n return this || (typeof window !== 'undefined' ? window : global);\n}());\n","import marked from 'marked';\n\nmarked.setOptions({\n gfm: true,\n smartypants: true\n});\n\nexport default function(dom, data) {\n let markdownElements = [].slice.call(dom.querySelectorAll('[markdown]'));\n markdownElements.forEach(el => {\n let content = el.innerHTML;\n // Set default indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n\n el.innerHTML = marked(content);\n });\n}\n","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = _self.Prism = {\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/ text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\tbreak tokenloop;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t delNum = 1;\n\n\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t to = match.index + match[0].length,\n\t\t\t\t\t\t k = i,\n\t\t\t\t\t\t p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && p < to; ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t match = match[0].slice(lookbehindLength),\n\t\t\t\t\t to = from + match.length,\n\t\t\t\t\t before = str.slice(0, from),\n\t\t\t\t\t after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (env.type == 'comment') {\n\t\tenv.attributes['spellcheck'] = 'true';\n\t}\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n \t// In worker\n\t_self.addEventListener('message', function(evt) {\n\t\tvar message = JSON.parse(evt.data),\n\t\t lang = message.language,\n\t\t code = message.code,\n\t\t immediateClose = message.immediateClose;\n\n\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\tif (immediateClose) {\n\t\t\t_self.close();\n\t\t}\n\t}, false);\n\n\treturn _self.Prism;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (document.addEventListener && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': //,\n\t'prolog': /<\\?[\\w\\W]+?\\?>/,\n\t'doctype': //i,\n\t'cdata': //i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\w\\W])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:('|\")[\\w\\W]*?(\\1)|[^\\s>]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /[=>\"']/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\w\\W]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^\\{\\}\\s][^\\{\\};]*?(?=\\s*\\{)/,\n\t'string': {\n\t\tpattern: /(\"|')(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'property': /(\\b|\\B)[\\w-]+(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|').*?\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\w\\W]*?\\*\\//,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[a-z0-9_\\.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /(\\.|\\\\)/\n\t\t}\n\t},\n\t'keyword': /\\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(0x[\\dA-Fa-f]+|0b[01]+|0o[0-7]+|\\d*\\.?\\d+([Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*(?=\\()/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*\\*?|\\/|~|\\^|%|\\.{3}/\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[.+?]|\\\\.|[^/\\\\\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\\\\\|\\\\?[^\\\\])*?`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript'\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tif(Array.prototype.forEach) { // Check to prevent error in IE8\n\t\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\t\tvar language, parent = pre;\n\t\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\t\tparent = parent.parentNode;\n\t\t\t\t}\n\n\t\t\t\tif (parent) {\n\t\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t\t}\n\n\t\t\t\tif (!language) {\n\t\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t\t}\n\n\t\t\t\tvar code = document.createElement('code');\n\t\t\t\tcode.className = 'language-' + language;\n\n\t\t\t\tpre.textContent = '';\n\n\t\t\t\tcode.textContent = 'Loading…';\n\n\t\t\t\tpre.appendChild(code);\n\n\t\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\t\txhr.open('GET', src, true);\n\n\t\t\t\txhr.onreadystatechange = function () {\n\t\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\txhr.send(null);\n\t\t\t});\n\t\t}\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\n})();\n","import Prism from \"prismjs\";\n\nexport default function(dom, data) {\n let codeElements = [].slice.call(dom.querySelectorAll(\"dt-code\"));\n codeElements.forEach(el => {\n let content = el.textContent;\n el.innerHTML = \"\";\n let language = el.getAttribute(\"language\");\n let c = dom.createElement(\"code\");\n if (el.getAttribute(\"block\") === \"\") {\n // Let's normalize the tab indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n let p = dom.createElement(\"pre\");\n p.appendChild(c);\n el.appendChild(p);\n } else {\n el.appendChild(c);\n }\n let highlighted = content;\n if (Prism.languages[language]) {\n c.setAttribute(\"class\", \"language-\" + language);\n highlighted = Prism.highlight(content, Prism.languages[language]);\n }\n c.innerHTML = highlighted;\n });\n}\n","export default function(dom, data) {\n\n var textNodes = dom.createTreeWalker(\n dom.body,\n dom.defaultView.NodeFilter.SHOW_TEXT\n );\n while (textNodes.nextNode()) {\n var n = textNodes.currentNode,\n text = n.nodeValue;\n if (text && acceptNode(n)) {\n text = quotes(text);\n text = punctuation(text);\n n.nodeValue = text;\n }\n }\n}\n\nfunction acceptNode(node) {\n var parent = node.parentElement;\n var isMath = (parent && parent.getAttribute && parent.getAttribute(\"class\")) ? parent.getAttribute(\"class\").includes(\"katex\") || parent.getAttribute(\"class\").includes(\"MathJax\") : false;\n return parent &&\n parent.nodeName !== \"SCRIPT\" &&\n parent.nodeName !== \"STYLE\" &&\n parent.nodeName !== \"CODE\" &&\n parent.nodeName !== \"PRE\" &&\n parent.nodeName !== \"SPAN\" &&\n parent.nodeName !== \"DT-HEADER\" &&\n parent.nodeName !== \"DT-BYLINE\" &&\n parent.nodeName !== \"DT-MATH\" &&\n parent.nodeName !== \"DT-CODE\" &&\n parent.nodeName !== \"DT-BIBLIOGRAPHY\" &&\n parent.nodeName !== \"DT-FOOTER\" &&\n parent.nodeType !== 8 && //comment nodes\n !isMath;\n}\n\n\n/*!\n * typeset - Typesetting for the web\n * @version v0.1.6\n * @link https://github.com/davidmerfield/Typeset.js\n * @author David Merfield\n */\n // which has a CC0 license\n // http://creativecommons.org/publicdomain/zero/1.0/\n\n\nfunction punctuation(text){\n\n // Dashes\n text = text.replace(/--/g, '\\u2014');\n text = text.replace(/ \\u2014 /g,\"\\u2009\\u2014\\u2009\"); //this has thin spaces\n\n // The following are temporary commented out because incompatibility\n // with katex\n\n // Elipses\n // text = text.replace(/\\.\\.\\./g,'…');\n\n // Nbsp for punc with spaces\n // var NBSP = \"\\u00a0\";\n // var NBSP_PUNCTUATION_START = /([«¿¡]) /g;\n // var NBSP_PUNCTUATION_END = / ([\\!\\?:;\\.,‽»])/g;\n\n // text = text.replace(NBSP_PUNCTUATION_START, '$1' + NBSP);\n // text = text.replace(NBSP_PUNCTUATION_END, NBSP + '$1');\n\n return text;\n}\n\nfunction quotes(text) {\n\n text = text\n .replace(/(\\W|^)\"([^\\s\\!\\?:;\\.,‽»])/g, '$1\\u201c$2') // beginning \"\n .replace(/(\\u201c[^\"]*)\"([^\"]*$|[^\\u201c\"]*\\u201c)/g, '$1\\u201d$2') // ending \"\n .replace(/([^0-9])\"/g,'$1\\u201d') // remaining \" at end of word\n .replace(/(\\W|^)'(\\S)/g, '$1\\u2018$2') // beginning '\n .replace(/([a-z])'([a-z])/ig, '$1\\u2019$2') // conjunction's possession\n .replace(/((\\u2018[^']*)|[a-z])'([^0-9]|$)/ig, '$1\\u2019$3') // ending '\n .replace(/(\\u2018)([0-9]{2}[^\\u2019]*)(\\u2018([^0-9]|$)|$|\\u2019[a-z])/ig, '\\u2019$2$3') // abbrev. years like '93\n .replace(/(\\B|^)\\u2018(?=([^\\u2019]*\\u2019\\b)*([^\\u2019\\u2018]*\\W[\\u2019\\u2018]\\b|[^\\u2019\\u2018]*$))/ig, '$1\\u2019') // backwards apostrophe\n .replace(/'''/g, '\\u2034') // triple prime\n .replace(/(\"|'')/g, '\\u2033') // double prime\n .replace(/'/g, '\\u2032');\n\n // Allow escaped quotes\n text = text.replace(/\\\\“/, '\\\"');\n text = text.replace(/\\\\”/, '\\\"');\n text = text.replace(/\\\\’/, '\\'');\n text = text.replace(/\\\\‘/, '\\'');\n\n return text;\n}\n\nfunction ligatures(text){\n\n // text = text.replace(/fi/g, 'fi');\n // text = text.replace(/fl/g, 'fl');\n\n return text;\n};\n","import code from './hover-box.txt';\n\nexport default function(dom) {\n let s = dom.createElement(\"script\");\n s.textContent = code;\n dom.querySelector(\"body\").appendChild(s);\n}\n","//import xml from \"xml\";\n\nexport default function(data) {\n\n\n var date = data.publishedDate;\n\n var batch_timestamp = Math.floor(Date.now() / 1000);\n var batch_id = data.authors.length ? data.authors[0].lastName.toLowerCase().slice(0,20) : \"Anonymous\";\n batch_id += \"_\" + date.getFullYear();\n batch_id += \"_\" + data.title.split(\" \")[0].toLowerCase().slice(0,20) + \"_\" + batch_timestamp;\n // generate XML\n var crf_data =\n {doi_batch : [\n\n { _attr: {\n version: \"4.3.7\",\n xmlns: \"http://www.crossref.org/schema/4.3.7\",\n \"xmlns:xsi\": \"http://www.w3.org/2001/XMLSchema-instance\",\n \"xsi:schemaLocation\": \"http://www.crossref.org/schema/4.3.7 http://www.crossref.org/schemas/crossref4.3.7.xsd\",\n }},\n\n { head: [\n {doi_batch_id: batch_id},\n {timestamp: batch_timestamp},\n {depositor: [\n {depositor_name: data.journal.publisherName},\n {email_address: data.journal.publisherEmail},\n ]},\n {registrant: data.journal.publisherName},\n ]},\n\n {body: [\n {journal: [\n\n {journal_metadata: [\n {full_title: data.journal.full_title || data.journal.title},\n {abbrev_title: data.journal.abbrev_title || data.journal.title || data.journal.full_title},\n {issn: data.journal.issn},\n {doi_data: [\n {doi: data.journal.doi},\n {resource: data.journal.url},\n ]},\n ]},\n\n {journal_issue: [\n {publication_date: [\n {month: date.getMonth()+1},\n {year: date.getFullYear()},\n ]},\n {journal_volume: [\n {volume: data.volume},\n ]},\n {issue: data.issue},\n ]},\n\n {journal_article: [\n {titles: [\n {title: data.title},\n ]},\n { contributors:\n data.authors.map((author, ind) => (\n {person_name: [\n { _attr: {\n contributor_role: \"author\",\n sequence: (ind == 0)? \"first\" : \"additional\"\n }},\n {given_name: author.firstName},\n {surname: author.lastName},\n {affiliation: author.affiliation}\n // TODO: ORCID?\n ]}\n ))\n },\n {publication_date: [\n {month: date.getMonth()+1},\n {day: date.getDate()},\n {year: date.getFullYear()}\n ]},\n { publisher_item: [\n {item_number: data.doi}\n ]},\n {doi_data: [\n {doi: data.doi},\n //{timestamp: \"\"},\n {resource: data.url},\n ]},\n {citation_list:\n data.citations.map(key =>\n citation_xml(key, data.bibliography[key]))\n }\n\n ]},\n\n ]},\n ]},\n ]};\n\n return xml(crf_data);\n}\n\nfunction citation_xml(key, ent){\n if (ent == undefined) return {};\n var info = [];\n info.push({_attr: {key: key}});\n if (\"title\" in ent)\n info.push({article_title: ent.title});\n if (\"author\" in ent)\n info.push({author: ent.author.split(\" and \")[0].split(\",\")[0].trim()});\n if (\"journal\" in ent)\n info.push({journal_title: ent.journal});\n if (\"booktitle\" in ent)\n info.push({volume_title: ent.booktitle});\n if (\"volume\" in ent)\n info.push({volume: ent.volume});\n if (\"issue\" in ent)\n info.push({issue: ent.issue});\n if (\"doi\" in ent)\n info.push({doi: ent.doi});\n return {citation: info}\n}\n\nfunction xml(obj) {\n //console.log(typeof(obj), obj)\n if (typeof obj === 'string') return obj;\n if (typeof obj === 'number') return \"\"+obj;\n let keys = Object.keys(obj);\n if (keys.length != 1) console.error(\"can't interpret \", obj, \"as xml\");\n let name = keys[0];\n var full_content = obj[name];\n var attr = {};\n if (Array.isArray(full_content)){\n var content = [];\n for (var i in full_content) {\n var obj = full_content[i];\n var obj_name = Object.keys(obj)[0];\n if (\"_attr\" == obj_name) {\n attr = obj[\"_attr\"];\n } else {\n //console.log(Object.keys(obj)[0])\n content.push(obj);\n }\n }\n } else {\n content = full_content;\n }\n if (content == undefined){\n content = \"undefined\"\n }\n\n let attr_string = \"\";\n for (var k in attr) {\n attr_string += ` ${k}=\\\"${attr[k]}\\\"`\n }\n\n //console.log(typeof content, Array.isArray(content), content instanceof String, content)\n if (Array.isArray(content)){\n content = content.map(xml);\n content = content.join(\"\\n\").split(\"\\n\");\n content = content.map(s => \" \" + s).join(\"\\n\")\n var result = `<${name}${attr_string}>\\n${content}\\n`;\n } else {\n content = xml(content);\n var result = `<${name}${attr_string}>${content}`;\n }\n return result;\n}\n","import logo from \"./distill-logo.svg\";\n\nconst html = `\n\n\n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-header\");\n if(el) {\n el.innerHTML = html;\n } else {\n let header = dom.createElement(\"dt-header\");\n header.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(header, b.firstChild);\n }\n}\n","import logo from \"./distill-logo.svg\";\n\nlet html = `\n\n\n
    \n
    \n \n ${logo}\n Distill\n \n is dedicated to clear explanations of machine learning\n
    \n
    \n About\n Submit\n Prize\n RSS\n Twitter\n
    \n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-footer\");\n if(el) {\n el.innerHTML = html;\n } else {\n let footer = dom.createElement(\"dt-footer\");\n footer.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.appendChild(footer);\n }\n}\n","import html from \"./components/html\";\nimport styles from \"./components/styles\";\nimport frontMatter from \"./components/front-matter\";\nimport bibliography from \"./components/bibliography\";\nimport expandData from \"./components/data\";\nimport meta from \"./components/meta\";\nimport banner from \"./components/banner\";\nimport byline from \"./components/byline\";\nimport appendix from \"./components/appendix\";\nimport appendixDistill from \"./components/appendix-distill\";\nimport citation from \"./components/citation\";\nimport footnote from \"./components/footnote\";\nimport markdown from \"./components/markdown\";\nimport code from \"./components/code\";\nimport typeset from \"./components/typeset\";\nimport hoverBox from \"./components/hover-box-include\";\nimport generateCrossref from \"./components/generate-crossref\";\nimport header from \"./components/header\";\nimport footer from \"./components/footer\";\n\nfunction renderImmediately(dom) {\n html(dom);\n styles(dom);\n}\n\nfunction renderOnLoad(dom, data) {\n frontMatter(dom, data);\n bibliography(dom, data);\n expandData(dom, data);\n meta(dom, data);\n byline(dom, data);\n appendix(dom, data);\n markdown(dom, data);\n code(dom, data);\n citation(dom, data);\n footnote(dom, data);\n typeset(dom, data);\n hoverBox(dom, data);\n}\n\n// If we are in a browser, render automatically...\nif(window && window.document) {\n let data = {};\n renderImmediately(window.document);\n window.document.addEventListener(\"DOMContentLoaded\", (event) => {\n renderOnLoad(window.document, data);\n // Add a banner if we're not on localhost.\n if (window.location.hostname !== \"localhost\" && window.location.origin !== \"file://\") {\n banner(window.document, data);\n }\n generateCrossref(data);\n // console.log(data);\n });\n}\n\n// If we are in node...\nfunction render(dom, data) {\n renderImmediately(dom);\n renderOnLoad(dom, data);\n // Remove script tag so it doesn't run again in the client\n let s = dom.querySelector('script[src*=\"distill.pub/template\"]');\n if (s) { s.parentElement.removeChild(s); };\n}\n\n// Distill specific rendering\nfunction distillify(dom, data) {\n header(dom, data);\n appendixDistill(dom, data);\n footer(dom, data);\n}\n\nexport {render as render};\nexport {distillify as distillify};\nexport {generateCrossref as generateCrossref};\n"],"names":["let","meta","YAMLException","common","require$$0","Mark","this","Type","require$$1","require$$2","type","arguments","Schema","require$$3","require$$4","require$$5","require","_hasOwnProperty","_toString","require$$6","require$$7","_require","DEFAULT_SAFE_SCHEMA","DEFAULT_FULL_SCHEMA","loadAll","load","safeLoadAll","safeLoad","State","dump","safeDump","require$$8","require$$9","ymlParse","interval","day","timeDay","timeYear","timeSunday","timeMonday","locale","escape","const","html","define","global","Prism","code","render"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":null,"sources":["../components/html.js","../components/styles.js","../node_modules/js-yaml/lib/js-yaml/common.js","../node_modules/js-yaml/lib/js-yaml/exception.js","../node_modules/js-yaml/lib/js-yaml/mark.js","../node_modules/js-yaml/lib/js-yaml/type.js","../node_modules/js-yaml/lib/js-yaml/schema.js","../node_modules/js-yaml/lib/js-yaml/type/str.js","../node_modules/js-yaml/lib/js-yaml/type/seq.js","../node_modules/js-yaml/lib/js-yaml/type/map.js","../node_modules/js-yaml/lib/js-yaml/schema/failsafe.js","../node_modules/js-yaml/lib/js-yaml/type/null.js","../node_modules/js-yaml/lib/js-yaml/type/bool.js","../node_modules/js-yaml/lib/js-yaml/type/int.js","../node_modules/js-yaml/lib/js-yaml/type/float.js","../node_modules/js-yaml/lib/js-yaml/schema/json.js","../node_modules/js-yaml/lib/js-yaml/schema/core.js","../node_modules/js-yaml/lib/js-yaml/type/timestamp.js","../node_modules/js-yaml/lib/js-yaml/type/merge.js","../node_modules/js-yaml/lib/js-yaml/type/binary.js","../node_modules/js-yaml/lib/js-yaml/type/omap.js","../node_modules/js-yaml/lib/js-yaml/type/pairs.js","../node_modules/js-yaml/lib/js-yaml/type/set.js","../node_modules/js-yaml/lib/js-yaml/schema/default_safe.js","../node_modules/js-yaml/lib/js-yaml/type/js/undefined.js","../node_modules/js-yaml/lib/js-yaml/type/js/regexp.js","../node_modules/js-yaml/lib/js-yaml/type/js/function.js","../node_modules/js-yaml/lib/js-yaml/schema/default_full.js","../node_modules/js-yaml/lib/js-yaml/loader.js","../node_modules/js-yaml/lib/js-yaml/dumper.js","../node_modules/js-yaml/lib/js-yaml.js","../node_modules/js-yaml/index.js","../components/front-matter.js","../node_modules/bibtex-parse-js/bibtexParse.js","../components/bibliography.js","../node_modules/d3-time/src/interval.js","../node_modules/d3-time/src/millisecond.js","../node_modules/d3-time/src/duration.js","../node_modules/d3-time/src/second.js","../node_modules/d3-time/src/minute.js","../node_modules/d3-time/src/hour.js","../node_modules/d3-time/src/day.js","../node_modules/d3-time/src/week.js","../node_modules/d3-time/src/month.js","../node_modules/d3-time/src/year.js","../node_modules/d3-time/src/utcMinute.js","../node_modules/d3-time/src/utcHour.js","../node_modules/d3-time/src/utcDay.js","../node_modules/d3-time/src/utcWeek.js","../node_modules/d3-time/src/utcMonth.js","../node_modules/d3-time/src/utcYear.js","../node_modules/d3-time-format/src/locale.js","../node_modules/d3-time-format/src/defaultLocale.js","../node_modules/d3-time-format/src/isoFormat.js","../node_modules/d3-time-format/src/isoParse.js","../components/data.js","../../node_modules/escape-html/index.js","../components/meta.js","../components/banner.js","../node_modules/mustache/mustache.js","../components/byline.js","../components/appendix.js","../components/appendix-distill.js","../components/citation.js","../components/footnote.js","../node_modules/katex/src/ParseError.js","../node_modules/katex/src/Settings.js","../node_modules/katex/src/unicodeRegexes.js","../node_modules/katex/src/fontMetricsData.js","../node_modules/katex/src/fontMetrics.js","../node_modules/katex/src/Style.js","../node_modules/katex/src/utils.js","../node_modules/katex/src/domTree.js","../node_modules/katex/src/symbols.js","../node_modules/katex/src/buildCommon.js","../node_modules/katex/src/delimiter.js","../node_modules/katex/src/buildHTML.js","../node_modules/katex/src/mathMLTree.js","../node_modules/katex/src/buildMathML.js","../node_modules/katex/src/Options.js","../node_modules/katex/src/buildTree.js","../node_modules/katex/src/parseData.js","../node_modules/katex/src/functions.js","../node_modules/katex/src/environments.js","../node_modules/match-at/lib/matchAt.js","../node_modules/katex/src/Lexer.js","../node_modules/katex/src/MacroExpander.js","../node_modules/katex/src/Parser.js","../node_modules/katex/src/parseTree.js","../node_modules/katex/katex.js","../components/dt-math.js","../node_modules/marked/lib/marked.js","../components/markdown.js","../node_modules/prismjs/prism.js","../components/code.js","../components/typeset.js","../components/hover-box-include.js","../components/generate-crossref.js","../components/header.js","../components/footer.js","../index.js"],"sourcesContent":["export default function(dom) {\n if (!dom.querySelector(\"html\").getAttribute(\"lang\")) {\n dom.querySelector(\"html\").setAttribute(\"lang\", \"en\")\n }\n\n let head = dom.querySelector(\"head\");\n\n if (!dom.querySelector(\"meta[charset]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"charset\", \"utf-8\");\n head.appendChild(meta);\n }\n if (!dom.querySelector(\"meta[name=viewport]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"name\", \"viewport\");\n meta.setAttribute(\"content\", \"width=device-width, initial-scale=1\");\n head.appendChild(meta);\n }\n}\n","import base from './styles-base.css';\nimport layout from './styles-layout.css';\nimport article from './styles-article.css';\nimport code from './styles-code.css';\nimport print from './styles-print.css';\n\nexport default function(dom) {\n let s = dom.createElement(\"style\");\n s.textContent = base + layout + article + code + print;\n dom.querySelector(\"head\").appendChild(s);\n}\n","'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n var result = this.name + ': ';\n\n result += this.reason || '(unknown reason)';\n\n if (!compact && this.mark) {\n result += ' ' + this.mark.toString();\n }\n\n return result;\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n\nvar common = require('./common');\n\n\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\n\n\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head, start, tail, end, snippet;\n\n if (!this.buffer) return null;\n\n indent = indent || 4;\n maxLength = maxLength || 75;\n\n head = '';\n start = this.position;\n\n while (start > 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n\n tail = '';\n end = this.position;\n\n while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n\n snippet = this.buffer.slice(start, end);\n\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' +\n common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\n\nMark.prototype.toString = function toString(compact) {\n var snippet, where = '';\n\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n if (!compact) {\n snippet = this.getSnippet();\n\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n\n return where;\n};\n\n\nmodule.exports = Mark;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name, result) {\n var exclude = [];\n\n schema.include.forEach(function (includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n\n schema[name].forEach(function (currentType) {\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n exclude.push(previousIndex);\n }\n });\n\n result.push(currentType);\n });\n\n return result.filter(function (type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {}\n }, index, length;\n\n function collectType(type) {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n\n this.implicit.forEach(function (type) {\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n });\n\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\n\nSchema.DEFAULT = null;\n\n\nSchema.create = function createSchema() {\n var schemas, types;\n\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n\n if (!schemas.every(function (schema) { return schema instanceof Schema; })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n\n if (!types.every(function (type) { return type instanceof Type; })) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n return new Schema({\n include: schemas,\n explicit: types\n });\n};\n\n\nmodule.exports = Schema;\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 8\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 10 (except 0) or base 60\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch === ':') break;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n if (!hasDigits) return false;\n\n // if !base60 - done;\n if (ch !== ':') return true;\n\n // base60 almost not used, no needs to optimize\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch, base, digits = [];\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value, 16);\n return sign * parseInt(value, 8);\n }\n\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseInt(v, 10));\n });\n\n value = 0;\n base = 1;\n\n digits.forEach(function (d) {\n value += (d * base);\n base *= 60;\n });\n\n return sign * value;\n\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (object) { return '0b' + object.toString(2); },\n octal: function (object) { return '0' + object.toString(8); },\n decimal: function (object) { return object.toString(10); },\n hexadecimal: function (object) { return '0x' + object.toString(16).toUpperCase(); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n '^(?:[-+]?(?:[0-9][0-9_]*)\\\\.[0-9_]*(?:[eE][-+][0-9]+)?' +\n '|\\\\.[0-9_]+(?:[eE][-+][0-9]+)?' +\n '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' +\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data)) return false;\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign, base, digits;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n\n } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n\n value = 0.0;\n base = 1;\n\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n\n return sign * value;\n\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./failsafe')\n ],\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./json')\n ]\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\nvar NodeBuffer;\n\ntry {\n // A trick for browserified version, to not include `Buffer` shim\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n // Wrap into Buffer for NodeJS and leave Array for browser\n if (NodeBuffer) return new NodeBuffer(result);\n\n return result;\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./core')\n ],\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n return true;\n}\n\nfunction constructJavascriptUndefined() {\n /*eslint-disable no-undefined*/\n return undefined;\n}\n\nfunction representJavascriptUndefined() {\n return '';\n}\n\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n if (data === null) return false;\n if (data.length === 0) return false;\n\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // if regexp starts with '/' it can have modifiers and must be properly closed\n // `/foo/gim` - modifiers tail can be maximum 3 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n\n if (modifiers.length > 3) return false;\n // if expression starts with /, is should be properly terminated\n if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n }\n\n return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // `/foo/gim` - tail can be maximum 4 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n\n return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object /*, style*/) {\n var result = '/' + object.source + '/';\n\n if (object.global) result += 'g';\n if (object.multiline) result += 'm';\n if (object.ignoreCase) result += 'i';\n\n return result;\n}\n\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n","'use strict';\n\nvar esprima;\n\n// Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n// If not found - try to fallback to window.esprima. If not\n// found too - then fail to parse.\n//\ntry {\n // workaround to exclude package from browserify list.\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n /*global window */\n if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n if (data === null) return false;\n\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true });\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction constructJavascriptFunction(data) {\n /*jslint evil:true*/\n\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true }),\n params = [],\n body;\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n throw new Error('Failed to resolve function');\n }\n\n ast.body[0].expression.params.forEach(function (param) {\n params.push(param.name);\n });\n\n body = ast.body[0].expression.body.range;\n\n // Esprima's ranges include the first '{' and the last '}' characters on\n // function expressions. So cut them out.\n /*eslint-disable no-new-func*/\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n}\n\nfunction representJavascriptFunction(object /*, style*/) {\n return object.toString();\n}\n\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n","// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [\n require('./default_safe')\n ],\n explicit: [\n require('../type/js/undefined'),\n require('../type/js/regexp'),\n require('../type/js/function')\n ]\n});\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00);\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n return new YAMLException(\n message,\n new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length;\n _position < _length;\n _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode) {\n var index, quantity;\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n throwError(state, 'duplicated mapping key');\n }\n _result[keyNode] = valueNode;\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else {\n break; // Reading is done. Go to the epilogue.\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if (state.lineIndent > nodeIndent && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!state.anchorMap.hasOwnProperty(alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag !== null && state.tag !== '!') {\n if (state.tag === '?') {\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length;\n typeIndex < typeQuantity;\n typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only assigned to plain scalars. So, it isn't\n // needed to check for 'kind' conformity.\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = {};\n state.anchorMap = {};\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n var documents = loadDocuments(input, options), index, length;\n\n for (index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nfunction safeLoadAll(input, output, options) {\n loadAll(input, output, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nfunction safeLoad(input, options) {\n return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// Simplified test for values allowed after the first character in plain style.\nfunction isPlainSafe(c) {\n // Uses a subset of nb-char - c-flow-indicator - \":\" - \"#\"\n // where nb-char ::= c-printable - b-char - c-byte-order-mark.\n return isPrintable(c) && c !== 0xFEFF\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // - \":\" - \"#\"\n && c !== CHAR_COLON\n && c !== CHAR_SHARP;\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n return isPrintable(c) && c !== 0xFEFF\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {\n var i;\n var char;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(string.charCodeAt(0))\n && !isWhitespace(string.charCodeAt(string.length - 1));\n\n if (singleLineOnly) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n return plain && !testAmbiguousType(string)\n ? STYLE_PLAIN : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (string[0] === ' ' && indentPerLevel > 9) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey) {\n state.dump = (function () {\n if (string.length === 0) {\n return \"''\";\n }\n if (!state.noCompatMode &&\n DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n return \"'\" + string + \"'\";\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = (string[0] === ' ') ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char;\n var escapeSeq;\n\n for (var i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n result += !escapeSeq && isPrintable(char)\n ? string[i]\n : escapeSeq || encodeHex(char);\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level, object[index], false, false)) {\n if (index !== 0) _result += ', ';\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || index !== 0) {\n _result += generateNextLine(state, level);\n }\n _result += '- ' + state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (index !== 0) pairBuffer += ', ';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + ': ';\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || index !== 0) {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n state.tag = explicit ? type.tag : '?';\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n writeBlockSequence(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey);\n }\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n state.dump = '!<' + state.tag + '> ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n if (writeNode(state, 0, input, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nfunction safeDump(input, options) {\n return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n","'use strict';\n\n\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\n\n\nfunction deprecated(name) {\n return function () {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\n\n\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\n\n// Deprecated schema names from JS-YAML 2.0.x\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\n\n// Deprecated functions from JS-YAML 1.x.x\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","'use strict';\n\n\nvar yaml = require('./lib/js-yaml.js');\n\n\nmodule.exports = yaml;\n","import ymlParse from \"js-yaml\";\n\nexport default function(dom, data) {\n let localData = {};\n let el = dom.querySelector('script[type=\"text/front-matter\"]');\n if (el) {\n let text = el.textContent;\n localData = ymlParse.safeLoad(text);\n }\n\n data.title = localData.title ? localData.title : \"Untitled\";\n data.description = localData.description ? localData.description : \"No description.\";\n\n data.authors = localData.authors ? localData.authors : [];\n\n data.authors = data.authors.map((author, i) =>{\n let a = {};\n let name = Object.keys(author)[0];\n if ((typeof author) === \"string\") {\n name = author;\n } else {\n a.personalURL = author[name];\n }\n let names = name.split(\" \");\n a.name = name;\n a.firstName = names.slice(0, names.length - 1).join(\" \");\n a.lastName = names[names.length -1];\n if(localData.affiliations[i]) {\n let affiliation = Object.keys(localData.affiliations[i])[0];\n if ((typeof localData.affiliations[i]) === \"string\") {\n affiliation = localData.affiliations[i]\n } else {\n a.affiliationURL = localData.affiliations[i][affiliation];\n }\n a.affiliation = affiliation;\n }\n return a;\n });\n \n\n}\n","/* start bibtexParse 0.0.22 */\n\n//Original work by Henrik Muehe (c) 2010\n//\n//CommonJS port by Mikola Lysenko 2013\n//\n//Port to Browser lib by ORCID / RCPETERS\n//\n//Issues:\n//no comment handling within strings\n//no string concatenation\n//no variable values yet\n//Grammar implemented here:\n//bibtex -> (string | preamble | comment | entry)*;\n//string -> '@STRING' '{' key_equals_value '}';\n//preamble -> '@PREAMBLE' '{' value '}';\n//comment -> '@COMMENT' '{' value '}';\n//entry -> '@' key '{' key ',' key_value_list '}';\n//key_value_list -> key_equals_value (',' key_equals_value)*;\n//key_equals_value -> key '=' value;\n//value -> value_quotes | value_braces | key;\n//value_quotes -> '\"' .*? '\"'; // not quite\n//value_braces -> '{' .*? '\"'; // not quite\n(function(exports) {\n\n function BibtexParser() {\n \n this.months = [\"jan\", \"feb\", \"mar\", \"apr\", \"may\", \"jun\", \"jul\", \"aug\", \"sep\", \"oct\", \"nov\", \"dec\"];\n this.notKey = [',','{','}',' ','='];\n this.pos = 0;\n this.input = \"\";\n this.entries = new Array();\n\n this.currentEntry = \"\";\n\n this.setInput = function(t) {\n this.input = t;\n };\n\n this.getEntries = function() {\n return this.entries;\n };\n\n this.isWhitespace = function(s) {\n return (s == ' ' || s == '\\r' || s == '\\t' || s == '\\n');\n };\n\n this.match = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n this.pos += s.length;\n } else {\n throw \"Token mismatch, expected \" + s + \", found \"\n + this.input.substring(this.pos);\n };\n this.skipWhitespace(canCommentOut);\n };\n\n this.tryMatch = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n return true;\n } else {\n return false;\n };\n this.skipWhitespace(canCommentOut);\n };\n\n /* when search for a match all text can be ignored, not just white space */\n this.matchAt = function() {\n while (this.input.length > this.pos && this.input[this.pos] != '@') {\n this.pos++;\n };\n\n if (this.input[this.pos] == '@') {\n return true;\n };\n return false;\n };\n\n this.skipWhitespace = function(canCommentOut) {\n while (this.isWhitespace(this.input[this.pos])) {\n this.pos++;\n };\n if (this.input[this.pos] == \"%\" && canCommentOut == true) {\n while (this.input[this.pos] != \"\\n\") {\n this.pos++;\n };\n this.skipWhitespace(canCommentOut);\n };\n };\n\n this.value_braces = function() {\n var bracecount = 0;\n this.match(\"{\", false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '}') {\n if (bracecount > 0) {\n bracecount--;\n } else {\n var end = this.pos;\n this.match(\"}\", false);\n return this.input.substring(start, end);\n };\n } else if (this.input[this.pos] == '{') {\n bracecount++;\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value\";\n };\n };\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.value_comment = function() {\n var str = '';\n var brcktCnt = 0;\n while (!(this.tryMatch(\"}\", false) && brcktCnt == 0)) {\n str = str + this.input[this.pos];\n if (this.input[this.pos] == '{')\n brcktCnt++;\n if (this.input[this.pos] == '}')\n brcktCnt--;\n if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n this.pos++;\n };\n return str;\n };\n\n this.value_quotes = function() {\n this.match('\"', false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '\"') {\n var end = this.pos;\n this.match('\"', false);\n return this.input.substring(start, end);\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n }\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.single_value = function() {\n var start = this.pos;\n if (this.tryMatch(\"{\")) {\n return this.value_braces();\n } else if (this.tryMatch('\"')) {\n return this.value_quotes();\n } else {\n var k = this.key();\n if (k.match(\"^[0-9]+$\"))\n return k;\n else if (this.months.indexOf(k.toLowerCase()) >= 0)\n return k.toLowerCase();\n else\n throw \"Value expected:\" + this.input.substring(start) + ' for key: ' + k;\n \n };\n };\n\n this.value = function() {\n var values = [];\n values.push(this.single_value());\n while (this.tryMatch(\"#\")) {\n this.match(\"#\");\n values.push(this.single_value());\n };\n return values.join(\"\");\n };\n\n this.key = function() {\n var start = this.pos;\n while (true) {\n if (this.pos >= this.input.length) {\n throw \"Runaway key\";\n };\n // а-яА-Я is Cyrillic\n //console.log(this.input[this.pos]);\n if (this.notKey.indexOf(this.input[this.pos]) >= 0) {\n return this.input.substring(start, this.pos);\n } else {\n this.pos++;\n \n };\n };\n };\n\n this.key_equals_value = function() {\n var key = this.key();\n if (this.tryMatch(\"=\")) {\n this.match(\"=\");\n var val = this.value();\n return [ key, val ];\n } else {\n throw \"... = value expected, equals sign missing:\"\n + this.input.substring(this.pos);\n };\n };\n\n this.key_value_list = function() {\n var kv = this.key_equals_value();\n this.currentEntry['entryTags'] = {};\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n while (this.tryMatch(\",\")) {\n this.match(\",\");\n // fixes problems with commas at the end of a list\n if (this.tryMatch(\"}\")) {\n break;\n }\n ;\n kv = this.key_equals_value();\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n };\n };\n\n this.entry_body = function(d) {\n this.currentEntry = {};\n this.currentEntry['citationKey'] = this.key();\n this.currentEntry['entryType'] = d.substring(1);\n this.match(\",\");\n this.key_value_list();\n this.entries.push(this.currentEntry);\n };\n\n this.directive = function() {\n this.match(\"@\");\n return \"@\" + this.key();\n };\n\n this.preamble = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'PREAMBLE';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.comment = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'COMMENT';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.entry = function(d) {\n this.entry_body(d);\n };\n\n this.bibtex = function() {\n while (this.matchAt()) {\n var d = this.directive();\n this.match(\"{\");\n if (d == \"@STRING\") {\n this.string();\n } else if (d == \"@PREAMBLE\") {\n this.preamble();\n } else if (d == \"@COMMENT\") {\n this.comment();\n } else {\n this.entry(d);\n }\n this.match(\"}\");\n };\n };\n };\n \n exports.toJSON = function(bibtex) {\n var b = new BibtexParser();\n b.setInput(bibtex);\n b.bibtex();\n return b.entries;\n };\n\n /* added during hackathon don't hate on me */\n exports.toBibtex = function(json) {\n var out = '';\n for ( var i in json) {\n out += \"@\" + json[i].entryType;\n out += '{';\n if (json[i].citationKey)\n out += json[i].citationKey + ', ';\n if (json[i].entry)\n out += json[i].entry ;\n if (json[i].entryTags) {\n var tags = '';\n for (var jdx in json[i].entryTags) {\n if (tags.length != 0)\n tags += ', ';\n tags += jdx + '= {' + json[i].entryTags[jdx] + '}';\n }\n out += tags;\n }\n out += '}\\n\\n';\n }\n return out;\n \n };\n\n})(typeof exports === 'undefined' ? this['bibtexParse'] = {} : exports);\n\n/* end bibtexParse */\n","import bibtexParse from \"bibtex-parse-js\";\n\nexport default function(dom, data) {\n let el = dom.querySelector('script[type=\"text/bibliography\"]');\n let bibliography = {};\n //TODO If we don't have a local element, make a request for the document.\n if (el) {\n let rawBib = el.textContent;\n let parsed = bibtexParse.toJSON(rawBib);\n if(parsed) {\n parsed.forEach(e => {\n for (var k in e.entryTags){\n var val = e.entryTags[k];\n val = val.replace(/[\\t\\n ]+/g, \" \");\n val = val.replace(/{\\\\[\"^`\\.'acu~Hvs]( )?([a-zA-Z])}/g,\n (full, x, char) => char);\n val = val.replace(/{\\\\([a-zA-Z])}/g,\n (full, char) => char);\n e.entryTags[k.toLowerCase()] = val;\n }\n bibliography[e.citationKey] = e.entryTags;\n bibliography[e.citationKey].type = e.entryType;\n });\n }\n }\n data.bibliography = bibliography;\n}\n","var t0 = new Date,\n t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n function interval(date) {\n return floori(date = new Date(+date)), date;\n }\n\n interval.floor = interval;\n\n interval.ceil = function(date) {\n return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n };\n\n interval.round = function(date) {\n var d0 = interval(date),\n d1 = interval.ceil(date);\n return date - d0 < d1 - date ? d0 : d1;\n };\n\n interval.offset = function(date, step) {\n return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n };\n\n interval.range = function(start, stop, step) {\n var range = [];\n start = interval.ceil(start);\n step = step == null ? 1 : Math.floor(step);\n if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n do range.push(new Date(+start)); while (offseti(start, step), floori(start), start < stop)\n return range;\n };\n\n interval.filter = function(test) {\n return newInterval(function(date) {\n if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n }, function(date, step) {\n if (date >= date) while (--step >= 0) while (offseti(date, 1), !test(date)) {} // eslint-disable-line no-empty\n });\n };\n\n if (count) {\n interval.count = function(start, end) {\n t0.setTime(+start), t1.setTime(+end);\n floori(t0), floori(t1);\n return Math.floor(count(t0, t1));\n };\n\n interval.every = function(step) {\n step = Math.floor(step);\n return !isFinite(step) || !(step > 0) ? null\n : !(step > 1) ? interval\n : interval.filter(field\n ? function(d) { return field(d) % step === 0; }\n : function(d) { return interval.count(0, d) % step === 0; });\n };\n }\n\n return interval;\n}\n","import interval from \"./interval\";\n\nvar millisecond = interval(function() {\n // noop\n}, function(date, step) {\n date.setTime(+date + step);\n}, function(start, end) {\n return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n k = Math.floor(k);\n if (!isFinite(k) || !(k > 0)) return null;\n if (!(k > 1)) return millisecond;\n return interval(function(date) {\n date.setTime(Math.floor(date / k) * k);\n }, function(date, step) {\n date.setTime(+date + step * k);\n }, function(start, end) {\n return (end - start) / k;\n });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n","import interval from \"./interval\";\nimport {durationSecond} from \"./duration\";\n\nvar second = interval(function(date) {\n date.setTime(Math.floor(date / durationSecond) * durationSecond);\n}, function(date, step) {\n date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n return (end - start) / durationSecond;\n}, function(date) {\n return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar minute = interval(function(date) {\n date.setTime(Math.floor(date / durationMinute) * durationMinute);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n","import interval from \"./interval\";\nimport {durationHour, durationMinute} from \"./duration\";\n\nvar hour = interval(function(date) {\n var offset = date.getTimezoneOffset() * durationMinute % durationHour;\n if (offset < 0) offset += durationHour;\n date.setTime(Math.floor((+date - offset) / durationHour) * durationHour + offset);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n","import interval from \"./interval\";\nimport {durationDay, durationMinute} from \"./duration\";\n\nvar day = interval(function(date) {\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setDate(date.getDate() + step);\n}, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n","import interval from \"./interval\";\nimport {durationMinute, durationWeek} from \"./duration\";\n\nfunction weekday(i) {\n return interval(function(date) {\n date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setDate(date.getDate() + step * 7);\n }, function(start, end) {\n return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n","import interval from \"./interval\";\n\nvar month = interval(function(date) {\n date.setDate(1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n","import interval from \"./interval\";\n\nvar year = interval(function(date) {\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n return end.getFullYear() - start.getFullYear();\n}, function(date) {\n return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n date.setMonth(0, 1);\n date.setHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setFullYear(date.getFullYear() + step * k);\n });\n};\n\nexport default year;\nexport var years = year.range;\n","import interval from \"./interval\";\nimport {durationMinute} from \"./duration\";\n\nvar utcMinute = interval(function(date) {\n date.setUTCSeconds(0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n return (end - start) / durationMinute;\n}, function(date) {\n return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n","import interval from \"./interval\";\nimport {durationHour} from \"./duration\";\n\nvar utcHour = interval(function(date) {\n date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n date.setTime(+date + step * durationHour);\n}, function(start, end) {\n return (end - start) / durationHour;\n}, function(date) {\n return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n","import interval from \"./interval\";\nimport {durationDay} from \"./duration\";\n\nvar utcDay = interval(function(date) {\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n return (end - start) / durationDay;\n}, function(date) {\n return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n","import interval from \"./interval\";\nimport {durationWeek} from \"./duration\";\n\nfunction utcWeekday(i) {\n return interval(function(date) {\n date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCDate(date.getUTCDate() + step * 7);\n }, function(start, end) {\n return (end - start) / durationWeek;\n });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n","import interval from \"./interval\";\n\nvar utcMonth = interval(function(date) {\n date.setUTCDate(1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n","import interval from \"./interval\";\n\nvar utcYear = interval(function(date) {\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n }, function(date, step) {\n date.setUTCFullYear(date.getUTCFullYear() + step * k);\n });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n","import {timeDay, timeSunday, timeMonday, timeYear, utcDay, utcSunday, utcMonday, utcYear} from \"d3-time\";\n\nfunction localDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n date.setFullYear(d.y);\n return date;\n }\n return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n if (0 <= d.y && d.y < 100) {\n var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n date.setUTCFullYear(d.y);\n return date;\n }\n return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newYear(y) {\n return {y: y, m: 0, d: 1, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n var locale_dateTime = locale.dateTime,\n locale_date = locale.date,\n locale_time = locale.time,\n locale_periods = locale.periods,\n locale_weekdays = locale.days,\n locale_shortWeekdays = locale.shortDays,\n locale_months = locale.months,\n locale_shortMonths = locale.shortMonths;\n\n var periodRe = formatRe(locale_periods),\n periodLookup = formatLookup(locale_periods),\n weekdayRe = formatRe(locale_weekdays),\n weekdayLookup = formatLookup(locale_weekdays),\n shortWeekdayRe = formatRe(locale_shortWeekdays),\n shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n monthRe = formatRe(locale_months),\n monthLookup = formatLookup(locale_months),\n shortMonthRe = formatRe(locale_shortMonths),\n shortMonthLookup = formatLookup(locale_shortMonths);\n\n var formats = {\n \"a\": formatShortWeekday,\n \"A\": formatWeekday,\n \"b\": formatShortMonth,\n \"B\": formatMonth,\n \"c\": null,\n \"d\": formatDayOfMonth,\n \"e\": formatDayOfMonth,\n \"H\": formatHour24,\n \"I\": formatHour12,\n \"j\": formatDayOfYear,\n \"L\": formatMilliseconds,\n \"m\": formatMonthNumber,\n \"M\": formatMinutes,\n \"p\": formatPeriod,\n \"S\": formatSeconds,\n \"U\": formatWeekNumberSunday,\n \"w\": formatWeekdayNumber,\n \"W\": formatWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatYear,\n \"Y\": formatFullYear,\n \"Z\": formatZone,\n \"%\": formatLiteralPercent\n };\n\n var utcFormats = {\n \"a\": formatUTCShortWeekday,\n \"A\": formatUTCWeekday,\n \"b\": formatUTCShortMonth,\n \"B\": formatUTCMonth,\n \"c\": null,\n \"d\": formatUTCDayOfMonth,\n \"e\": formatUTCDayOfMonth,\n \"H\": formatUTCHour24,\n \"I\": formatUTCHour12,\n \"j\": formatUTCDayOfYear,\n \"L\": formatUTCMilliseconds,\n \"m\": formatUTCMonthNumber,\n \"M\": formatUTCMinutes,\n \"p\": formatUTCPeriod,\n \"S\": formatUTCSeconds,\n \"U\": formatUTCWeekNumberSunday,\n \"w\": formatUTCWeekdayNumber,\n \"W\": formatUTCWeekNumberMonday,\n \"x\": null,\n \"X\": null,\n \"y\": formatUTCYear,\n \"Y\": formatUTCFullYear,\n \"Z\": formatUTCZone,\n \"%\": formatLiteralPercent\n };\n\n var parses = {\n \"a\": parseShortWeekday,\n \"A\": parseWeekday,\n \"b\": parseShortMonth,\n \"B\": parseMonth,\n \"c\": parseLocaleDateTime,\n \"d\": parseDayOfMonth,\n \"e\": parseDayOfMonth,\n \"H\": parseHour24,\n \"I\": parseHour24,\n \"j\": parseDayOfYear,\n \"L\": parseMilliseconds,\n \"m\": parseMonthNumber,\n \"M\": parseMinutes,\n \"p\": parsePeriod,\n \"S\": parseSeconds,\n \"U\": parseWeekNumberSunday,\n \"w\": parseWeekdayNumber,\n \"W\": parseWeekNumberMonday,\n \"x\": parseLocaleDate,\n \"X\": parseLocaleTime,\n \"y\": parseYear,\n \"Y\": parseFullYear,\n \"Z\": parseZone,\n \"%\": parseLiteralPercent\n };\n\n // These recursive directive definitions must be deferred.\n formats.x = newFormat(locale_date, formats);\n formats.X = newFormat(locale_time, formats);\n formats.c = newFormat(locale_dateTime, formats);\n utcFormats.x = newFormat(locale_date, utcFormats);\n utcFormats.X = newFormat(locale_time, utcFormats);\n utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n function newFormat(specifier, formats) {\n return function(date) {\n var string = [],\n i = -1,\n j = 0,\n n = specifier.length,\n c,\n pad,\n format;\n\n if (!(date instanceof Date)) date = new Date(+date);\n\n while (++i < n) {\n if (specifier.charCodeAt(i) === 37) {\n string.push(specifier.slice(j, i));\n if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n else pad = c === \"e\" ? \" \" : \"0\";\n if (format = formats[c]) c = format(date, pad);\n string.push(c);\n j = i + 1;\n }\n }\n\n string.push(specifier.slice(j, i));\n return string.join(\"\");\n };\n }\n\n function newParse(specifier, newDate) {\n return function(string) {\n var d = newYear(1900),\n i = parseSpecifier(d, specifier, string += \"\", 0);\n if (i != string.length) return null;\n\n // The am-pm flag is 0 for AM, and 1 for PM.\n if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n // Convert day-of-week and week-of-year to day-of-year.\n if (\"W\" in d || \"U\" in d) {\n if (!(\"w\" in d)) d.w = \"W\" in d ? 1 : 0;\n var day = \"Z\" in d ? utcDate(newYear(d.y)).getUTCDay() : newDate(newYear(d.y)).getDay();\n d.m = 0;\n d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n }\n\n // If a time zone is specified, all fields are interpreted as UTC and then\n // offset according to the specified time zone.\n if (\"Z\" in d) {\n d.H += d.Z / 100 | 0;\n d.M += d.Z % 100;\n return utcDate(d);\n }\n\n // Otherwise, all fields are in local time.\n return newDate(d);\n };\n }\n\n function parseSpecifier(d, specifier, string, j) {\n var i = 0,\n n = specifier.length,\n m = string.length,\n c,\n parse;\n\n while (i < n) {\n if (j >= m) return -1;\n c = specifier.charCodeAt(i++);\n if (c === 37) {\n c = specifier.charAt(i++);\n parse = parses[c in pads ? specifier.charAt(i++) : c];\n if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n } else if (c != string.charCodeAt(j++)) {\n return -1;\n }\n }\n\n return j;\n }\n\n function parsePeriod(d, string, i) {\n var n = periodRe.exec(string.slice(i));\n return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortWeekday(d, string, i) {\n var n = shortWeekdayRe.exec(string.slice(i));\n return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseWeekday(d, string, i) {\n var n = weekdayRe.exec(string.slice(i));\n return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseShortMonth(d, string, i) {\n var n = shortMonthRe.exec(string.slice(i));\n return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseMonth(d, string, i) {\n var n = monthRe.exec(string.slice(i));\n return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n }\n\n function parseLocaleDateTime(d, string, i) {\n return parseSpecifier(d, locale_dateTime, string, i);\n }\n\n function parseLocaleDate(d, string, i) {\n return parseSpecifier(d, locale_date, string, i);\n }\n\n function parseLocaleTime(d, string, i) {\n return parseSpecifier(d, locale_time, string, i);\n }\n\n function formatShortWeekday(d) {\n return locale_shortWeekdays[d.getDay()];\n }\n\n function formatWeekday(d) {\n return locale_weekdays[d.getDay()];\n }\n\n function formatShortMonth(d) {\n return locale_shortMonths[d.getMonth()];\n }\n\n function formatMonth(d) {\n return locale_months[d.getMonth()];\n }\n\n function formatPeriod(d) {\n return locale_periods[+(d.getHours() >= 12)];\n }\n\n function formatUTCShortWeekday(d) {\n return locale_shortWeekdays[d.getUTCDay()];\n }\n\n function formatUTCWeekday(d) {\n return locale_weekdays[d.getUTCDay()];\n }\n\n function formatUTCShortMonth(d) {\n return locale_shortMonths[d.getUTCMonth()];\n }\n\n function formatUTCMonth(d) {\n return locale_months[d.getUTCMonth()];\n }\n\n function formatUTCPeriod(d) {\n return locale_periods[+(d.getUTCHours() >= 12)];\n }\n\n return {\n format: function(specifier) {\n var f = newFormat(specifier += \"\", formats);\n f.toString = function() { return specifier; };\n return f;\n },\n parse: function(specifier) {\n var p = newParse(specifier += \"\", localDate);\n p.toString = function() { return specifier; };\n return p;\n },\n utcFormat: function(specifier) {\n var f = newFormat(specifier += \"\", utcFormats);\n f.toString = function() { return specifier; };\n return f;\n },\n utcParse: function(specifier) {\n var p = newParse(specifier, utcDate);\n p.toString = function() { return specifier; };\n return p;\n }\n };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n numberRe = /^\\s*\\d+/, // note: ignores next directive\n percentRe = /^%/,\n requoteRe = /[\\\\\\^\\$\\*\\+\\?\\|\\[\\]\\(\\)\\.\\{\\}]/g;\n\nfunction pad(value, fill, width) {\n var sign = value < 0 ? \"-\" : \"\",\n string = (sign ? -value : value) + \"\",\n length = string.length;\n return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n var map = {}, i = -1, n = names.length;\n while (++i < n) map[names[i].toLowerCase()] = i;\n return map;\n}\n\nfunction parseWeekdayNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 1));\n return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n var n = numberRe.exec(string.slice(i));\n return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 4));\n return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n var n = /^(Z)|([+-]\\d\\d)(?:\\:?(\\d\\d))?/.exec(string.slice(i, i + 6));\n return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 2));\n return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n var n = numberRe.exec(string.slice(i, i + 3));\n return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n var n = percentRe.exec(string.slice(i, i + 1));\n return n ? i + n[0].length : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMonthNumber(d, p) {\n return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekNumberSunday(d, p) {\n return pad(timeSunday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatWeekdayNumber(d) {\n return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n return pad(timeMonday.count(timeYear(d), d), p, 2);\n}\n\nfunction formatYear(d, p) {\n return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n var z = d.getTimezoneOffset();\n return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n + pad(z / 60 | 0, \"0\", 2)\n + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMonthNumber(d, p) {\n return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n return pad(utcSunday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCWeekdayNumber(d) {\n return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n return pad(utcMonday.count(utcYear(d), d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n return \"%\";\n}\n","import formatLocale from \"./locale\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n dateTime: \"%x, %X\",\n date: \"%-m/%-d/%Y\",\n time: \"%-I:%M:%S %p\",\n periods: [\"AM\", \"PM\"],\n days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n locale = formatLocale(definition);\n timeFormat = locale.format;\n timeParse = locale.parse;\n utcFormat = locale.utcFormat;\n utcParse = locale.utcParse;\n return locale;\n}\n","import {utcFormat} from \"./defaultLocale\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n ? formatIsoNative\n : utcFormat(isoSpecifier);\n\nexport default formatIso;\n","import {isoSpecifier} from \"./isoFormat\";\nimport {utcParse} from \"./defaultLocale\";\n\nfunction parseIsoNative(string) {\n var date = new Date(string);\n return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n ? parseIsoNative\n : utcParse(isoSpecifier);\n\nexport default parseIso;\n","import {timeFormat} from \"d3-time-format\";\n\nexport default function(dom, data) {\n\n //\n // Properties from source\n //\n\n // title: 'Attention and Augmented Recurrent Neural Networks',\n // description: 'A visual overview of neural attention, and the powerful extensions of neural networks being built on top of it.',\n // url: 'http://distill.pub/2016/augmented-rnns',\n // tags: [ 'rnn' ],\n // doiSuffix: 1,\n // doi: '10.23915/distill.00001',\n // volume: 1,\n // issue: 9,\n // distillPath: '2016/augmented-rnns',\n // githubPath: 'distillpub/post--augmented-rnns',\n // githubCompareUpdatesUrl: 'https://github.com/distillpub/post--augmented-rnns/compare/1596e094d8943d2dc0ea445d92071129c6419c59...3bd9209e0c24d020f87cf6152dcecc6017cbc193',\n // updatedDate: 2017-03-21T07:13:16.000Z,\n // publishedDate: 2016-09-08T07:00:00.000Z,\n // journal: {\n // \"title\": \"Distill\",\n // \"full_title\": \"Distill\",\n // \"abbrev_title\": \"Distill\",\n // \"url\": \"http://distill.pub\",\n // \"doi\": \"10.23915/distill\",\n // \"publisherName\": \"Distill Working Group\",\n // \"publisherEmail\": \"admin@distill.pub\",\n // \"issn\": \"2476-0757\",\n // \"editors\": [...],\n // \"committee\": [...]\n // }\n\n //\n // Computed Properties\n //\n\n // githubUrl: 'https://github.com/distillpub/post--augmented-rnns',\n // previewURL: 'http://distill.pub/2016/augmented-rnns/thumbnail.jpg',\n // publishedDateRFC: 'Thu, 08 Sep 2016 00:00:00 -0700',\n // publishedYear: 2016,\n // publishedMonth: 'Sept',\n // publishedDay: 8,\n // publishedMonthPadded: '09',\n // publishedDayPadded: '08',\n // updatedDateRFC: 'Tue, 21 Mar 2017 00:13:16 -0700',\n // concatenatedAuthors: 'Olah & Carter',\n // bibtexAuthors: 'Olah, Chris and Carter, Shan',\n // slug: 'olah2016attention'\n // authors: [\n // {\n // \"personalURL\": null,\n // \"name\": \"Chris Olah\",\n // \"firstName\": \"Chris\",\n // \"lastName\": \"Olah\",\n // \"affiliationURL\": null,\n // \"affiliation\": \"Google Brain\"\n // }\n // ],\n // bibliography: {\n // \"gregor2015draw\": {\n // \"title\": \"DRAW: A recurrent neural network for image generation\",\n // \"author\": \"Gregor, Karol and Danihelka, Ivo and Graves, Alex and Rezende, Danilo Jimenez and Wierstra, Daan\",\n // \"journal\": \"arXiv preprint arXiv:1502.04623\",\n // \"year\": \"2015\",\n // \"url\": \"https://arxiv.org/pdf/1502.04623.pdf\",\n // \"type\": \"article\"\n // },\n // ...\n // },\n // citations: [\n // \"gregor2015draw\",\n // \"mercier2011humans\",\n // \"dong2014image\",\n // \"dumoulin2016guide\",\n // \"mordvintsev2015inceptionism\"\n // ],\n\n\n // citations:\n let citations = [];\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach(el => {\n let key = el.getAttribute(\"key\");\n if (key) {\n let citationKeys = key.split(\",\");\n citationKeys.forEach(key => {\n if (citations.indexOf(key) == -1){\n citations.push(key);\n if (!(key in data.bibliography)){\n console.warn(\"No bibliography entry found for: \" + key);\n }\n }\n });\n }\n });\n data.citations = citations;\n\n\n data.authors = data.authors || [];\n\n // paths\n if (!data.distillPath && !data.url) {\n data.url = \"http://distill.pub/\";\n } else if (!data.url) {\n data.url = \"http://distill.pub/\" + data.distillPath;\n }\n data.githubUrl = \"https://github.com/\" + data.githubPath;\n\n data.previewURL = data.previewURL ? data.previewURL : data.url + \"/thumbnail.jpg\"\n\n // Homepage\n //data.homepage = !post.noHomepage;\n data.journal = data.journal || {};\n\n // Dates\n if (data.publishedDate){//} && data.journal) {\n data.volume = data.publishedDate.getFullYear() - 2015;\n data.issue = data.publishedDate.getMonth() + 1;\n }\n\n data.publishedDate = data.publishedDate ? data.publishedDate : new Date(\"Invalid\");\n data.updatedDate = data.updatedDate ? data.updatedDate : new Date(\"Invalid\");\n\n data.publishedDateRFC\n let RFC = timeFormat(\"%a, %d %b %Y %H:%M:%S %Z\");\n let months = [\"Jan\", \"Feb\", \"March\", \"April\", \"May\", \"June\", \"July\", \"Aug\", \"Sept\", \"Oct\", \"Nov\", \"Dec\"];\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n data.publishedDateRFC = RFC(data.publishedDate);\n data.publishedYear = data.publishedDate.getFullYear();\n data.publishedMonth = months[data.publishedDate.getMonth()];\n data.publishedDay = data.publishedDate.getDate();\n data.publishedMonthPadded = zeroPad(data.publishedDate.getMonth() + 1);\n data.publishedDayPadded = zeroPad(data.publishedDate.getDate());\n data.updatedDateRFC = RFC(data.updatedDate);\n\n if (data.authors.length > 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \", et al.\";\n } else if (data.authors.length === 2) {\n data.concatenatedAuthors = data.authors[0].lastName + \" & \" + data.authors[1].lastName;\n } else if (data.authors.length === 1) {\n data.concatenatedAuthors = data.authors[0].lastName\n }\n\n data.bibtexAuthors = data.authors.map(function(author){\n return author.lastName + \", \" + author.firstName;\n }).join(\" and \");\n\n data.slug = data.authors.length ? data.authors[0].lastName.toLowerCase() + data.publishedYear + data.title.split(\" \")[0].toLowerCase() : \"Untitled\";\n\n}\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","import favicon from './distill-favicon.base64';\nimport escape from 'escape-html';\n\nexport default function(dom, data) {\n let head = dom.querySelector(\"head\");\n let appendHead = html => appendHtml(head, html);\n\n function meta(name, content, force) {\n if (content || force)\n appendHead(` \\n`);\n }\n\n appendHead(`\n \n \n \n \n ${data.title}\n `);\n\n appendHead(`\n \n \n \n `);\n data.authors.forEach((a) => {\n appendHtml(head, `\n `)\n });\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n // if this is a proprer article, generate Google Scholar meta data\n if (data.doiSuffix){\n appendHead(`\n \\n`);\n\n meta(\"citation_title\", data.title);\n //meta(\"citation_fulltext_html_url\", data.url);\n meta(\"citation_volume\", data.volume);\n meta(\"citation_issue\", data.issue);\n meta(\"citation_firstpage\", data.doiSuffix? `e${data.doiSuffix}` : undefined);\n meta(\"citation_doi\", data.doi);\n\n let journal = data.journal || {};\n meta(\"citation_journal_title\", journal.full_title || journal.title);\n meta(\"citation_journal_abbrev\", journal.abbrev_title);\n meta(\"citation_issn\", journal.issn);\n meta(\"citation_publisher\", journal.publisher);\n meta(\"citation_fulltext_world_readable\", \"\", true);\n\n if (data.publishedDate){\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n meta(\"citation_online_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n // Should we do something different here?\n meta(\"citation_publication_date\", `${data.publishedYear}/${data.publishedMonthPadded}/${data.publishedDayPadded}`);\n }\n\n (data.authors || []).forEach((a) => {\n meta(\"citation_author\", `${a.lastName}, ${a.firstName}`);\n meta(\"citation_author_institution\", a.affiliation);\n });\n\n if (data.citations) {\n data.citations.forEach(key => {\n let d = data.bibliography[key];\n if(!d) {\n console.warn(\"No bibliography data fround for \" + key)\n } else {\n meta(\"citation_reference\", citation_meta_content(data.bibliography[key]) )\n };\n });\n }\n }\n}\n\nfunction appendHtml(el, html) {\n el.innerHTML += html;\n}\n\nfunction citation_meta_content(ref){\n // Special test for arxiv\n var content = `citation_title=${ref.title};`;\n\n let name_strings = ref.author.split(\" and \").forEach(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1].trim();\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n content += `citation_author=${firsts} ${last};`;\n });\n\n if (\"year\" in ref) {\n content += `citation_publication_date=${ref.year};`;\n }\n\n var arxiv_id_search = /https?:\\/\\/arxiv\\.org\\/pdf\\/([0-9]*\\.[0-9]*)\\.pdf/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /https?:\\/\\/arxiv\\.org\\/abs\\/([0-9]*\\.[0-9]*)/.exec(ref.url);\n arxiv_id_search = arxiv_id_search || /arXiv preprint arXiv:([0-9]*\\.[0-9]*)/.exec(ref.journal);\n if (arxiv_id_search && arxiv_id_search[1]){\n content += `citation_arxiv_id=${arxiv_id_search[1]};`;\n return content;\n }\n if (\"journal\" in ref){\n content += `citation_journal_title=${ref.journal};`;\n }\n if (\"volume\" in ref) {\n content += `citation_volume=${ref.volume};`;\n }\n if (\"issue\" in ref || \"number\" in ref){\n content += `citation_number=${ref.issue || ref.number};`;\n }\n /*content += `citation_first_page=${};`;\n content += `citation_publication_date=${};`;*/\n return content;\n}\n","const html = `\n\n
    This article is a draft, awaiting review for publication in Distill
    \n`;\n\nexport default function(dom, data) {\n let banner = dom.createElement(\"dt-banner\");\n banner.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(banner, b.firstChild);\n banner.addEventListener(\"click\", function() {\n banner.style.display = \"none\";\n });\n}\n","/*!\n * mustache.js - Logic-less {{mustache}} templates with JavaScript\n * http://github.com/janl/mustache.js\n */\n\n/*global define: false Mustache: true*/\n\n(function defineMustache (global, factory) {\n if (typeof exports === 'object' && exports && typeof exports.nodeName !== 'string') {\n factory(exports); // CommonJS\n } else if (typeof define === 'function' && define.amd) {\n define(['exports'], factory); // AMD\n } else {\n global.Mustache = {};\n factory(global.Mustache); // script, wsh, asp\n }\n}(this, function mustacheFactory (mustache) {\n\n var objectToString = Object.prototype.toString;\n var isArray = Array.isArray || function isArrayPolyfill (object) {\n return objectToString.call(object) === '[object Array]';\n };\n\n function isFunction (object) {\n return typeof object === 'function';\n }\n\n /**\n * More correct typeof string handling array\n * which normally returns typeof 'object'\n */\n function typeStr (obj) {\n return isArray(obj) ? 'array' : typeof obj;\n }\n\n function escapeRegExp (string) {\n return string.replace(/[\\-\\[\\]{}()*+?.,\\\\\\^$|#\\s]/g, '\\\\$&');\n }\n\n /**\n * Null safe way of checking whether or not an object,\n * including its prototype, has a given property\n */\n function hasProperty (obj, propName) {\n return obj != null && typeof obj === 'object' && (propName in obj);\n }\n\n // Workaround for https://issues.apache.org/jira/browse/COUCHDB-577\n // See https://github.com/janl/mustache.js/issues/189\n var regExpTest = RegExp.prototype.test;\n function testRegExp (re, string) {\n return regExpTest.call(re, string);\n }\n\n var nonSpaceRe = /\\S/;\n function isWhitespace (string) {\n return !testRegExp(nonSpaceRe, string);\n }\n\n var entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/',\n '`': '`',\n '=': '='\n };\n\n function escapeHtml (string) {\n return String(string).replace(/[&<>\"'`=\\/]/g, function fromEntityMap (s) {\n return entityMap[s];\n });\n }\n\n var whiteRe = /\\s*/;\n var spaceRe = /\\s+/;\n var equalsRe = /\\s*=/;\n var curlyRe = /\\s*\\}/;\n var tagRe = /#|\\^|\\/|>|\\{|&|=|!/;\n\n /**\n * Breaks up the given `template` string into a tree of tokens. If the `tags`\n * argument is given here it must be an array with two string values: the\n * opening and closing tags used in the template (e.g. [ \"<%\", \"%>\" ]). Of\n * course, the default is to use mustaches (i.e. mustache.tags).\n *\n * A token is an array with at least 4 elements. The first element is the\n * mustache symbol that was used inside the tag, e.g. \"#\" or \"&\". If the tag\n * did not contain a symbol (i.e. {{myValue}}) this element is \"name\". For\n * all text that appears outside a symbol this element is \"text\".\n *\n * The second element of a token is its \"value\". For mustache tags this is\n * whatever else was inside the tag besides the opening symbol. For text tokens\n * this is the text itself.\n *\n * The third and fourth elements of the token are the start and end indices,\n * respectively, of the token in the original template.\n *\n * Tokens that are the root node of a subtree contain two more elements: 1) an\n * array of tokens in the subtree and 2) the index in the original template at\n * which the closing tag for that section begins.\n */\n function parseTemplate (template, tags) {\n if (!template)\n return [];\n\n var sections = []; // Stack to hold section tokens\n var tokens = []; // Buffer to hold the tokens\n var spaces = []; // Indices of whitespace tokens on the current line\n var hasTag = false; // Is there a {{tag}} on the current line?\n var nonSpace = false; // Is there a non-space char on the current line?\n\n // Strips all whitespace tokens array for the current line\n // if there was a {{#tag}} on it and otherwise only space.\n function stripSpace () {\n if (hasTag && !nonSpace) {\n while (spaces.length)\n delete tokens[spaces.pop()];\n } else {\n spaces = [];\n }\n\n hasTag = false;\n nonSpace = false;\n }\n\n var openingTagRe, closingTagRe, closingCurlyRe;\n function compileTags (tagsToCompile) {\n if (typeof tagsToCompile === 'string')\n tagsToCompile = tagsToCompile.split(spaceRe, 2);\n\n if (!isArray(tagsToCompile) || tagsToCompile.length !== 2)\n throw new Error('Invalid tags: ' + tagsToCompile);\n\n openingTagRe = new RegExp(escapeRegExp(tagsToCompile[0]) + '\\\\s*');\n closingTagRe = new RegExp('\\\\s*' + escapeRegExp(tagsToCompile[1]));\n closingCurlyRe = new RegExp('\\\\s*' + escapeRegExp('}' + tagsToCompile[1]));\n }\n\n compileTags(tags || mustache.tags);\n\n var scanner = new Scanner(template);\n\n var start, type, value, chr, token, openSection;\n while (!scanner.eos()) {\n start = scanner.pos;\n\n // Match any text between tags.\n value = scanner.scanUntil(openingTagRe);\n\n if (value) {\n for (var i = 0, valueLength = value.length; i < valueLength; ++i) {\n chr = value.charAt(i);\n\n if (isWhitespace(chr)) {\n spaces.push(tokens.length);\n } else {\n nonSpace = true;\n }\n\n tokens.push([ 'text', chr, start, start + 1 ]);\n start += 1;\n\n // Check for whitespace on the current line.\n if (chr === '\\n')\n stripSpace();\n }\n }\n\n // Match the opening tag.\n if (!scanner.scan(openingTagRe))\n break;\n\n hasTag = true;\n\n // Get the tag type.\n type = scanner.scan(tagRe) || 'name';\n scanner.scan(whiteRe);\n\n // Get the tag value.\n if (type === '=') {\n value = scanner.scanUntil(equalsRe);\n scanner.scan(equalsRe);\n scanner.scanUntil(closingTagRe);\n } else if (type === '{') {\n value = scanner.scanUntil(closingCurlyRe);\n scanner.scan(curlyRe);\n scanner.scanUntil(closingTagRe);\n type = '&';\n } else {\n value = scanner.scanUntil(closingTagRe);\n }\n\n // Match the closing tag.\n if (!scanner.scan(closingTagRe))\n throw new Error('Unclosed tag at ' + scanner.pos);\n\n token = [ type, value, start, scanner.pos ];\n tokens.push(token);\n\n if (type === '#' || type === '^') {\n sections.push(token);\n } else if (type === '/') {\n // Check section nesting.\n openSection = sections.pop();\n\n if (!openSection)\n throw new Error('Unopened section \"' + value + '\" at ' + start);\n\n if (openSection[1] !== value)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + start);\n } else if (type === 'name' || type === '{' || type === '&') {\n nonSpace = true;\n } else if (type === '=') {\n // Set the tags for the next time around.\n compileTags(value);\n }\n }\n\n // Make sure there are no open sections when we're done.\n openSection = sections.pop();\n\n if (openSection)\n throw new Error('Unclosed section \"' + openSection[1] + '\" at ' + scanner.pos);\n\n return nestTokens(squashTokens(tokens));\n }\n\n /**\n * Combines the values of consecutive text tokens in the given `tokens` array\n * to a single token.\n */\n function squashTokens (tokens) {\n var squashedTokens = [];\n\n var token, lastToken;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n if (token) {\n if (token[0] === 'text' && lastToken && lastToken[0] === 'text') {\n lastToken[1] += token[1];\n lastToken[3] = token[3];\n } else {\n squashedTokens.push(token);\n lastToken = token;\n }\n }\n }\n\n return squashedTokens;\n }\n\n /**\n * Forms the given array of `tokens` into a nested tree structure where\n * tokens that represent a section have two additional items: 1) an array of\n * all tokens that appear in that section and 2) the index in the original\n * template that represents the end of that section.\n */\n function nestTokens (tokens) {\n var nestedTokens = [];\n var collector = nestedTokens;\n var sections = [];\n\n var token, section;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n token = tokens[i];\n\n switch (token[0]) {\n case '#':\n case '^':\n collector.push(token);\n sections.push(token);\n collector = token[4] = [];\n break;\n case '/':\n section = sections.pop();\n section[5] = token[2];\n collector = sections.length > 0 ? sections[sections.length - 1][4] : nestedTokens;\n break;\n default:\n collector.push(token);\n }\n }\n\n return nestedTokens;\n }\n\n /**\n * A simple string scanner that is used by the template parser to find\n * tokens in template strings.\n */\n function Scanner (string) {\n this.string = string;\n this.tail = string;\n this.pos = 0;\n }\n\n /**\n * Returns `true` if the tail is empty (end of string).\n */\n Scanner.prototype.eos = function eos () {\n return this.tail === '';\n };\n\n /**\n * Tries to match the given regular expression at the current position.\n * Returns the matched text if it can match, the empty string otherwise.\n */\n Scanner.prototype.scan = function scan (re) {\n var match = this.tail.match(re);\n\n if (!match || match.index !== 0)\n return '';\n\n var string = match[0];\n\n this.tail = this.tail.substring(string.length);\n this.pos += string.length;\n\n return string;\n };\n\n /**\n * Skips all text until the given regular expression can be matched. Returns\n * the skipped string, which is the entire tail if no match can be made.\n */\n Scanner.prototype.scanUntil = function scanUntil (re) {\n var index = this.tail.search(re), match;\n\n switch (index) {\n case -1:\n match = this.tail;\n this.tail = '';\n break;\n case 0:\n match = '';\n break;\n default:\n match = this.tail.substring(0, index);\n this.tail = this.tail.substring(index);\n }\n\n this.pos += match.length;\n\n return match;\n };\n\n /**\n * Represents a rendering context by wrapping a view object and\n * maintaining a reference to the parent context.\n */\n function Context (view, parentContext) {\n this.view = view;\n this.cache = { '.': this.view };\n this.parent = parentContext;\n }\n\n /**\n * Creates a new context using the given view with this context\n * as the parent.\n */\n Context.prototype.push = function push (view) {\n return new Context(view, this);\n };\n\n /**\n * Returns the value of the given name in this context, traversing\n * up the context hierarchy if the value is absent in this context's view.\n */\n Context.prototype.lookup = function lookup (name) {\n var cache = this.cache;\n\n var value;\n if (cache.hasOwnProperty(name)) {\n value = cache[name];\n } else {\n var context = this, names, index, lookupHit = false;\n\n while (context) {\n if (name.indexOf('.') > 0) {\n value = context.view;\n names = name.split('.');\n index = 0;\n\n /**\n * Using the dot notion path in `name`, we descend through the\n * nested objects.\n *\n * To be certain that the lookup has been successful, we have to\n * check if the last object in the path actually has the property\n * we are looking for. We store the result in `lookupHit`.\n *\n * This is specially necessary for when the value has been set to\n * `undefined` and we want to avoid looking up parent contexts.\n **/\n while (value != null && index < names.length) {\n if (index === names.length - 1)\n lookupHit = hasProperty(value, names[index]);\n\n value = value[names[index++]];\n }\n } else {\n value = context.view[name];\n lookupHit = hasProperty(context.view, name);\n }\n\n if (lookupHit)\n break;\n\n context = context.parent;\n }\n\n cache[name] = value;\n }\n\n if (isFunction(value))\n value = value.call(this.view);\n\n return value;\n };\n\n /**\n * A Writer knows how to take a stream of tokens and render them to a\n * string, given a context. It also maintains a cache of templates to\n * avoid the need to parse the same template twice.\n */\n function Writer () {\n this.cache = {};\n }\n\n /**\n * Clears all cached templates in this writer.\n */\n Writer.prototype.clearCache = function clearCache () {\n this.cache = {};\n };\n\n /**\n * Parses and caches the given `template` and returns the array of tokens\n * that is generated from the parse.\n */\n Writer.prototype.parse = function parse (template, tags) {\n var cache = this.cache;\n var tokens = cache[template];\n\n if (tokens == null)\n tokens = cache[template] = parseTemplate(template, tags);\n\n return tokens;\n };\n\n /**\n * High-level method that is used to render the given `template` with\n * the given `view`.\n *\n * The optional `partials` argument may be an object that contains the\n * names and templates of partials that are used in the template. It may\n * also be a function that is used to load partial templates on the fly\n * that takes a single argument: the name of the partial.\n */\n Writer.prototype.render = function render (template, view, partials) {\n var tokens = this.parse(template);\n var context = (view instanceof Context) ? view : new Context(view);\n return this.renderTokens(tokens, context, partials, template);\n };\n\n /**\n * Low-level method that renders the given array of `tokens` using\n * the given `context` and `partials`.\n *\n * Note: The `originalTemplate` is only ever used to extract the portion\n * of the original template that was contained in a higher-order section.\n * If the template doesn't use higher-order sections, this argument may\n * be omitted.\n */\n Writer.prototype.renderTokens = function renderTokens (tokens, context, partials, originalTemplate) {\n var buffer = '';\n\n var token, symbol, value;\n for (var i = 0, numTokens = tokens.length; i < numTokens; ++i) {\n value = undefined;\n token = tokens[i];\n symbol = token[0];\n\n if (symbol === '#') value = this.renderSection(token, context, partials, originalTemplate);\n else if (symbol === '^') value = this.renderInverted(token, context, partials, originalTemplate);\n else if (symbol === '>') value = this.renderPartial(token, context, partials, originalTemplate);\n else if (symbol === '&') value = this.unescapedValue(token, context);\n else if (symbol === 'name') value = this.escapedValue(token, context);\n else if (symbol === 'text') value = this.rawValue(token);\n\n if (value !== undefined)\n buffer += value;\n }\n\n return buffer;\n };\n\n Writer.prototype.renderSection = function renderSection (token, context, partials, originalTemplate) {\n var self = this;\n var buffer = '';\n var value = context.lookup(token[1]);\n\n // This function is used to render an arbitrary template\n // in the current context by higher-order sections.\n function subRender (template) {\n return self.render(template, context, partials);\n }\n\n if (!value) return;\n\n if (isArray(value)) {\n for (var j = 0, valueLength = value.length; j < valueLength; ++j) {\n buffer += this.renderTokens(token[4], context.push(value[j]), partials, originalTemplate);\n }\n } else if (typeof value === 'object' || typeof value === 'string' || typeof value === 'number') {\n buffer += this.renderTokens(token[4], context.push(value), partials, originalTemplate);\n } else if (isFunction(value)) {\n if (typeof originalTemplate !== 'string')\n throw new Error('Cannot use higher-order sections without the original template');\n\n // Extract the portion of the original template that the section contains.\n value = value.call(context.view, originalTemplate.slice(token[3], token[5]), subRender);\n\n if (value != null)\n buffer += value;\n } else {\n buffer += this.renderTokens(token[4], context, partials, originalTemplate);\n }\n return buffer;\n };\n\n Writer.prototype.renderInverted = function renderInverted (token, context, partials, originalTemplate) {\n var value = context.lookup(token[1]);\n\n // Use JavaScript's definition of falsy. Include empty arrays.\n // See https://github.com/janl/mustache.js/issues/186\n if (!value || (isArray(value) && value.length === 0))\n return this.renderTokens(token[4], context, partials, originalTemplate);\n };\n\n Writer.prototype.renderPartial = function renderPartial (token, context, partials) {\n if (!partials) return;\n\n var value = isFunction(partials) ? partials(token[1]) : partials[token[1]];\n if (value != null)\n return this.renderTokens(this.parse(value), context, partials, value);\n };\n\n Writer.prototype.unescapedValue = function unescapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return value;\n };\n\n Writer.prototype.escapedValue = function escapedValue (token, context) {\n var value = context.lookup(token[1]);\n if (value != null)\n return mustache.escape(value);\n };\n\n Writer.prototype.rawValue = function rawValue (token) {\n return token[1];\n };\n\n mustache.name = 'mustache.js';\n mustache.version = '2.3.0';\n mustache.tags = [ '{{', '}}' ];\n\n // All high-level mustache.* functions use this writer.\n var defaultWriter = new Writer();\n\n /**\n * Clears all cached templates in the default writer.\n */\n mustache.clearCache = function clearCache () {\n return defaultWriter.clearCache();\n };\n\n /**\n * Parses and caches the given template in the default writer and returns the\n * array of tokens it contains. Doing this ahead of time avoids the need to\n * parse templates on the fly as they are rendered.\n */\n mustache.parse = function parse (template, tags) {\n return defaultWriter.parse(template, tags);\n };\n\n /**\n * Renders the `template` with the given `view` and `partials` using the\n * default writer.\n */\n mustache.render = function render (template, view, partials) {\n if (typeof template !== 'string') {\n throw new TypeError('Invalid template! Template should be a \"string\" ' +\n 'but \"' + typeStr(template) + '\" was given as the first ' +\n 'argument for mustache#render(template, view, partials)');\n }\n\n return defaultWriter.render(template, view, partials);\n };\n\n // This is here for backwards compatibility with 0.4.x.,\n /*eslint-disable */ // eslint wants camel cased function name\n mustache.to_html = function to_html (template, view, partials, send) {\n /*eslint-enable*/\n\n var result = mustache.render(template, view, partials);\n\n if (isFunction(send)) {\n send(result);\n } else {\n return result;\n }\n };\n\n // Export the escaping function so that the user may override it.\n // See https://github.com/janl/mustache.js/issues/244\n mustache.escape = escapeHtml;\n\n // Export these mainly for testing, but also for advanced usage.\n mustache.Scanner = Scanner;\n mustache.Context = Context;\n mustache.Writer = Writer;\n\n return mustache;\n}));\n","import mustache from \"mustache\";\n\nconst html = `\n\n\n`;\n\nconst template = `\n
    \n
    \n {{#authors}}\n
    \n {{#personalURL}}\n {{name}}\n {{/personalURL}}\n {{^personalURL}}\n
    {{name}}
    \n {{/personalURL}}\n {{#affiliation}}\n {{#affiliationURL}}\n {{affiliation}}\n {{/affiliationURL}}\n {{^affiliationURL}}\n
    {{affiliation}}
    \n {{/affiliationURL}}\n {{/affiliation}}\n
    \n {{/authors}}\n
    \n {{#publishedYear}}\n
    \n
    {{publishedMonth}}. {{publishedDay}}
    \n
    {{publishedYear}}
    \n
    \n {{/publishedYear}}\n {{#publishedYear}}\n \n
    Citation:
    \n
    {{concatenatedAuthors}}, {{publishedYear}}
    \n
    \n {{/publishedYear}}\n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-byline');\n if (el) {\n el.innerHTML = html + mustache.render(template, data);\n }\n}\n","const templateHTML = `\n\n\n
    \n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-appendix')\n if (el) {\n let userHTML = el.innerHTML;\n el.innerHTML = templateHTML;\n let newHTML = \"\";\n\n // If we have some footnotes on the page, render a container for the footnote list.\n if (dom.querySelector(\"dt-fn\")) {\n newHTML = newHTML + `

    Footnotes

    `;\n }\n\n // If we have any citations on the page, render a container for the bibliography.\n if (dom.querySelector(\"dt-cite\")) {\n newHTML = newHTML + `

    References

    `;\n }\n\n let div = el.querySelector(\"div.l-body\")\n div.innerHTML = userHTML + newHTML;\n }\n\n}\n","export default function(dom, data) {\n let el = dom.querySelector('dt-appendix > div');\n if (el) {\n let newHTML = \"\";\n\n newHTML += `

    Updates and Corrections

    \n

    View all changes to this article since it was first published. If you see a mistake or want to suggest a change, please create an issue on GitHub.

    `;\n\n newHTML += `

    Citations and Reuse

    \n

    Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on GitHub. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: “Figure from …”.

    \n\n

    For attribution in academic contexts, please cite this work as

    \n
    ${data.concatenatedAuthors}, \"${data.title}\", ${data.journal.title}, ${data.publishedYear}. http://doi.org/${data.doi}
    \n\n

    BibTeX citation

    \n
    @article{${data.slug},\n  author = {${data.bibtexAuthors}},\n  title = {${data.title}},\n  journal = {${data.journal.title}},\n  year = {${data.publishedYear}},\n  url = {${data.url}},\n  doi = {${data.doi}}\n}
    `;\n\n let existingHTML = el.innerHTML;\n el.innerHTML = existingHTML + newHTML;\n }\n}","export default function(dom, data) {\n let css = `\n dt-cite {\n color: hsla(206, 90%, 20%, 0.7);\n }\n dt-cite .citation-number {\n cursor: default;\n white-space: nowrap;\n font-family: -apple-system, BlinkMacSystemFont, \"Roboto\", Helvetica, sans-serif;\n font-size: 75%;\n color: hsla(206, 90%, 20%, 0.7);\n display: inline-block;\n line-height: 1.1em;\n text-align: center;\n position: relative;\n top: -2px;\n margin: 0 2px;\n }\n figcaption dt-cite .citation-number {\n font-size: 11px;\n font-weight: normal;\n top: -2px;\n line-height: 1em;\n }\n `;\n\n let style = dom.createElement(\"style\");\n style.textContent = css;\n dom.querySelector(\"body\").appendChild(style);\n\n let citations = data.citations;\n /*if (data.citations) {\n citations = Object.keys(data.citations).map(c => data.citations[c]);\n citations.sort((a, b) => {\n return a.author.localeCompare(b.author);\n });\n }*/\n \n var appendCiteHoverDiv = (function() {\n function nodeFromString(str) {\n var div = dom.createElement(\"div\");\n div.innerHTML = str;\n return div.firstChild;\n }\n var hover_boxes_container = nodeFromString(`
    `)\n dom.querySelector(\"body\").appendChild(hover_boxes_container);\n var hover_n = 0;\n return function appendHoverDiv(content) {\n var id = `dt-cite-hover-box-${hover_n}`;\n hover_n += 1;\n var str = `
    ${content}
    `;\n var div = nodeFromString(str);\n hover_boxes_container.appendChild(div);\n return id;\n }\n })();\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach((el,n) => {\n var key = el.getAttribute(\"key\");\n if (key) {\n var keys = key.split(\",\");\n var cite_string = inline_cite_short(keys);\n var cite_hover_str = \"\";\n keys.map((key,n) => {\n if (n>0) cite_hover_str += \"

    \";\n cite_hover_str += hover_cite(data.bibliography[key]);\n });\n var ref_id = appendCiteHoverDiv(cite_hover_str);\n //cite_hover_str = cite_hover_str.replace(/\"/g, \"'\")\n var orig_string = el.innerHTML;\n if (orig_string != \"\") orig_string += \" \";\n el.innerHTML = `${orig_string}${cite_string}`;\n }\n });\n\n let bibEl = dom.querySelector(\"dt-bibliography\");\n if (bibEl) {\n let ol = dom.createElement(\"ol\");\n citations.forEach(key => {\n let el = dom.createElement(\"li\");\n el.innerHTML = bibliography_cite(data.bibliography[key]);\n ol.appendChild(el);\n })\n bibEl.appendChild(ol);\n }\n\n function inline_cite_short(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var n = data.citations.indexOf(key)+1;\n return \"\"+n;\n } else {\n return \"?\";\n }\n }\n return \"[\"+keys.map(cite_string).join(\", \")+\"]\";\n }\n\n function inline_cite_long(keys){\n function cite_string(key){\n if (key in data.bibliography){\n var ent = data.bibliography[key];\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var year = ent.year;\n if (names.length == 1) return names[0] + \", \" + year;\n if (names.length == 2) return names[0] + \" & \" + names[1] + \", \" + year;\n if (names.length > 2) return names[0] + \", et al., \" + year;\n } else {\n return \"?\";\n }\n }\n return keys.map(cite_string).join(\", \");\n }\n\n function author_string(ent, template, sep, finalSep){\n var names = ent.author.split(\" and \");\n let name_strings = names.map(name => {\n name = name.trim();\n if (name.indexOf(\",\") != -1){\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1];\n } else {\n var last = name.split(\" \").slice(-1)[0].trim();\n var firsts = name.split(\" \").slice(0,-1).join(\" \");\n }\n var initials = \"\";\n if (firsts != undefined) {\n initials = firsts.trim().split(\" \").map(s => s.trim()[0]);\n initials = initials.join(\".\")+\".\";\n }\n return template.replace(\"${F}\", firsts)\n .replace(\"${L}\", last)\n .replace(\"${I}\", initials);\n });\n if (names.length > 1) {\n var str = name_strings.slice(0, names.length-1).join(sep);\n str += (finalSep || sep) + name_strings[names.length-1];\n return str;\n } else {\n return name_strings[0];\n }\n }\n\n function venue_string(ent) {\n var cite = (ent.journal || ent.booktitle || \"\")\n if (\"volume\" in ent){\n var issue = ent.issue || ent.number;\n issue = (issue != undefined)? \"(\"+issue+\")\" : \"\";\n cite += \", Vol \" + ent.volume + issue;\n }\n if (\"pages\" in ent){\n cite += \", pp. \" + ent.pages\n }\n if (cite != \"\") cite += \". \"\n if (\"publisher\" in ent){\n cite += ent.publisher;\n if (cite[cite.length-1] != \".\") cite += \".\";\n }\n return cite;\n }\n\n function link_string(ent){\n if (\"url\" in ent){\n var url = ent.url;\n var arxiv_match = (/arxiv\\.org\\/abs\\/([0-9\\.]*)/).exec(url);\n if (arxiv_match != null){\n url = `http://arxiv.org/pdf/${arxiv_match[1]}.pdf`;\n }\n\n if (url.slice(-4) == \".pdf\"){\n var label = \"PDF\";\n } else if (url.slice(-5) == \".html\") {\n var label = \"HTML\";\n }\n return `  [${label||\"link\"}]`;\n }/* else if (\"doi\" in ent){\n return `  [DOI]`;\n }*/ else {\n return \"\";\n }\n }\n function doi_string(ent, new_line){\n if (\"doi\" in ent) {\n return `${new_line?\"
    \":\"\"} DOI: ${ent.doi}`;\n } else {\n return \"\";\n }\n }\n\n function bibliography_cite(ent, fancy){\n if (ent){\n var cite = \"\" + ent.title + \" \"\n cite += link_string(ent) + \"
    \";\n cite += author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += venue_string(ent);\n cite += doi_string(ent);\n return cite\n /*var cite = author_string(ent, \"${L}, ${I}\", \", \", \" and \");\n if (ent.year || ent.date){\n cite += \", \" + (ent.year || ent.date) + \". \"\n } else {\n cite += \". \"\n }\n cite += \"\" + ent.title + \". \";\n cite += venue_string(ent);\n cite += doi_string(ent);\n cite += link_string(ent);\n return cite*/\n } else {\n return \"?\";\n }\n }\n\n function hover_cite(ent){\n if (ent){\n var cite = \"\";\n cite += \"\" + ent.title + \"\";\n cite += link_string(ent);\n cite += \"
    \"\n\n var a_str = author_string(ent, \"${I} ${L}\", \", \") + \".\";\n var v_str = venue_string(ent).trim() + \" \" + ent.year + \". \" + doi_string(ent, true);\n\n if ((a_str+v_str).length < Math.min(40, ent.title.length)) {\n cite += a_str + \" \" + v_str;\n } else {\n cite += a_str + \"
    \" + v_str;\n }\n return cite;\n } else {\n return \"?\";\n }\n }\n\n\n //https://scholar.google.com/scholar?q=allintitle%3ADocument+author%3Aolah\n function get_GS_URL(ent){\n if (ent){\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var title = ent.title.split(\" \")//.replace(/[,:]/, \"\")\n var url = \"http://search.labs.crossref.org/dois?\"//\"\"https://scholar.google.com/scholar?\"\n url += uris({q: names.join(\" \") + \" \" + title.join(\" \")})\n }\n\n }\n}\n","export default function(dom, data) {\n\n var appendFootnoteHoverDiv = (function() {\n function nodeFromString(str) {\n var div = dom.createElement(\"div\");\n div.innerHTML = str;\n return div.firstChild;\n }\n var hover_boxes_container = nodeFromString(`
    `)\n dom.querySelector(\"body\").appendChild(hover_boxes_container);\n var hover_n = 0;\n return function appendHoverDiv(content) {\n var id = `dt-fn-hover-box-${hover_n}`;\n hover_n += 1;\n var str = `
    ${content}
    `;\n var div = nodeFromString(str);\n hover_boxes_container.appendChild(div);\n return id;\n }\n })();\n\n\n var fnTags = [].slice.apply(dom.querySelectorAll(\"dt-fn\"));\n var fnContent = [];\n fnTags.forEach((el,n) => {\n var content = el.innerHTML;\n var ref_id = appendFootnoteHoverDiv(content)\n fnContent.push(content);\n n = (n+1)+\"\";\n var key = \"fn-\"+n;\n var escaped_content = content.replace(/\"/g, \"'\");\n el.innerHTML = `${n}`;\n });\n\n let fnList = dom.querySelector(\"dt-fn-list\");\n if (fnList) {\n let ol = dom.createElement(\"ol\");\n fnContent.forEach(content => {\n let el = dom.createElement(\"li\");\n el.innerHTML = content;\n ol.appendChild(el);\n })\n fnList.appendChild(ol);\n }\n\n}\n","/**\n * This is the ParseError class, which is the main error thrown by KaTeX\n * functions when something has gone wrong. This is used to distinguish internal\n * errors from errors in the expression that the user provided.\n *\n * If possible, a caller should provide a Token or ParseNode with information\n * about where in the source string the problem occurred.\n *\n * @param {string} message The error message\n * @param {(Token|ParseNode)=} token An object providing position information\n */\nfunction ParseError(message, token) {\n var error = \"KaTeX parse error: \" + message;\n var start;\n var end;\n\n if (token && token.lexer && token.start <= token.end) {\n // If we have the input and a position, make the error a bit fancier\n\n // Get the input\n var input = token.lexer.input;\n\n // Prepend some information\n start = token.start;\n end = token.end;\n if (start === input.length) {\n error += \" at end of input: \";\n } else {\n error += \" at position \" + (start + 1) + \": \";\n }\n\n // Underline token in question using combining underscores\n var underlined = input.slice(start, end).replace(/[^]/g, \"$&\\u0332\");\n\n // Extract some context from the input and add it to the error\n var left;\n if (start > 15) {\n left = \"…\" + input.slice(start - 15, start);\n } else {\n left = input.slice(0, start);\n }\n var right;\n if (end + 15 < input.length) {\n right = input.slice(end, end + 15) + \"…\";\n } else {\n right = input.slice(end);\n }\n error += left + underlined + right;\n }\n\n // Some hackery to make ParseError a prototype of Error\n // See http://stackoverflow.com/a/8460753\n var self = new Error(error);\n self.name = \"ParseError\";\n self.__proto__ = ParseError.prototype;\n\n self.position = start;\n return self;\n}\n\n// More hackery\nParseError.prototype.__proto__ = Error.prototype;\n\nmodule.exports = ParseError;\n","/**\n * This is a module for storing settings passed into KaTeX. It correctly handles\n * default settings.\n */\n\n/**\n * Helper function for getting a default value if the value is undefined\n */\nfunction get(option, defaultValue) {\n return option === undefined ? defaultValue : option;\n}\n\n/**\n * The main Settings object\n *\n * The current options stored are:\n * - displayMode: Whether the expression should be typeset by default in\n * textstyle or displaystyle (default false)\n */\nfunction Settings(options) {\n // allow null options\n options = options || {};\n this.displayMode = get(options.displayMode, false);\n this.throwOnError = get(options.throwOnError, true);\n this.errorColor = get(options.errorColor, \"#cc0000\");\n this.macros = options.macros || {};\n}\n\nmodule.exports = Settings;\n","var hangulRegex = /[\\uAC00-\\uD7AF]/;\n\n// This regex combines\n// - Hiragana: [\\u3040-\\u309F]\n// - Katakana: [\\u30A0-\\u30FF]\n// - CJK ideograms: [\\u4E00-\\u9FAF]\n// - Hangul syllables: [\\uAC00-\\uD7AF]\n// Notably missing are halfwidth Katakana and Romanji glyphs.\nvar cjkRegex =\n /[\\u3040-\\u309F]|[\\u30A0-\\u30FF]|[\\u4E00-\\u9FAF]|[\\uAC00-\\uD7AF]/;\n\nmodule.exports = {\n cjkRegex: cjkRegex,\n hangulRegex: hangulRegex\n};\n","module.exports = {\n \"AMS-Regular\": {\n \"65\": [0, 0.68889, 0, 0],\n \"66\": [0, 0.68889, 0, 0],\n \"67\": [0, 0.68889, 0, 0],\n \"68\": [0, 0.68889, 0, 0],\n \"69\": [0, 0.68889, 0, 0],\n \"70\": [0, 0.68889, 0, 0],\n \"71\": [0, 0.68889, 0, 0],\n \"72\": [0, 0.68889, 0, 0],\n \"73\": [0, 0.68889, 0, 0],\n \"74\": [0.16667, 0.68889, 0, 0],\n \"75\": [0, 0.68889, 0, 0],\n \"76\": [0, 0.68889, 0, 0],\n \"77\": [0, 0.68889, 0, 0],\n \"78\": [0, 0.68889, 0, 0],\n \"79\": [0.16667, 0.68889, 0, 0],\n \"80\": [0, 0.68889, 0, 0],\n \"81\": [0.16667, 0.68889, 0, 0],\n \"82\": [0, 0.68889, 0, 0],\n \"83\": [0, 0.68889, 0, 0],\n \"84\": [0, 0.68889, 0, 0],\n \"85\": [0, 0.68889, 0, 0],\n \"86\": [0, 0.68889, 0, 0],\n \"87\": [0, 0.68889, 0, 0],\n \"88\": [0, 0.68889, 0, 0],\n \"89\": [0, 0.68889, 0, 0],\n \"90\": [0, 0.68889, 0, 0],\n \"107\": [0, 0.68889, 0, 0],\n \"165\": [0, 0.675, 0.025, 0],\n \"174\": [0.15559, 0.69224, 0, 0],\n \"240\": [0, 0.68889, 0, 0],\n \"295\": [0, 0.68889, 0, 0],\n \"710\": [0, 0.825, 0, 0],\n \"732\": [0, 0.9, 0, 0],\n \"770\": [0, 0.825, 0, 0],\n \"771\": [0, 0.9, 0, 0],\n \"989\": [0.08167, 0.58167, 0, 0],\n \"1008\": [0, 0.43056, 0.04028, 0],\n \"8245\": [0, 0.54986, 0, 0],\n \"8463\": [0, 0.68889, 0, 0],\n \"8487\": [0, 0.68889, 0, 0],\n \"8498\": [0, 0.68889, 0, 0],\n \"8502\": [0, 0.68889, 0, 0],\n \"8503\": [0, 0.68889, 0, 0],\n \"8504\": [0, 0.68889, 0, 0],\n \"8513\": [0, 0.68889, 0, 0],\n \"8592\": [-0.03598, 0.46402, 0, 0],\n \"8594\": [-0.03598, 0.46402, 0, 0],\n \"8602\": [-0.13313, 0.36687, 0, 0],\n \"8603\": [-0.13313, 0.36687, 0, 0],\n \"8606\": [0.01354, 0.52239, 0, 0],\n \"8608\": [0.01354, 0.52239, 0, 0],\n \"8610\": [0.01354, 0.52239, 0, 0],\n \"8611\": [0.01354, 0.52239, 0, 0],\n \"8619\": [0, 0.54986, 0, 0],\n \"8620\": [0, 0.54986, 0, 0],\n \"8621\": [-0.13313, 0.37788, 0, 0],\n \"8622\": [-0.13313, 0.36687, 0, 0],\n \"8624\": [0, 0.69224, 0, 0],\n \"8625\": [0, 0.69224, 0, 0],\n \"8630\": [0, 0.43056, 0, 0],\n \"8631\": [0, 0.43056, 0, 0],\n \"8634\": [0.08198, 0.58198, 0, 0],\n \"8635\": [0.08198, 0.58198, 0, 0],\n \"8638\": [0.19444, 0.69224, 0, 0],\n \"8639\": [0.19444, 0.69224, 0, 0],\n \"8642\": [0.19444, 0.69224, 0, 0],\n \"8643\": [0.19444, 0.69224, 0, 0],\n \"8644\": [0.1808, 0.675, 0, 0],\n \"8646\": [0.1808, 0.675, 0, 0],\n \"8647\": [0.1808, 0.675, 0, 0],\n \"8648\": [0.19444, 0.69224, 0, 0],\n \"8649\": [0.1808, 0.675, 0, 0],\n \"8650\": [0.19444, 0.69224, 0, 0],\n \"8651\": [0.01354, 0.52239, 0, 0],\n \"8652\": [0.01354, 0.52239, 0, 0],\n \"8653\": [-0.13313, 0.36687, 0, 0],\n \"8654\": [-0.13313, 0.36687, 0, 0],\n \"8655\": [-0.13313, 0.36687, 0, 0],\n \"8666\": [0.13667, 0.63667, 0, 0],\n \"8667\": [0.13667, 0.63667, 0, 0],\n \"8669\": [-0.13313, 0.37788, 0, 0],\n \"8672\": [-0.064, 0.437, 0, 0],\n \"8674\": [-0.064, 0.437, 0, 0],\n \"8705\": [0, 0.825, 0, 0],\n \"8708\": [0, 0.68889, 0, 0],\n \"8709\": [0.08167, 0.58167, 0, 0],\n \"8717\": [0, 0.43056, 0, 0],\n \"8722\": [-0.03598, 0.46402, 0, 0],\n \"8724\": [0.08198, 0.69224, 0, 0],\n \"8726\": [0.08167, 0.58167, 0, 0],\n \"8733\": [0, 0.69224, 0, 0],\n \"8736\": [0, 0.69224, 0, 0],\n \"8737\": [0, 0.69224, 0, 0],\n \"8738\": [0.03517, 0.52239, 0, 0],\n \"8739\": [0.08167, 0.58167, 0, 0],\n \"8740\": [0.25142, 0.74111, 0, 0],\n \"8741\": [0.08167, 0.58167, 0, 0],\n \"8742\": [0.25142, 0.74111, 0, 0],\n \"8756\": [0, 0.69224, 0, 0],\n \"8757\": [0, 0.69224, 0, 0],\n \"8764\": [-0.13313, 0.36687, 0, 0],\n \"8765\": [-0.13313, 0.37788, 0, 0],\n \"8769\": [-0.13313, 0.36687, 0, 0],\n \"8770\": [-0.03625, 0.46375, 0, 0],\n \"8774\": [0.30274, 0.79383, 0, 0],\n \"8776\": [-0.01688, 0.48312, 0, 0],\n \"8778\": [0.08167, 0.58167, 0, 0],\n \"8782\": [0.06062, 0.54986, 0, 0],\n \"8783\": [0.06062, 0.54986, 0, 0],\n \"8785\": [0.08198, 0.58198, 0, 0],\n \"8786\": [0.08198, 0.58198, 0, 0],\n \"8787\": [0.08198, 0.58198, 0, 0],\n \"8790\": [0, 0.69224, 0, 0],\n \"8791\": [0.22958, 0.72958, 0, 0],\n \"8796\": [0.08198, 0.91667, 0, 0],\n \"8806\": [0.25583, 0.75583, 0, 0],\n \"8807\": [0.25583, 0.75583, 0, 0],\n \"8808\": [0.25142, 0.75726, 0, 0],\n \"8809\": [0.25142, 0.75726, 0, 0],\n \"8812\": [0.25583, 0.75583, 0, 0],\n \"8814\": [0.20576, 0.70576, 0, 0],\n \"8815\": [0.20576, 0.70576, 0, 0],\n \"8816\": [0.30274, 0.79383, 0, 0],\n \"8817\": [0.30274, 0.79383, 0, 0],\n \"8818\": [0.22958, 0.72958, 0, 0],\n \"8819\": [0.22958, 0.72958, 0, 0],\n \"8822\": [0.1808, 0.675, 0, 0],\n \"8823\": [0.1808, 0.675, 0, 0],\n \"8828\": [0.13667, 0.63667, 0, 0],\n \"8829\": [0.13667, 0.63667, 0, 0],\n \"8830\": [0.22958, 0.72958, 0, 0],\n \"8831\": [0.22958, 0.72958, 0, 0],\n \"8832\": [0.20576, 0.70576, 0, 0],\n \"8833\": [0.20576, 0.70576, 0, 0],\n \"8840\": [0.30274, 0.79383, 0, 0],\n \"8841\": [0.30274, 0.79383, 0, 0],\n \"8842\": [0.13597, 0.63597, 0, 0],\n \"8843\": [0.13597, 0.63597, 0, 0],\n \"8847\": [0.03517, 0.54986, 0, 0],\n \"8848\": [0.03517, 0.54986, 0, 0],\n \"8858\": [0.08198, 0.58198, 0, 0],\n \"8859\": [0.08198, 0.58198, 0, 0],\n \"8861\": [0.08198, 0.58198, 0, 0],\n \"8862\": [0, 0.675, 0, 0],\n \"8863\": [0, 0.675, 0, 0],\n \"8864\": [0, 0.675, 0, 0],\n \"8865\": [0, 0.675, 0, 0],\n \"8872\": [0, 0.69224, 0, 0],\n \"8873\": [0, 0.69224, 0, 0],\n \"8874\": [0, 0.69224, 0, 0],\n \"8876\": [0, 0.68889, 0, 0],\n \"8877\": [0, 0.68889, 0, 0],\n \"8878\": [0, 0.68889, 0, 0],\n \"8879\": [0, 0.68889, 0, 0],\n \"8882\": [0.03517, 0.54986, 0, 0],\n \"8883\": [0.03517, 0.54986, 0, 0],\n \"8884\": [0.13667, 0.63667, 0, 0],\n \"8885\": [0.13667, 0.63667, 0, 0],\n \"8888\": [0, 0.54986, 0, 0],\n \"8890\": [0.19444, 0.43056, 0, 0],\n \"8891\": [0.19444, 0.69224, 0, 0],\n \"8892\": [0.19444, 0.69224, 0, 0],\n \"8901\": [0, 0.54986, 0, 0],\n \"8903\": [0.08167, 0.58167, 0, 0],\n \"8905\": [0.08167, 0.58167, 0, 0],\n \"8906\": [0.08167, 0.58167, 0, 0],\n \"8907\": [0, 0.69224, 0, 0],\n \"8908\": [0, 0.69224, 0, 0],\n \"8909\": [-0.03598, 0.46402, 0, 0],\n \"8910\": [0, 0.54986, 0, 0],\n \"8911\": [0, 0.54986, 0, 0],\n \"8912\": [0.03517, 0.54986, 0, 0],\n \"8913\": [0.03517, 0.54986, 0, 0],\n \"8914\": [0, 0.54986, 0, 0],\n \"8915\": [0, 0.54986, 0, 0],\n \"8916\": [0, 0.69224, 0, 0],\n \"8918\": [0.0391, 0.5391, 0, 0],\n \"8919\": [0.0391, 0.5391, 0, 0],\n \"8920\": [0.03517, 0.54986, 0, 0],\n \"8921\": [0.03517, 0.54986, 0, 0],\n \"8922\": [0.38569, 0.88569, 0, 0],\n \"8923\": [0.38569, 0.88569, 0, 0],\n \"8926\": [0.13667, 0.63667, 0, 0],\n \"8927\": [0.13667, 0.63667, 0, 0],\n \"8928\": [0.30274, 0.79383, 0, 0],\n \"8929\": [0.30274, 0.79383, 0, 0],\n \"8934\": [0.23222, 0.74111, 0, 0],\n \"8935\": [0.23222, 0.74111, 0, 0],\n \"8936\": [0.23222, 0.74111, 0, 0],\n \"8937\": [0.23222, 0.74111, 0, 0],\n \"8938\": [0.20576, 0.70576, 0, 0],\n \"8939\": [0.20576, 0.70576, 0, 0],\n \"8940\": [0.30274, 0.79383, 0, 0],\n \"8941\": [0.30274, 0.79383, 0, 0],\n \"8994\": [0.19444, 0.69224, 0, 0],\n \"8995\": [0.19444, 0.69224, 0, 0],\n \"9416\": [0.15559, 0.69224, 0, 0],\n \"9484\": [0, 0.69224, 0, 0],\n \"9488\": [0, 0.69224, 0, 0],\n \"9492\": [0, 0.37788, 0, 0],\n \"9496\": [0, 0.37788, 0, 0],\n \"9585\": [0.19444, 0.68889, 0, 0],\n \"9586\": [0.19444, 0.74111, 0, 0],\n \"9632\": [0, 0.675, 0, 0],\n \"9633\": [0, 0.675, 0, 0],\n \"9650\": [0, 0.54986, 0, 0],\n \"9651\": [0, 0.54986, 0, 0],\n \"9654\": [0.03517, 0.54986, 0, 0],\n \"9660\": [0, 0.54986, 0, 0],\n \"9661\": [0, 0.54986, 0, 0],\n \"9664\": [0.03517, 0.54986, 0, 0],\n \"9674\": [0.11111, 0.69224, 0, 0],\n \"9733\": [0.19444, 0.69224, 0, 0],\n \"10003\": [0, 0.69224, 0, 0],\n \"10016\": [0, 0.69224, 0, 0],\n \"10731\": [0.11111, 0.69224, 0, 0],\n \"10846\": [0.19444, 0.75583, 0, 0],\n \"10877\": [0.13667, 0.63667, 0, 0],\n \"10878\": [0.13667, 0.63667, 0, 0],\n \"10885\": [0.25583, 0.75583, 0, 0],\n \"10886\": [0.25583, 0.75583, 0, 0],\n \"10887\": [0.13597, 0.63597, 0, 0],\n \"10888\": [0.13597, 0.63597, 0, 0],\n \"10889\": [0.26167, 0.75726, 0, 0],\n \"10890\": [0.26167, 0.75726, 0, 0],\n \"10891\": [0.48256, 0.98256, 0, 0],\n \"10892\": [0.48256, 0.98256, 0, 0],\n \"10901\": [0.13667, 0.63667, 0, 0],\n \"10902\": [0.13667, 0.63667, 0, 0],\n \"10933\": [0.25142, 0.75726, 0, 0],\n \"10934\": [0.25142, 0.75726, 0, 0],\n \"10935\": [0.26167, 0.75726, 0, 0],\n \"10936\": [0.26167, 0.75726, 0, 0],\n \"10937\": [0.26167, 0.75726, 0, 0],\n \"10938\": [0.26167, 0.75726, 0, 0],\n \"10949\": [0.25583, 0.75583, 0, 0],\n \"10950\": [0.25583, 0.75583, 0, 0],\n \"10955\": [0.28481, 0.79383, 0, 0],\n \"10956\": [0.28481, 0.79383, 0, 0],\n \"57350\": [0.08167, 0.58167, 0, 0],\n \"57351\": [0.08167, 0.58167, 0, 0],\n \"57352\": [0.08167, 0.58167, 0, 0],\n \"57353\": [0, 0.43056, 0.04028, 0],\n \"57356\": [0.25142, 0.75726, 0, 0],\n \"57357\": [0.25142, 0.75726, 0, 0],\n \"57358\": [0.41951, 0.91951, 0, 0],\n \"57359\": [0.30274, 0.79383, 0, 0],\n \"57360\": [0.30274, 0.79383, 0, 0],\n \"57361\": [0.41951, 0.91951, 0, 0],\n \"57366\": [0.25142, 0.75726, 0, 0],\n \"57367\": [0.25142, 0.75726, 0, 0],\n \"57368\": [0.25142, 0.75726, 0, 0],\n \"57369\": [0.25142, 0.75726, 0, 0],\n \"57370\": [0.13597, 0.63597, 0, 0],\n \"57371\": [0.13597, 0.63597, 0, 0]\n },\n \"Caligraphic-Regular\": {\n \"48\": [0, 0.43056, 0, 0],\n \"49\": [0, 0.43056, 0, 0],\n \"50\": [0, 0.43056, 0, 0],\n \"51\": [0.19444, 0.43056, 0, 0],\n \"52\": [0.19444, 0.43056, 0, 0],\n \"53\": [0.19444, 0.43056, 0, 0],\n \"54\": [0, 0.64444, 0, 0],\n \"55\": [0.19444, 0.43056, 0, 0],\n \"56\": [0, 0.64444, 0, 0],\n \"57\": [0.19444, 0.43056, 0, 0],\n \"65\": [0, 0.68333, 0, 0.19445],\n \"66\": [0, 0.68333, 0.03041, 0.13889],\n \"67\": [0, 0.68333, 0.05834, 0.13889],\n \"68\": [0, 0.68333, 0.02778, 0.08334],\n \"69\": [0, 0.68333, 0.08944, 0.11111],\n \"70\": [0, 0.68333, 0.09931, 0.11111],\n \"71\": [0.09722, 0.68333, 0.0593, 0.11111],\n \"72\": [0, 0.68333, 0.00965, 0.11111],\n \"73\": [0, 0.68333, 0.07382, 0],\n \"74\": [0.09722, 0.68333, 0.18472, 0.16667],\n \"75\": [0, 0.68333, 0.01445, 0.05556],\n \"76\": [0, 0.68333, 0, 0.13889],\n \"77\": [0, 0.68333, 0, 0.13889],\n \"78\": [0, 0.68333, 0.14736, 0.08334],\n \"79\": [0, 0.68333, 0.02778, 0.11111],\n \"80\": [0, 0.68333, 0.08222, 0.08334],\n \"81\": [0.09722, 0.68333, 0, 0.11111],\n \"82\": [0, 0.68333, 0, 0.08334],\n \"83\": [0, 0.68333, 0.075, 0.13889],\n \"84\": [0, 0.68333, 0.25417, 0],\n \"85\": [0, 0.68333, 0.09931, 0.08334],\n \"86\": [0, 0.68333, 0.08222, 0],\n \"87\": [0, 0.68333, 0.08222, 0.08334],\n \"88\": [0, 0.68333, 0.14643, 0.13889],\n \"89\": [0.09722, 0.68333, 0.08222, 0.08334],\n \"90\": [0, 0.68333, 0.07944, 0.13889]\n },\n \"Fraktur-Regular\": {\n \"33\": [0, 0.69141, 0, 0],\n \"34\": [0, 0.69141, 0, 0],\n \"38\": [0, 0.69141, 0, 0],\n \"39\": [0, 0.69141, 0, 0],\n \"40\": [0.24982, 0.74947, 0, 0],\n \"41\": [0.24982, 0.74947, 0, 0],\n \"42\": [0, 0.62119, 0, 0],\n \"43\": [0.08319, 0.58283, 0, 0],\n \"44\": [0, 0.10803, 0, 0],\n \"45\": [0.08319, 0.58283, 0, 0],\n \"46\": [0, 0.10803, 0, 0],\n \"47\": [0.24982, 0.74947, 0, 0],\n \"48\": [0, 0.47534, 0, 0],\n \"49\": [0, 0.47534, 0, 0],\n \"50\": [0, 0.47534, 0, 0],\n \"51\": [0.18906, 0.47534, 0, 0],\n \"52\": [0.18906, 0.47534, 0, 0],\n \"53\": [0.18906, 0.47534, 0, 0],\n \"54\": [0, 0.69141, 0, 0],\n \"55\": [0.18906, 0.47534, 0, 0],\n \"56\": [0, 0.69141, 0, 0],\n \"57\": [0.18906, 0.47534, 0, 0],\n \"58\": [0, 0.47534, 0, 0],\n \"59\": [0.12604, 0.47534, 0, 0],\n \"61\": [-0.13099, 0.36866, 0, 0],\n \"63\": [0, 0.69141, 0, 0],\n \"65\": [0, 0.69141, 0, 0],\n \"66\": [0, 0.69141, 0, 0],\n \"67\": [0, 0.69141, 0, 0],\n \"68\": [0, 0.69141, 0, 0],\n \"69\": [0, 0.69141, 0, 0],\n \"70\": [0.12604, 0.69141, 0, 0],\n \"71\": [0, 0.69141, 0, 0],\n \"72\": [0.06302, 0.69141, 0, 0],\n \"73\": [0, 0.69141, 0, 0],\n \"74\": [0.12604, 0.69141, 0, 0],\n \"75\": [0, 0.69141, 0, 0],\n \"76\": [0, 0.69141, 0, 0],\n \"77\": [0, 0.69141, 0, 0],\n \"78\": [0, 0.69141, 0, 0],\n \"79\": [0, 0.69141, 0, 0],\n \"80\": [0.18906, 0.69141, 0, 0],\n \"81\": [0.03781, 0.69141, 0, 0],\n \"82\": [0, 0.69141, 0, 0],\n \"83\": [0, 0.69141, 0, 0],\n \"84\": [0, 0.69141, 0, 0],\n \"85\": [0, 0.69141, 0, 0],\n \"86\": [0, 0.69141, 0, 0],\n \"87\": [0, 0.69141, 0, 0],\n \"88\": [0, 0.69141, 0, 0],\n \"89\": [0.18906, 0.69141, 0, 0],\n \"90\": [0.12604, 0.69141, 0, 0],\n \"91\": [0.24982, 0.74947, 0, 0],\n \"93\": [0.24982, 0.74947, 0, 0],\n \"94\": [0, 0.69141, 0, 0],\n \"97\": [0, 0.47534, 0, 0],\n \"98\": [0, 0.69141, 0, 0],\n \"99\": [0, 0.47534, 0, 0],\n \"100\": [0, 0.62119, 0, 0],\n \"101\": [0, 0.47534, 0, 0],\n \"102\": [0.18906, 0.69141, 0, 0],\n \"103\": [0.18906, 0.47534, 0, 0],\n \"104\": [0.18906, 0.69141, 0, 0],\n \"105\": [0, 0.69141, 0, 0],\n \"106\": [0, 0.69141, 0, 0],\n \"107\": [0, 0.69141, 0, 0],\n \"108\": [0, 0.69141, 0, 0],\n \"109\": [0, 0.47534, 0, 0],\n \"110\": [0, 0.47534, 0, 0],\n \"111\": [0, 0.47534, 0, 0],\n \"112\": [0.18906, 0.52396, 0, 0],\n \"113\": [0.18906, 0.47534, 0, 0],\n \"114\": [0, 0.47534, 0, 0],\n \"115\": [0, 0.47534, 0, 0],\n \"116\": [0, 0.62119, 0, 0],\n \"117\": [0, 0.47534, 0, 0],\n \"118\": [0, 0.52396, 0, 0],\n \"119\": [0, 0.52396, 0, 0],\n \"120\": [0.18906, 0.47534, 0, 0],\n \"121\": [0.18906, 0.47534, 0, 0],\n \"122\": [0.18906, 0.47534, 0, 0],\n \"8216\": [0, 0.69141, 0, 0],\n \"8217\": [0, 0.69141, 0, 0],\n \"58112\": [0, 0.62119, 0, 0],\n \"58113\": [0, 0.62119, 0, 0],\n \"58114\": [0.18906, 0.69141, 0, 0],\n \"58115\": [0.18906, 0.69141, 0, 0],\n \"58116\": [0.18906, 0.47534, 0, 0],\n \"58117\": [0, 0.69141, 0, 0],\n \"58118\": [0, 0.62119, 0, 0],\n \"58119\": [0, 0.47534, 0, 0]\n },\n \"Main-Bold\": {\n \"33\": [0, 0.69444, 0, 0],\n \"34\": [0, 0.69444, 0, 0],\n \"35\": [0.19444, 0.69444, 0, 0],\n \"36\": [0.05556, 0.75, 0, 0],\n \"37\": [0.05556, 0.75, 0, 0],\n \"38\": [0, 0.69444, 0, 0],\n \"39\": [0, 0.69444, 0, 0],\n \"40\": [0.25, 0.75, 0, 0],\n \"41\": [0.25, 0.75, 0, 0],\n \"42\": [0, 0.75, 0, 0],\n \"43\": [0.13333, 0.63333, 0, 0],\n \"44\": [0.19444, 0.15556, 0, 0],\n \"45\": [0, 0.44444, 0, 0],\n \"46\": [0, 0.15556, 0, 0],\n \"47\": [0.25, 0.75, 0, 0],\n \"48\": [0, 0.64444, 0, 0],\n \"49\": [0, 0.64444, 0, 0],\n \"50\": [0, 0.64444, 0, 0],\n \"51\": [0, 0.64444, 0, 0],\n \"52\": [0, 0.64444, 0, 0],\n \"53\": [0, 0.64444, 0, 0],\n \"54\": [0, 0.64444, 0, 0],\n \"55\": [0, 0.64444, 0, 0],\n \"56\": [0, 0.64444, 0, 0],\n \"57\": [0, 0.64444, 0, 0],\n \"58\": [0, 0.44444, 0, 0],\n \"59\": [0.19444, 0.44444, 0, 0],\n \"60\": [0.08556, 0.58556, 0, 0],\n \"61\": [-0.10889, 0.39111, 0, 0],\n \"62\": [0.08556, 0.58556, 0, 0],\n \"63\": [0, 0.69444, 0, 0],\n \"64\": [0, 0.69444, 0, 0],\n \"65\": [0, 0.68611, 0, 0],\n \"66\": [0, 0.68611, 0, 0],\n \"67\": [0, 0.68611, 0, 0],\n \"68\": [0, 0.68611, 0, 0],\n \"69\": [0, 0.68611, 0, 0],\n \"70\": [0, 0.68611, 0, 0],\n \"71\": [0, 0.68611, 0, 0],\n \"72\": [0, 0.68611, 0, 0],\n \"73\": [0, 0.68611, 0, 0],\n \"74\": [0, 0.68611, 0, 0],\n \"75\": [0, 0.68611, 0, 0],\n \"76\": [0, 0.68611, 0, 0],\n \"77\": [0, 0.68611, 0, 0],\n \"78\": [0, 0.68611, 0, 0],\n \"79\": [0, 0.68611, 0, 0],\n \"80\": [0, 0.68611, 0, 0],\n \"81\": [0.19444, 0.68611, 0, 0],\n \"82\": [0, 0.68611, 0, 0],\n \"83\": [0, 0.68611, 0, 0],\n \"84\": [0, 0.68611, 0, 0],\n \"85\": [0, 0.68611, 0, 0],\n \"86\": [0, 0.68611, 0.01597, 0],\n \"87\": [0, 0.68611, 0.01597, 0],\n \"88\": [0, 0.68611, 0, 0],\n \"89\": [0, 0.68611, 0.02875, 0],\n \"90\": [0, 0.68611, 0, 0],\n \"91\": [0.25, 0.75, 0, 0],\n \"92\": [0.25, 0.75, 0, 0],\n \"93\": [0.25, 0.75, 0, 0],\n \"94\": [0, 0.69444, 0, 0],\n \"95\": [0.31, 0.13444, 0.03194, 0],\n \"96\": [0, 0.69444, 0, 0],\n \"97\": [0, 0.44444, 0, 0],\n \"98\": [0, 0.69444, 0, 0],\n \"99\": [0, 0.44444, 0, 0],\n \"100\": [0, 0.69444, 0, 0],\n \"101\": [0, 0.44444, 0, 0],\n \"102\": [0, 0.69444, 0.10903, 0],\n \"103\": [0.19444, 0.44444, 0.01597, 0],\n \"104\": [0, 0.69444, 0, 0],\n \"105\": [0, 0.69444, 0, 0],\n \"106\": [0.19444, 0.69444, 0, 0],\n \"107\": [0, 0.69444, 0, 0],\n \"108\": [0, 0.69444, 0, 0],\n \"109\": [0, 0.44444, 0, 0],\n \"110\": [0, 0.44444, 0, 0],\n \"111\": [0, 0.44444, 0, 0],\n \"112\": [0.19444, 0.44444, 0, 0],\n \"113\": [0.19444, 0.44444, 0, 0],\n \"114\": [0, 0.44444, 0, 0],\n \"115\": [0, 0.44444, 0, 0],\n \"116\": [0, 0.63492, 0, 0],\n \"117\": [0, 0.44444, 0, 0],\n \"118\": [0, 0.44444, 0.01597, 0],\n \"119\": [0, 0.44444, 0.01597, 0],\n \"120\": [0, 0.44444, 0, 0],\n \"121\": [0.19444, 0.44444, 0.01597, 0],\n \"122\": [0, 0.44444, 0, 0],\n \"123\": [0.25, 0.75, 0, 0],\n \"124\": [0.25, 0.75, 0, 0],\n \"125\": [0.25, 0.75, 0, 0],\n \"126\": [0.35, 0.34444, 0, 0],\n \"168\": [0, 0.69444, 0, 0],\n \"172\": [0, 0.44444, 0, 0],\n \"175\": [0, 0.59611, 0, 0],\n \"176\": [0, 0.69444, 0, 0],\n \"177\": [0.13333, 0.63333, 0, 0],\n \"180\": [0, 0.69444, 0, 0],\n \"215\": [0.13333, 0.63333, 0, 0],\n \"247\": [0.13333, 0.63333, 0, 0],\n \"305\": [0, 0.44444, 0, 0],\n \"567\": [0.19444, 0.44444, 0, 0],\n \"710\": [0, 0.69444, 0, 0],\n \"711\": [0, 0.63194, 0, 0],\n \"713\": [0, 0.59611, 0, 0],\n \"714\": [0, 0.69444, 0, 0],\n \"715\": [0, 0.69444, 0, 0],\n \"728\": [0, 0.69444, 0, 0],\n \"729\": [0, 0.69444, 0, 0],\n \"730\": [0, 0.69444, 0, 0],\n \"732\": [0, 0.69444, 0, 0],\n \"768\": [0, 0.69444, 0, 0],\n \"769\": [0, 0.69444, 0, 0],\n \"770\": [0, 0.69444, 0, 0],\n \"771\": [0, 0.69444, 0, 0],\n \"772\": [0, 0.59611, 0, 0],\n \"774\": [0, 0.69444, 0, 0],\n \"775\": [0, 0.69444, 0, 0],\n \"776\": [0, 0.69444, 0, 0],\n \"778\": [0, 0.69444, 0, 0],\n \"779\": [0, 0.69444, 0, 0],\n \"780\": [0, 0.63194, 0, 0],\n \"824\": [0.19444, 0.69444, 0, 0],\n \"915\": [0, 0.68611, 0, 0],\n \"916\": [0, 0.68611, 0, 0],\n \"920\": [0, 0.68611, 0, 0],\n \"923\": [0, 0.68611, 0, 0],\n \"926\": [0, 0.68611, 0, 0],\n \"928\": [0, 0.68611, 0, 0],\n \"931\": [0, 0.68611, 0, 0],\n \"933\": [0, 0.68611, 0, 0],\n \"934\": [0, 0.68611, 0, 0],\n \"936\": [0, 0.68611, 0, 0],\n \"937\": [0, 0.68611, 0, 0],\n \"8211\": [0, 0.44444, 0.03194, 0],\n \"8212\": [0, 0.44444, 0.03194, 0],\n \"8216\": [0, 0.69444, 0, 0],\n \"8217\": [0, 0.69444, 0, 0],\n \"8220\": [0, 0.69444, 0, 0],\n \"8221\": [0, 0.69444, 0, 0],\n \"8224\": [0.19444, 0.69444, 0, 0],\n \"8225\": [0.19444, 0.69444, 0, 0],\n \"8242\": [0, 0.55556, 0, 0],\n \"8407\": [0, 0.72444, 0.15486, 0],\n \"8463\": [0, 0.69444, 0, 0],\n \"8465\": [0, 0.69444, 0, 0],\n \"8467\": [0, 0.69444, 0, 0],\n \"8472\": [0.19444, 0.44444, 0, 0],\n \"8476\": [0, 0.69444, 0, 0],\n \"8501\": [0, 0.69444, 0, 0],\n \"8592\": [-0.10889, 0.39111, 0, 0],\n \"8593\": [0.19444, 0.69444, 0, 0],\n \"8594\": [-0.10889, 0.39111, 0, 0],\n \"8595\": [0.19444, 0.69444, 0, 0],\n \"8596\": [-0.10889, 0.39111, 0, 0],\n \"8597\": [0.25, 0.75, 0, 0],\n \"8598\": [0.19444, 0.69444, 0, 0],\n \"8599\": [0.19444, 0.69444, 0, 0],\n \"8600\": [0.19444, 0.69444, 0, 0],\n \"8601\": [0.19444, 0.69444, 0, 0],\n \"8636\": [-0.10889, 0.39111, 0, 0],\n \"8637\": [-0.10889, 0.39111, 0, 0],\n \"8640\": [-0.10889, 0.39111, 0, 0],\n \"8641\": [-0.10889, 0.39111, 0, 0],\n \"8656\": [-0.10889, 0.39111, 0, 0],\n \"8657\": [0.19444, 0.69444, 0, 0],\n \"8658\": [-0.10889, 0.39111, 0, 0],\n \"8659\": [0.19444, 0.69444, 0, 0],\n \"8660\": [-0.10889, 0.39111, 0, 0],\n \"8661\": [0.25, 0.75, 0, 0],\n \"8704\": [0, 0.69444, 0, 0],\n \"8706\": [0, 0.69444, 0.06389, 0],\n \"8707\": [0, 0.69444, 0, 0],\n \"8709\": [0.05556, 0.75, 0, 0],\n \"8711\": [0, 0.68611, 0, 0],\n \"8712\": [0.08556, 0.58556, 0, 0],\n \"8715\": [0.08556, 0.58556, 0, 0],\n \"8722\": [0.13333, 0.63333, 0, 0],\n \"8723\": [0.13333, 0.63333, 0, 0],\n \"8725\": [0.25, 0.75, 0, 0],\n \"8726\": [0.25, 0.75, 0, 0],\n \"8727\": [-0.02778, 0.47222, 0, 0],\n \"8728\": [-0.02639, 0.47361, 0, 0],\n \"8729\": [-0.02639, 0.47361, 0, 0],\n \"8730\": [0.18, 0.82, 0, 0],\n \"8733\": [0, 0.44444, 0, 0],\n \"8734\": [0, 0.44444, 0, 0],\n \"8736\": [0, 0.69224, 0, 0],\n \"8739\": [0.25, 0.75, 0, 0],\n \"8741\": [0.25, 0.75, 0, 0],\n \"8743\": [0, 0.55556, 0, 0],\n \"8744\": [0, 0.55556, 0, 0],\n \"8745\": [0, 0.55556, 0, 0],\n \"8746\": [0, 0.55556, 0, 0],\n \"8747\": [0.19444, 0.69444, 0.12778, 0],\n \"8764\": [-0.10889, 0.39111, 0, 0],\n \"8768\": [0.19444, 0.69444, 0, 0],\n \"8771\": [0.00222, 0.50222, 0, 0],\n \"8776\": [0.02444, 0.52444, 0, 0],\n \"8781\": [0.00222, 0.50222, 0, 0],\n \"8801\": [0.00222, 0.50222, 0, 0],\n \"8804\": [0.19667, 0.69667, 0, 0],\n \"8805\": [0.19667, 0.69667, 0, 0],\n \"8810\": [0.08556, 0.58556, 0, 0],\n \"8811\": [0.08556, 0.58556, 0, 0],\n \"8826\": [0.08556, 0.58556, 0, 0],\n \"8827\": [0.08556, 0.58556, 0, 0],\n \"8834\": [0.08556, 0.58556, 0, 0],\n \"8835\": [0.08556, 0.58556, 0, 0],\n \"8838\": [0.19667, 0.69667, 0, 0],\n \"8839\": [0.19667, 0.69667, 0, 0],\n \"8846\": [0, 0.55556, 0, 0],\n \"8849\": [0.19667, 0.69667, 0, 0],\n \"8850\": [0.19667, 0.69667, 0, 0],\n \"8851\": [0, 0.55556, 0, 0],\n \"8852\": [0, 0.55556, 0, 0],\n \"8853\": [0.13333, 0.63333, 0, 0],\n \"8854\": [0.13333, 0.63333, 0, 0],\n \"8855\": [0.13333, 0.63333, 0, 0],\n \"8856\": [0.13333, 0.63333, 0, 0],\n \"8857\": [0.13333, 0.63333, 0, 0],\n \"8866\": [0, 0.69444, 0, 0],\n \"8867\": [0, 0.69444, 0, 0],\n \"8868\": [0, 0.69444, 0, 0],\n \"8869\": [0, 0.69444, 0, 0],\n \"8900\": [-0.02639, 0.47361, 0, 0],\n \"8901\": [-0.02639, 0.47361, 0, 0],\n \"8902\": [-0.02778, 0.47222, 0, 0],\n \"8968\": [0.25, 0.75, 0, 0],\n \"8969\": [0.25, 0.75, 0, 0],\n \"8970\": [0.25, 0.75, 0, 0],\n \"8971\": [0.25, 0.75, 0, 0],\n \"8994\": [-0.13889, 0.36111, 0, 0],\n \"8995\": [-0.13889, 0.36111, 0, 0],\n \"9651\": [0.19444, 0.69444, 0, 0],\n \"9657\": [-0.02778, 0.47222, 0, 0],\n \"9661\": [0.19444, 0.69444, 0, 0],\n \"9667\": [-0.02778, 0.47222, 0, 0],\n \"9711\": [0.19444, 0.69444, 0, 0],\n \"9824\": [0.12963, 0.69444, 0, 0],\n \"9825\": [0.12963, 0.69444, 0, 0],\n \"9826\": [0.12963, 0.69444, 0, 0],\n \"9827\": [0.12963, 0.69444, 0, 0],\n \"9837\": [0, 0.75, 0, 0],\n \"9838\": [0.19444, 0.69444, 0, 0],\n \"9839\": [0.19444, 0.69444, 0, 0],\n \"10216\": [0.25, 0.75, 0, 0],\n \"10217\": [0.25, 0.75, 0, 0],\n \"10815\": [0, 0.68611, 0, 0],\n \"10927\": [0.19667, 0.69667, 0, 0],\n \"10928\": [0.19667, 0.69667, 0, 0]\n },\n \"Main-Italic\": {\n \"33\": [0, 0.69444, 0.12417, 0],\n \"34\": [0, 0.69444, 0.06961, 0],\n \"35\": [0.19444, 0.69444, 0.06616, 0],\n \"37\": [0.05556, 0.75, 0.13639, 0],\n \"38\": [0, 0.69444, 0.09694, 0],\n \"39\": [0, 0.69444, 0.12417, 0],\n \"40\": [0.25, 0.75, 0.16194, 0],\n \"41\": [0.25, 0.75, 0.03694, 0],\n \"42\": [0, 0.75, 0.14917, 0],\n \"43\": [0.05667, 0.56167, 0.03694, 0],\n \"44\": [0.19444, 0.10556, 0, 0],\n \"45\": [0, 0.43056, 0.02826, 0],\n \"46\": [0, 0.10556, 0, 0],\n \"47\": [0.25, 0.75, 0.16194, 0],\n \"48\": [0, 0.64444, 0.13556, 0],\n \"49\": [0, 0.64444, 0.13556, 0],\n \"50\": [0, 0.64444, 0.13556, 0],\n \"51\": [0, 0.64444, 0.13556, 0],\n \"52\": [0.19444, 0.64444, 0.13556, 0],\n \"53\": [0, 0.64444, 0.13556, 0],\n \"54\": [0, 0.64444, 0.13556, 0],\n \"55\": [0.19444, 0.64444, 0.13556, 0],\n \"56\": [0, 0.64444, 0.13556, 0],\n \"57\": [0, 0.64444, 0.13556, 0],\n \"58\": [0, 0.43056, 0.0582, 0],\n \"59\": [0.19444, 0.43056, 0.0582, 0],\n \"61\": [-0.13313, 0.36687, 0.06616, 0],\n \"63\": [0, 0.69444, 0.1225, 0],\n \"64\": [0, 0.69444, 0.09597, 0],\n \"65\": [0, 0.68333, 0, 0],\n \"66\": [0, 0.68333, 0.10257, 0],\n \"67\": [0, 0.68333, 0.14528, 0],\n \"68\": [0, 0.68333, 0.09403, 0],\n \"69\": [0, 0.68333, 0.12028, 0],\n \"70\": [0, 0.68333, 0.13305, 0],\n \"71\": [0, 0.68333, 0.08722, 0],\n \"72\": [0, 0.68333, 0.16389, 0],\n \"73\": [0, 0.68333, 0.15806, 0],\n \"74\": [0, 0.68333, 0.14028, 0],\n \"75\": [0, 0.68333, 0.14528, 0],\n \"76\": [0, 0.68333, 0, 0],\n \"77\": [0, 0.68333, 0.16389, 0],\n \"78\": [0, 0.68333, 0.16389, 0],\n \"79\": [0, 0.68333, 0.09403, 0],\n \"80\": [0, 0.68333, 0.10257, 0],\n \"81\": [0.19444, 0.68333, 0.09403, 0],\n \"82\": [0, 0.68333, 0.03868, 0],\n \"83\": [0, 0.68333, 0.11972, 0],\n \"84\": [0, 0.68333, 0.13305, 0],\n \"85\": [0, 0.68333, 0.16389, 0],\n \"86\": [0, 0.68333, 0.18361, 0],\n \"87\": [0, 0.68333, 0.18361, 0],\n \"88\": [0, 0.68333, 0.15806, 0],\n \"89\": [0, 0.68333, 0.19383, 0],\n \"90\": [0, 0.68333, 0.14528, 0],\n \"91\": [0.25, 0.75, 0.1875, 0],\n \"93\": [0.25, 0.75, 0.10528, 0],\n \"94\": [0, 0.69444, 0.06646, 0],\n \"95\": [0.31, 0.12056, 0.09208, 0],\n \"97\": [0, 0.43056, 0.07671, 0],\n \"98\": [0, 0.69444, 0.06312, 0],\n \"99\": [0, 0.43056, 0.05653, 0],\n \"100\": [0, 0.69444, 0.10333, 0],\n \"101\": [0, 0.43056, 0.07514, 0],\n \"102\": [0.19444, 0.69444, 0.21194, 0],\n \"103\": [0.19444, 0.43056, 0.08847, 0],\n \"104\": [0, 0.69444, 0.07671, 0],\n \"105\": [0, 0.65536, 0.1019, 0],\n \"106\": [0.19444, 0.65536, 0.14467, 0],\n \"107\": [0, 0.69444, 0.10764, 0],\n \"108\": [0, 0.69444, 0.10333, 0],\n \"109\": [0, 0.43056, 0.07671, 0],\n \"110\": [0, 0.43056, 0.07671, 0],\n \"111\": [0, 0.43056, 0.06312, 0],\n \"112\": [0.19444, 0.43056, 0.06312, 0],\n \"113\": [0.19444, 0.43056, 0.08847, 0],\n \"114\": [0, 0.43056, 0.10764, 0],\n \"115\": [0, 0.43056, 0.08208, 0],\n \"116\": [0, 0.61508, 0.09486, 0],\n \"117\": [0, 0.43056, 0.07671, 0],\n \"118\": [0, 0.43056, 0.10764, 0],\n \"119\": [0, 0.43056, 0.10764, 0],\n \"120\": [0, 0.43056, 0.12042, 0],\n \"121\": [0.19444, 0.43056, 0.08847, 0],\n \"122\": [0, 0.43056, 0.12292, 0],\n \"126\": [0.35, 0.31786, 0.11585, 0],\n \"163\": [0, 0.69444, 0, 0],\n \"305\": [0, 0.43056, 0, 0.02778],\n \"567\": [0.19444, 0.43056, 0, 0.08334],\n \"768\": [0, 0.69444, 0, 0],\n \"769\": [0, 0.69444, 0.09694, 0],\n \"770\": [0, 0.69444, 0.06646, 0],\n \"771\": [0, 0.66786, 0.11585, 0],\n \"772\": [0, 0.56167, 0.10333, 0],\n \"774\": [0, 0.69444, 0.10806, 0],\n \"775\": [0, 0.66786, 0.11752, 0],\n \"776\": [0, 0.66786, 0.10474, 0],\n \"778\": [0, 0.69444, 0, 0],\n \"779\": [0, 0.69444, 0.1225, 0],\n \"780\": [0, 0.62847, 0.08295, 0],\n \"915\": [0, 0.68333, 0.13305, 0],\n \"916\": [0, 0.68333, 0, 0],\n \"920\": [0, 0.68333, 0.09403, 0],\n \"923\": [0, 0.68333, 0, 0],\n \"926\": [0, 0.68333, 0.15294, 0],\n \"928\": [0, 0.68333, 0.16389, 0],\n \"931\": [0, 0.68333, 0.12028, 0],\n \"933\": [0, 0.68333, 0.11111, 0],\n \"934\": [0, 0.68333, 0.05986, 0],\n \"936\": [0, 0.68333, 0.11111, 0],\n \"937\": [0, 0.68333, 0.10257, 0],\n \"8211\": [0, 0.43056, 0.09208, 0],\n \"8212\": [0, 0.43056, 0.09208, 0],\n \"8216\": [0, 0.69444, 0.12417, 0],\n \"8217\": [0, 0.69444, 0.12417, 0],\n \"8220\": [0, 0.69444, 0.1685, 0],\n \"8221\": [0, 0.69444, 0.06961, 0],\n \"8463\": [0, 0.68889, 0, 0]\n },\n \"Main-Regular\": {\n \"32\": [0, 0, 0, 0],\n \"33\": [0, 0.69444, 0, 0],\n \"34\": [0, 0.69444, 0, 0],\n \"35\": [0.19444, 0.69444, 0, 0],\n \"36\": [0.05556, 0.75, 0, 0],\n \"37\": [0.05556, 0.75, 0, 0],\n \"38\": [0, 0.69444, 0, 0],\n \"39\": [0, 0.69444, 0, 0],\n \"40\": [0.25, 0.75, 0, 0],\n \"41\": [0.25, 0.75, 0, 0],\n \"42\": [0, 0.75, 0, 0],\n \"43\": [0.08333, 0.58333, 0, 0],\n \"44\": [0.19444, 0.10556, 0, 0],\n \"45\": [0, 0.43056, 0, 0],\n \"46\": [0, 0.10556, 0, 0],\n \"47\": [0.25, 0.75, 0, 0],\n \"48\": [0, 0.64444, 0, 0],\n \"49\": [0, 0.64444, 0, 0],\n \"50\": [0, 0.64444, 0, 0],\n \"51\": [0, 0.64444, 0, 0],\n \"52\": [0, 0.64444, 0, 0],\n \"53\": [0, 0.64444, 0, 0],\n \"54\": [0, 0.64444, 0, 0],\n \"55\": [0, 0.64444, 0, 0],\n \"56\": [0, 0.64444, 0, 0],\n \"57\": [0, 0.64444, 0, 0],\n \"58\": [0, 0.43056, 0, 0],\n \"59\": [0.19444, 0.43056, 0, 0],\n \"60\": [0.0391, 0.5391, 0, 0],\n \"61\": [-0.13313, 0.36687, 0, 0],\n \"62\": [0.0391, 0.5391, 0, 0],\n \"63\": [0, 0.69444, 0, 0],\n \"64\": [0, 0.69444, 0, 0],\n \"65\": [0, 0.68333, 0, 0],\n \"66\": [0, 0.68333, 0, 0],\n \"67\": [0, 0.68333, 0, 0],\n \"68\": [0, 0.68333, 0, 0],\n \"69\": [0, 0.68333, 0, 0],\n \"70\": [0, 0.68333, 0, 0],\n \"71\": [0, 0.68333, 0, 0],\n \"72\": [0, 0.68333, 0, 0],\n \"73\": [0, 0.68333, 0, 0],\n \"74\": [0, 0.68333, 0, 0],\n \"75\": [0, 0.68333, 0, 0],\n \"76\": [0, 0.68333, 0, 0],\n \"77\": [0, 0.68333, 0, 0],\n \"78\": [0, 0.68333, 0, 0],\n \"79\": [0, 0.68333, 0, 0],\n \"80\": [0, 0.68333, 0, 0],\n \"81\": [0.19444, 0.68333, 0, 0],\n \"82\": [0, 0.68333, 0, 0],\n \"83\": [0, 0.68333, 0, 0],\n \"84\": [0, 0.68333, 0, 0],\n \"85\": [0, 0.68333, 0, 0],\n \"86\": [0, 0.68333, 0.01389, 0],\n \"87\": [0, 0.68333, 0.01389, 0],\n \"88\": [0, 0.68333, 0, 0],\n \"89\": [0, 0.68333, 0.025, 0],\n \"90\": [0, 0.68333, 0, 0],\n \"91\": [0.25, 0.75, 0, 0],\n \"92\": [0.25, 0.75, 0, 0],\n \"93\": [0.25, 0.75, 0, 0],\n \"94\": [0, 0.69444, 0, 0],\n \"95\": [0.31, 0.12056, 0.02778, 0],\n \"96\": [0, 0.69444, 0, 0],\n \"97\": [0, 0.43056, 0, 0],\n \"98\": [0, 0.69444, 0, 0],\n \"99\": [0, 0.43056, 0, 0],\n \"100\": [0, 0.69444, 0, 0],\n \"101\": [0, 0.43056, 0, 0],\n \"102\": [0, 0.69444, 0.07778, 0],\n \"103\": [0.19444, 0.43056, 0.01389, 0],\n \"104\": [0, 0.69444, 0, 0],\n \"105\": [0, 0.66786, 0, 0],\n \"106\": [0.19444, 0.66786, 0, 0],\n \"107\": [0, 0.69444, 0, 0],\n \"108\": [0, 0.69444, 0, 0],\n \"109\": [0, 0.43056, 0, 0],\n \"110\": [0, 0.43056, 0, 0],\n \"111\": [0, 0.43056, 0, 0],\n \"112\": [0.19444, 0.43056, 0, 0],\n \"113\": [0.19444, 0.43056, 0, 0],\n \"114\": [0, 0.43056, 0, 0],\n \"115\": [0, 0.43056, 0, 0],\n \"116\": [0, 0.61508, 0, 0],\n \"117\": [0, 0.43056, 0, 0],\n \"118\": [0, 0.43056, 0.01389, 0],\n \"119\": [0, 0.43056, 0.01389, 0],\n \"120\": [0, 0.43056, 0, 0],\n \"121\": [0.19444, 0.43056, 0.01389, 0],\n \"122\": [0, 0.43056, 0, 0],\n \"123\": [0.25, 0.75, 0, 0],\n \"124\": [0.25, 0.75, 0, 0],\n \"125\": [0.25, 0.75, 0, 0],\n \"126\": [0.35, 0.31786, 0, 0],\n \"160\": [0, 0, 0, 0],\n \"168\": [0, 0.66786, 0, 0],\n \"172\": [0, 0.43056, 0, 0],\n \"175\": [0, 0.56778, 0, 0],\n \"176\": [0, 0.69444, 0, 0],\n \"177\": [0.08333, 0.58333, 0, 0],\n \"180\": [0, 0.69444, 0, 0],\n \"215\": [0.08333, 0.58333, 0, 0],\n \"247\": [0.08333, 0.58333, 0, 0],\n \"305\": [0, 0.43056, 0, 0],\n \"567\": [0.19444, 0.43056, 0, 0],\n \"710\": [0, 0.69444, 0, 0],\n \"711\": [0, 0.62847, 0, 0],\n \"713\": [0, 0.56778, 0, 0],\n \"714\": [0, 0.69444, 0, 0],\n \"715\": [0, 0.69444, 0, 0],\n \"728\": [0, 0.69444, 0, 0],\n \"729\": [0, 0.66786, 0, 0],\n \"730\": [0, 0.69444, 0, 0],\n \"732\": [0, 0.66786, 0, 0],\n \"768\": [0, 0.69444, 0, 0],\n \"769\": [0, 0.69444, 0, 0],\n \"770\": [0, 0.69444, 0, 0],\n \"771\": [0, 0.66786, 0, 0],\n \"772\": [0, 0.56778, 0, 0],\n \"774\": [0, 0.69444, 0, 0],\n \"775\": [0, 0.66786, 0, 0],\n \"776\": [0, 0.66786, 0, 0],\n \"778\": [0, 0.69444, 0, 0],\n \"779\": [0, 0.69444, 0, 0],\n \"780\": [0, 0.62847, 0, 0],\n \"824\": [0.19444, 0.69444, 0, 0],\n \"915\": [0, 0.68333, 0, 0],\n \"916\": [0, 0.68333, 0, 0],\n \"920\": [0, 0.68333, 0, 0],\n \"923\": [0, 0.68333, 0, 0],\n \"926\": [0, 0.68333, 0, 0],\n \"928\": [0, 0.68333, 0, 0],\n \"931\": [0, 0.68333, 0, 0],\n \"933\": [0, 0.68333, 0, 0],\n \"934\": [0, 0.68333, 0, 0],\n \"936\": [0, 0.68333, 0, 0],\n \"937\": [0, 0.68333, 0, 0],\n \"8211\": [0, 0.43056, 0.02778, 0],\n \"8212\": [0, 0.43056, 0.02778, 0],\n \"8216\": [0, 0.69444, 0, 0],\n \"8217\": [0, 0.69444, 0, 0],\n \"8220\": [0, 0.69444, 0, 0],\n \"8221\": [0, 0.69444, 0, 0],\n \"8224\": [0.19444, 0.69444, 0, 0],\n \"8225\": [0.19444, 0.69444, 0, 0],\n \"8230\": [0, 0.12, 0, 0],\n \"8242\": [0, 0.55556, 0, 0],\n \"8407\": [0, 0.71444, 0.15382, 0],\n \"8463\": [0, 0.68889, 0, 0],\n \"8465\": [0, 0.69444, 0, 0],\n \"8467\": [0, 0.69444, 0, 0.11111],\n \"8472\": [0.19444, 0.43056, 0, 0.11111],\n \"8476\": [0, 0.69444, 0, 0],\n \"8501\": [0, 0.69444, 0, 0],\n \"8592\": [-0.13313, 0.36687, 0, 0],\n \"8593\": [0.19444, 0.69444, 0, 0],\n \"8594\": [-0.13313, 0.36687, 0, 0],\n \"8595\": [0.19444, 0.69444, 0, 0],\n \"8596\": [-0.13313, 0.36687, 0, 0],\n \"8597\": [0.25, 0.75, 0, 0],\n \"8598\": [0.19444, 0.69444, 0, 0],\n \"8599\": [0.19444, 0.69444, 0, 0],\n \"8600\": [0.19444, 0.69444, 0, 0],\n \"8601\": [0.19444, 0.69444, 0, 0],\n \"8614\": [0.011, 0.511, 0, 0],\n \"8617\": [0.011, 0.511, 0, 0],\n \"8618\": [0.011, 0.511, 0, 0],\n \"8636\": [-0.13313, 0.36687, 0, 0],\n \"8637\": [-0.13313, 0.36687, 0, 0],\n \"8640\": [-0.13313, 0.36687, 0, 0],\n \"8641\": [-0.13313, 0.36687, 0, 0],\n \"8652\": [0.011, 0.671, 0, 0],\n \"8656\": [-0.13313, 0.36687, 0, 0],\n \"8657\": [0.19444, 0.69444, 0, 0],\n \"8658\": [-0.13313, 0.36687, 0, 0],\n \"8659\": [0.19444, 0.69444, 0, 0],\n \"8660\": [-0.13313, 0.36687, 0, 0],\n \"8661\": [0.25, 0.75, 0, 0],\n \"8704\": [0, 0.69444, 0, 0],\n \"8706\": [0, 0.69444, 0.05556, 0.08334],\n \"8707\": [0, 0.69444, 0, 0],\n \"8709\": [0.05556, 0.75, 0, 0],\n \"8711\": [0, 0.68333, 0, 0],\n \"8712\": [0.0391, 0.5391, 0, 0],\n \"8715\": [0.0391, 0.5391, 0, 0],\n \"8722\": [0.08333, 0.58333, 0, 0],\n \"8723\": [0.08333, 0.58333, 0, 0],\n \"8725\": [0.25, 0.75, 0, 0],\n \"8726\": [0.25, 0.75, 0, 0],\n \"8727\": [-0.03472, 0.46528, 0, 0],\n \"8728\": [-0.05555, 0.44445, 0, 0],\n \"8729\": [-0.05555, 0.44445, 0, 0],\n \"8730\": [0.2, 0.8, 0, 0],\n \"8733\": [0, 0.43056, 0, 0],\n \"8734\": [0, 0.43056, 0, 0],\n \"8736\": [0, 0.69224, 0, 0],\n \"8739\": [0.25, 0.75, 0, 0],\n \"8741\": [0.25, 0.75, 0, 0],\n \"8743\": [0, 0.55556, 0, 0],\n \"8744\": [0, 0.55556, 0, 0],\n \"8745\": [0, 0.55556, 0, 0],\n \"8746\": [0, 0.55556, 0, 0],\n \"8747\": [0.19444, 0.69444, 0.11111, 0],\n \"8764\": [-0.13313, 0.36687, 0, 0],\n \"8768\": [0.19444, 0.69444, 0, 0],\n \"8771\": [-0.03625, 0.46375, 0, 0],\n \"8773\": [-0.022, 0.589, 0, 0],\n \"8776\": [-0.01688, 0.48312, 0, 0],\n \"8781\": [-0.03625, 0.46375, 0, 0],\n \"8784\": [-0.133, 0.67, 0, 0],\n \"8800\": [0.215, 0.716, 0, 0],\n \"8801\": [-0.03625, 0.46375, 0, 0],\n \"8804\": [0.13597, 0.63597, 0, 0],\n \"8805\": [0.13597, 0.63597, 0, 0],\n \"8810\": [0.0391, 0.5391, 0, 0],\n \"8811\": [0.0391, 0.5391, 0, 0],\n \"8826\": [0.0391, 0.5391, 0, 0],\n \"8827\": [0.0391, 0.5391, 0, 0],\n \"8834\": [0.0391, 0.5391, 0, 0],\n \"8835\": [0.0391, 0.5391, 0, 0],\n \"8838\": [0.13597, 0.63597, 0, 0],\n \"8839\": [0.13597, 0.63597, 0, 0],\n \"8846\": [0, 0.55556, 0, 0],\n \"8849\": [0.13597, 0.63597, 0, 0],\n \"8850\": [0.13597, 0.63597, 0, 0],\n \"8851\": [0, 0.55556, 0, 0],\n \"8852\": [0, 0.55556, 0, 0],\n \"8853\": [0.08333, 0.58333, 0, 0],\n \"8854\": [0.08333, 0.58333, 0, 0],\n \"8855\": [0.08333, 0.58333, 0, 0],\n \"8856\": [0.08333, 0.58333, 0, 0],\n \"8857\": [0.08333, 0.58333, 0, 0],\n \"8866\": [0, 0.69444, 0, 0],\n \"8867\": [0, 0.69444, 0, 0],\n \"8868\": [0, 0.69444, 0, 0],\n \"8869\": [0, 0.69444, 0, 0],\n \"8872\": [0.249, 0.75, 0, 0],\n \"8900\": [-0.05555, 0.44445, 0, 0],\n \"8901\": [-0.05555, 0.44445, 0, 0],\n \"8902\": [-0.03472, 0.46528, 0, 0],\n \"8904\": [0.005, 0.505, 0, 0],\n \"8942\": [0.03, 0.9, 0, 0],\n \"8943\": [-0.19, 0.31, 0, 0],\n \"8945\": [-0.1, 0.82, 0, 0],\n \"8968\": [0.25, 0.75, 0, 0],\n \"8969\": [0.25, 0.75, 0, 0],\n \"8970\": [0.25, 0.75, 0, 0],\n \"8971\": [0.25, 0.75, 0, 0],\n \"8994\": [-0.14236, 0.35764, 0, 0],\n \"8995\": [-0.14236, 0.35764, 0, 0],\n \"9136\": [0.244, 0.744, 0, 0],\n \"9137\": [0.244, 0.744, 0, 0],\n \"9651\": [0.19444, 0.69444, 0, 0],\n \"9657\": [-0.03472, 0.46528, 0, 0],\n \"9661\": [0.19444, 0.69444, 0, 0],\n \"9667\": [-0.03472, 0.46528, 0, 0],\n \"9711\": [0.19444, 0.69444, 0, 0],\n \"9824\": [0.12963, 0.69444, 0, 0],\n \"9825\": [0.12963, 0.69444, 0, 0],\n \"9826\": [0.12963, 0.69444, 0, 0],\n \"9827\": [0.12963, 0.69444, 0, 0],\n \"9837\": [0, 0.75, 0, 0],\n \"9838\": [0.19444, 0.69444, 0, 0],\n \"9839\": [0.19444, 0.69444, 0, 0],\n \"10216\": [0.25, 0.75, 0, 0],\n \"10217\": [0.25, 0.75, 0, 0],\n \"10222\": [0.244, 0.744, 0, 0],\n \"10223\": [0.244, 0.744, 0, 0],\n \"10229\": [0.011, 0.511, 0, 0],\n \"10230\": [0.011, 0.511, 0, 0],\n \"10231\": [0.011, 0.511, 0, 0],\n \"10232\": [0.024, 0.525, 0, 0],\n \"10233\": [0.024, 0.525, 0, 0],\n \"10234\": [0.024, 0.525, 0, 0],\n \"10236\": [0.011, 0.511, 0, 0],\n \"10815\": [0, 0.68333, 0, 0],\n \"10927\": [0.13597, 0.63597, 0, 0],\n \"10928\": [0.13597, 0.63597, 0, 0]\n },\n \"Math-BoldItalic\": {\n \"47\": [0.19444, 0.69444, 0, 0],\n \"65\": [0, 0.68611, 0, 0],\n \"66\": [0, 0.68611, 0.04835, 0],\n \"67\": [0, 0.68611, 0.06979, 0],\n \"68\": [0, 0.68611, 0.03194, 0],\n \"69\": [0, 0.68611, 0.05451, 0],\n \"70\": [0, 0.68611, 0.15972, 0],\n \"71\": [0, 0.68611, 0, 0],\n \"72\": [0, 0.68611, 0.08229, 0],\n \"73\": [0, 0.68611, 0.07778, 0],\n \"74\": [0, 0.68611, 0.10069, 0],\n \"75\": [0, 0.68611, 0.06979, 0],\n \"76\": [0, 0.68611, 0, 0],\n \"77\": [0, 0.68611, 0.11424, 0],\n \"78\": [0, 0.68611, 0.11424, 0],\n \"79\": [0, 0.68611, 0.03194, 0],\n \"80\": [0, 0.68611, 0.15972, 0],\n \"81\": [0.19444, 0.68611, 0, 0],\n \"82\": [0, 0.68611, 0.00421, 0],\n \"83\": [0, 0.68611, 0.05382, 0],\n \"84\": [0, 0.68611, 0.15972, 0],\n \"85\": [0, 0.68611, 0.11424, 0],\n \"86\": [0, 0.68611, 0.25555, 0],\n \"87\": [0, 0.68611, 0.15972, 0],\n \"88\": [0, 0.68611, 0.07778, 0],\n \"89\": [0, 0.68611, 0.25555, 0],\n \"90\": [0, 0.68611, 0.06979, 0],\n \"97\": [0, 0.44444, 0, 0],\n \"98\": [0, 0.69444, 0, 0],\n \"99\": [0, 0.44444, 0, 0],\n \"100\": [0, 0.69444, 0, 0],\n \"101\": [0, 0.44444, 0, 0],\n \"102\": [0.19444, 0.69444, 0.11042, 0],\n \"103\": [0.19444, 0.44444, 0.03704, 0],\n \"104\": [0, 0.69444, 0, 0],\n \"105\": [0, 0.69326, 0, 0],\n \"106\": [0.19444, 0.69326, 0.0622, 0],\n \"107\": [0, 0.69444, 0.01852, 0],\n \"108\": [0, 0.69444, 0.0088, 0],\n \"109\": [0, 0.44444, 0, 0],\n \"110\": [0, 0.44444, 0, 0],\n \"111\": [0, 0.44444, 0, 0],\n \"112\": [0.19444, 0.44444, 0, 0],\n \"113\": [0.19444, 0.44444, 0.03704, 0],\n \"114\": [0, 0.44444, 0.03194, 0],\n \"115\": [0, 0.44444, 0, 0],\n \"116\": [0, 0.63492, 0, 0],\n \"117\": [0, 0.44444, 0, 0],\n \"118\": [0, 0.44444, 0.03704, 0],\n \"119\": [0, 0.44444, 0.02778, 0],\n \"120\": [0, 0.44444, 0, 0],\n \"121\": [0.19444, 0.44444, 0.03704, 0],\n \"122\": [0, 0.44444, 0.04213, 0],\n \"915\": [0, 0.68611, 0.15972, 0],\n \"916\": [0, 0.68611, 0, 0],\n \"920\": [0, 0.68611, 0.03194, 0],\n \"923\": [0, 0.68611, 0, 0],\n \"926\": [0, 0.68611, 0.07458, 0],\n \"928\": [0, 0.68611, 0.08229, 0],\n \"931\": [0, 0.68611, 0.05451, 0],\n \"933\": [0, 0.68611, 0.15972, 0],\n \"934\": [0, 0.68611, 0, 0],\n \"936\": [0, 0.68611, 0.11653, 0],\n \"937\": [0, 0.68611, 0.04835, 0],\n \"945\": [0, 0.44444, 0, 0],\n \"946\": [0.19444, 0.69444, 0.03403, 0],\n \"947\": [0.19444, 0.44444, 0.06389, 0],\n \"948\": [0, 0.69444, 0.03819, 0],\n \"949\": [0, 0.44444, 0, 0],\n \"950\": [0.19444, 0.69444, 0.06215, 0],\n \"951\": [0.19444, 0.44444, 0.03704, 0],\n \"952\": [0, 0.69444, 0.03194, 0],\n \"953\": [0, 0.44444, 0, 0],\n \"954\": [0, 0.44444, 0, 0],\n \"955\": [0, 0.69444, 0, 0],\n \"956\": [0.19444, 0.44444, 0, 0],\n \"957\": [0, 0.44444, 0.06898, 0],\n \"958\": [0.19444, 0.69444, 0.03021, 0],\n \"959\": [0, 0.44444, 0, 0],\n \"960\": [0, 0.44444, 0.03704, 0],\n \"961\": [0.19444, 0.44444, 0, 0],\n \"962\": [0.09722, 0.44444, 0.07917, 0],\n \"963\": [0, 0.44444, 0.03704, 0],\n \"964\": [0, 0.44444, 0.13472, 0],\n \"965\": [0, 0.44444, 0.03704, 0],\n \"966\": [0.19444, 0.44444, 0, 0],\n \"967\": [0.19444, 0.44444, 0, 0],\n \"968\": [0.19444, 0.69444, 0.03704, 0],\n \"969\": [0, 0.44444, 0.03704, 0],\n \"977\": [0, 0.69444, 0, 0],\n \"981\": [0.19444, 0.69444, 0, 0],\n \"982\": [0, 0.44444, 0.03194, 0],\n \"1009\": [0.19444, 0.44444, 0, 0],\n \"1013\": [0, 0.44444, 0, 0]\n },\n \"Math-Italic\": {\n \"47\": [0.19444, 0.69444, 0, 0],\n \"65\": [0, 0.68333, 0, 0.13889],\n \"66\": [0, 0.68333, 0.05017, 0.08334],\n \"67\": [0, 0.68333, 0.07153, 0.08334],\n \"68\": [0, 0.68333, 0.02778, 0.05556],\n \"69\": [0, 0.68333, 0.05764, 0.08334],\n \"70\": [0, 0.68333, 0.13889, 0.08334],\n \"71\": [0, 0.68333, 0, 0.08334],\n \"72\": [0, 0.68333, 0.08125, 0.05556],\n \"73\": [0, 0.68333, 0.07847, 0.11111],\n \"74\": [0, 0.68333, 0.09618, 0.16667],\n \"75\": [0, 0.68333, 0.07153, 0.05556],\n \"76\": [0, 0.68333, 0, 0.02778],\n \"77\": [0, 0.68333, 0.10903, 0.08334],\n \"78\": [0, 0.68333, 0.10903, 0.08334],\n \"79\": [0, 0.68333, 0.02778, 0.08334],\n \"80\": [0, 0.68333, 0.13889, 0.08334],\n \"81\": [0.19444, 0.68333, 0, 0.08334],\n \"82\": [0, 0.68333, 0.00773, 0.08334],\n \"83\": [0, 0.68333, 0.05764, 0.08334],\n \"84\": [0, 0.68333, 0.13889, 0.08334],\n \"85\": [0, 0.68333, 0.10903, 0.02778],\n \"86\": [0, 0.68333, 0.22222, 0],\n \"87\": [0, 0.68333, 0.13889, 0],\n \"88\": [0, 0.68333, 0.07847, 0.08334],\n \"89\": [0, 0.68333, 0.22222, 0],\n \"90\": [0, 0.68333, 0.07153, 0.08334],\n \"97\": [0, 0.43056, 0, 0],\n \"98\": [0, 0.69444, 0, 0],\n \"99\": [0, 0.43056, 0, 0.05556],\n \"100\": [0, 0.69444, 0, 0.16667],\n \"101\": [0, 0.43056, 0, 0.05556],\n \"102\": [0.19444, 0.69444, 0.10764, 0.16667],\n \"103\": [0.19444, 0.43056, 0.03588, 0.02778],\n \"104\": [0, 0.69444, 0, 0],\n \"105\": [0, 0.65952, 0, 0],\n \"106\": [0.19444, 0.65952, 0.05724, 0],\n \"107\": [0, 0.69444, 0.03148, 0],\n \"108\": [0, 0.69444, 0.01968, 0.08334],\n \"109\": [0, 0.43056, 0, 0],\n \"110\": [0, 0.43056, 0, 0],\n \"111\": [0, 0.43056, 0, 0.05556],\n \"112\": [0.19444, 0.43056, 0, 0.08334],\n \"113\": [0.19444, 0.43056, 0.03588, 0.08334],\n \"114\": [0, 0.43056, 0.02778, 0.05556],\n \"115\": [0, 0.43056, 0, 0.05556],\n \"116\": [0, 0.61508, 0, 0.08334],\n \"117\": [0, 0.43056, 0, 0.02778],\n \"118\": [0, 0.43056, 0.03588, 0.02778],\n \"119\": [0, 0.43056, 0.02691, 0.08334],\n \"120\": [0, 0.43056, 0, 0.02778],\n \"121\": [0.19444, 0.43056, 0.03588, 0.05556],\n \"122\": [0, 0.43056, 0.04398, 0.05556],\n \"915\": [0, 0.68333, 0.13889, 0.08334],\n \"916\": [0, 0.68333, 0, 0.16667],\n \"920\": [0, 0.68333, 0.02778, 0.08334],\n \"923\": [0, 0.68333, 0, 0.16667],\n \"926\": [0, 0.68333, 0.07569, 0.08334],\n \"928\": [0, 0.68333, 0.08125, 0.05556],\n \"931\": [0, 0.68333, 0.05764, 0.08334],\n \"933\": [0, 0.68333, 0.13889, 0.05556],\n \"934\": [0, 0.68333, 0, 0.08334],\n \"936\": [0, 0.68333, 0.11, 0.05556],\n \"937\": [0, 0.68333, 0.05017, 0.08334],\n \"945\": [0, 0.43056, 0.0037, 0.02778],\n \"946\": [0.19444, 0.69444, 0.05278, 0.08334],\n \"947\": [0.19444, 0.43056, 0.05556, 0],\n \"948\": [0, 0.69444, 0.03785, 0.05556],\n \"949\": [0, 0.43056, 0, 0.08334],\n \"950\": [0.19444, 0.69444, 0.07378, 0.08334],\n \"951\": [0.19444, 0.43056, 0.03588, 0.05556],\n \"952\": [0, 0.69444, 0.02778, 0.08334],\n \"953\": [0, 0.43056, 0, 0.05556],\n \"954\": [0, 0.43056, 0, 0],\n \"955\": [0, 0.69444, 0, 0],\n \"956\": [0.19444, 0.43056, 0, 0.02778],\n \"957\": [0, 0.43056, 0.06366, 0.02778],\n \"958\": [0.19444, 0.69444, 0.04601, 0.11111],\n \"959\": [0, 0.43056, 0, 0.05556],\n \"960\": [0, 0.43056, 0.03588, 0],\n \"961\": [0.19444, 0.43056, 0, 0.08334],\n \"962\": [0.09722, 0.43056, 0.07986, 0.08334],\n \"963\": [0, 0.43056, 0.03588, 0],\n \"964\": [0, 0.43056, 0.1132, 0.02778],\n \"965\": [0, 0.43056, 0.03588, 0.02778],\n \"966\": [0.19444, 0.43056, 0, 0.08334],\n \"967\": [0.19444, 0.43056, 0, 0.05556],\n \"968\": [0.19444, 0.69444, 0.03588, 0.11111],\n \"969\": [0, 0.43056, 0.03588, 0],\n \"977\": [0, 0.69444, 0, 0.08334],\n \"981\": [0.19444, 0.69444, 0, 0.08334],\n \"982\": [0, 0.43056, 0.02778, 0],\n \"1009\": [0.19444, 0.43056, 0, 0.08334],\n \"1013\": [0, 0.43056, 0, 0.05556]\n },\n \"Math-Regular\": {\n \"65\": [0, 0.68333, 0, 0.13889],\n \"66\": [0, 0.68333, 0.05017, 0.08334],\n \"67\": [0, 0.68333, 0.07153, 0.08334],\n \"68\": [0, 0.68333, 0.02778, 0.05556],\n \"69\": [0, 0.68333, 0.05764, 0.08334],\n \"70\": [0, 0.68333, 0.13889, 0.08334],\n \"71\": [0, 0.68333, 0, 0.08334],\n \"72\": [0, 0.68333, 0.08125, 0.05556],\n \"73\": [0, 0.68333, 0.07847, 0.11111],\n \"74\": [0, 0.68333, 0.09618, 0.16667],\n \"75\": [0, 0.68333, 0.07153, 0.05556],\n \"76\": [0, 0.68333, 0, 0.02778],\n \"77\": [0, 0.68333, 0.10903, 0.08334],\n \"78\": [0, 0.68333, 0.10903, 0.08334],\n \"79\": [0, 0.68333, 0.02778, 0.08334],\n \"80\": [0, 0.68333, 0.13889, 0.08334],\n \"81\": [0.19444, 0.68333, 0, 0.08334],\n \"82\": [0, 0.68333, 0.00773, 0.08334],\n \"83\": [0, 0.68333, 0.05764, 0.08334],\n \"84\": [0, 0.68333, 0.13889, 0.08334],\n \"85\": [0, 0.68333, 0.10903, 0.02778],\n \"86\": [0, 0.68333, 0.22222, 0],\n \"87\": [0, 0.68333, 0.13889, 0],\n \"88\": [0, 0.68333, 0.07847, 0.08334],\n \"89\": [0, 0.68333, 0.22222, 0],\n \"90\": [0, 0.68333, 0.07153, 0.08334],\n \"97\": [0, 0.43056, 0, 0],\n \"98\": [0, 0.69444, 0, 0],\n \"99\": [0, 0.43056, 0, 0.05556],\n \"100\": [0, 0.69444, 0, 0.16667],\n \"101\": [0, 0.43056, 0, 0.05556],\n \"102\": [0.19444, 0.69444, 0.10764, 0.16667],\n \"103\": [0.19444, 0.43056, 0.03588, 0.02778],\n \"104\": [0, 0.69444, 0, 0],\n \"105\": [0, 0.65952, 0, 0],\n \"106\": [0.19444, 0.65952, 0.05724, 0],\n \"107\": [0, 0.69444, 0.03148, 0],\n \"108\": [0, 0.69444, 0.01968, 0.08334],\n \"109\": [0, 0.43056, 0, 0],\n \"110\": [0, 0.43056, 0, 0],\n \"111\": [0, 0.43056, 0, 0.05556],\n \"112\": [0.19444, 0.43056, 0, 0.08334],\n \"113\": [0.19444, 0.43056, 0.03588, 0.08334],\n \"114\": [0, 0.43056, 0.02778, 0.05556],\n \"115\": [0, 0.43056, 0, 0.05556],\n \"116\": [0, 0.61508, 0, 0.08334],\n \"117\": [0, 0.43056, 0, 0.02778],\n \"118\": [0, 0.43056, 0.03588, 0.02778],\n \"119\": [0, 0.43056, 0.02691, 0.08334],\n \"120\": [0, 0.43056, 0, 0.02778],\n \"121\": [0.19444, 0.43056, 0.03588, 0.05556],\n \"122\": [0, 0.43056, 0.04398, 0.05556],\n \"915\": [0, 0.68333, 0.13889, 0.08334],\n \"916\": [0, 0.68333, 0, 0.16667],\n \"920\": [0, 0.68333, 0.02778, 0.08334],\n \"923\": [0, 0.68333, 0, 0.16667],\n \"926\": [0, 0.68333, 0.07569, 0.08334],\n \"928\": [0, 0.68333, 0.08125, 0.05556],\n \"931\": [0, 0.68333, 0.05764, 0.08334],\n \"933\": [0, 0.68333, 0.13889, 0.05556],\n \"934\": [0, 0.68333, 0, 0.08334],\n \"936\": [0, 0.68333, 0.11, 0.05556],\n \"937\": [0, 0.68333, 0.05017, 0.08334],\n \"945\": [0, 0.43056, 0.0037, 0.02778],\n \"946\": [0.19444, 0.69444, 0.05278, 0.08334],\n \"947\": [0.19444, 0.43056, 0.05556, 0],\n \"948\": [0, 0.69444, 0.03785, 0.05556],\n \"949\": [0, 0.43056, 0, 0.08334],\n \"950\": [0.19444, 0.69444, 0.07378, 0.08334],\n \"951\": [0.19444, 0.43056, 0.03588, 0.05556],\n \"952\": [0, 0.69444, 0.02778, 0.08334],\n \"953\": [0, 0.43056, 0, 0.05556],\n \"954\": [0, 0.43056, 0, 0],\n \"955\": [0, 0.69444, 0, 0],\n \"956\": [0.19444, 0.43056, 0, 0.02778],\n \"957\": [0, 0.43056, 0.06366, 0.02778],\n \"958\": [0.19444, 0.69444, 0.04601, 0.11111],\n \"959\": [0, 0.43056, 0, 0.05556],\n \"960\": [0, 0.43056, 0.03588, 0],\n \"961\": [0.19444, 0.43056, 0, 0.08334],\n \"962\": [0.09722, 0.43056, 0.07986, 0.08334],\n \"963\": [0, 0.43056, 0.03588, 0],\n \"964\": [0, 0.43056, 0.1132, 0.02778],\n \"965\": [0, 0.43056, 0.03588, 0.02778],\n \"966\": [0.19444, 0.43056, 0, 0.08334],\n \"967\": [0.19444, 0.43056, 0, 0.05556],\n \"968\": [0.19444, 0.69444, 0.03588, 0.11111],\n \"969\": [0, 0.43056, 0.03588, 0],\n \"977\": [0, 0.69444, 0, 0.08334],\n \"981\": [0.19444, 0.69444, 0, 0.08334],\n \"982\": [0, 0.43056, 0.02778, 0],\n \"1009\": [0.19444, 0.43056, 0, 0.08334],\n \"1013\": [0, 0.43056, 0, 0.05556]\n },\n \"SansSerif-Regular\": {\n \"33\": [0, 0.69444, 0, 0],\n \"34\": [0, 0.69444, 0, 0],\n \"35\": [0.19444, 0.69444, 0, 0],\n \"36\": [0.05556, 0.75, 0, 0],\n \"37\": [0.05556, 0.75, 0, 0],\n \"38\": [0, 0.69444, 0, 0],\n \"39\": [0, 0.69444, 0, 0],\n \"40\": [0.25, 0.75, 0, 0],\n \"41\": [0.25, 0.75, 0, 0],\n \"42\": [0, 0.75, 0, 0],\n \"43\": [0.08333, 0.58333, 0, 0],\n \"44\": [0.125, 0.08333, 0, 0],\n \"45\": [0, 0.44444, 0, 0],\n \"46\": [0, 0.08333, 0, 0],\n \"47\": [0.25, 0.75, 0, 0],\n \"48\": [0, 0.65556, 0, 0],\n \"49\": [0, 0.65556, 0, 0],\n \"50\": [0, 0.65556, 0, 0],\n \"51\": [0, 0.65556, 0, 0],\n \"52\": [0, 0.65556, 0, 0],\n \"53\": [0, 0.65556, 0, 0],\n \"54\": [0, 0.65556, 0, 0],\n \"55\": [0, 0.65556, 0, 0],\n \"56\": [0, 0.65556, 0, 0],\n \"57\": [0, 0.65556, 0, 0],\n \"58\": [0, 0.44444, 0, 0],\n \"59\": [0.125, 0.44444, 0, 0],\n \"61\": [-0.13, 0.37, 0, 0],\n \"63\": [0, 0.69444, 0, 0],\n \"64\": [0, 0.69444, 0, 0],\n \"65\": [0, 0.69444, 0, 0],\n \"66\": [0, 0.69444, 0, 0],\n \"67\": [0, 0.69444, 0, 0],\n \"68\": [0, 0.69444, 0, 0],\n \"69\": [0, 0.69444, 0, 0],\n \"70\": [0, 0.69444, 0, 0],\n \"71\": [0, 0.69444, 0, 0],\n \"72\": [0, 0.69444, 0, 0],\n \"73\": [0, 0.69444, 0, 0],\n \"74\": [0, 0.69444, 0, 0],\n \"75\": [0, 0.69444, 0, 0],\n \"76\": [0, 0.69444, 0, 0],\n \"77\": [0, 0.69444, 0, 0],\n \"78\": [0, 0.69444, 0, 0],\n \"79\": [0, 0.69444, 0, 0],\n \"80\": [0, 0.69444, 0, 0],\n \"81\": [0.125, 0.69444, 0, 0],\n \"82\": [0, 0.69444, 0, 0],\n \"83\": [0, 0.69444, 0, 0],\n \"84\": [0, 0.69444, 0, 0],\n \"85\": [0, 0.69444, 0, 0],\n \"86\": [0, 0.69444, 0.01389, 0],\n \"87\": [0, 0.69444, 0.01389, 0],\n \"88\": [0, 0.69444, 0, 0],\n \"89\": [0, 0.69444, 0.025, 0],\n \"90\": [0, 0.69444, 0, 0],\n \"91\": [0.25, 0.75, 0, 0],\n \"93\": [0.25, 0.75, 0, 0],\n \"94\": [0, 0.69444, 0, 0],\n \"95\": [0.35, 0.09444, 0.02778, 0],\n \"97\": [0, 0.44444, 0, 0],\n \"98\": [0, 0.69444, 0, 0],\n \"99\": [0, 0.44444, 0, 0],\n \"100\": [0, 0.69444, 0, 0],\n \"101\": [0, 0.44444, 0, 0],\n \"102\": [0, 0.69444, 0.06944, 0],\n \"103\": [0.19444, 0.44444, 0.01389, 0],\n \"104\": [0, 0.69444, 0, 0],\n \"105\": [0, 0.67937, 0, 0],\n \"106\": [0.19444, 0.67937, 0, 0],\n \"107\": [0, 0.69444, 0, 0],\n \"108\": [0, 0.69444, 0, 0],\n \"109\": [0, 0.44444, 0, 0],\n \"110\": [0, 0.44444, 0, 0],\n \"111\": [0, 0.44444, 0, 0],\n \"112\": [0.19444, 0.44444, 0, 0],\n \"113\": [0.19444, 0.44444, 0, 0],\n \"114\": [0, 0.44444, 0.01389, 0],\n \"115\": [0, 0.44444, 0, 0],\n \"116\": [0, 0.57143, 0, 0],\n \"117\": [0, 0.44444, 0, 0],\n \"118\": [0, 0.44444, 0.01389, 0],\n \"119\": [0, 0.44444, 0.01389, 0],\n \"120\": [0, 0.44444, 0, 0],\n \"121\": [0.19444, 0.44444, 0.01389, 0],\n \"122\": [0, 0.44444, 0, 0],\n \"126\": [0.35, 0.32659, 0, 0],\n \"305\": [0, 0.44444, 0, 0],\n \"567\": [0.19444, 0.44444, 0, 0],\n \"768\": [0, 0.69444, 0, 0],\n \"769\": [0, 0.69444, 0, 0],\n \"770\": [0, 0.69444, 0, 0],\n \"771\": [0, 0.67659, 0, 0],\n \"772\": [0, 0.60889, 0, 0],\n \"774\": [0, 0.69444, 0, 0],\n \"775\": [0, 0.67937, 0, 0],\n \"776\": [0, 0.67937, 0, 0],\n \"778\": [0, 0.69444, 0, 0],\n \"779\": [0, 0.69444, 0, 0],\n \"780\": [0, 0.63194, 0, 0],\n \"915\": [0, 0.69444, 0, 0],\n \"916\": [0, 0.69444, 0, 0],\n \"920\": [0, 0.69444, 0, 0],\n \"923\": [0, 0.69444, 0, 0],\n \"926\": [0, 0.69444, 0, 0],\n \"928\": [0, 0.69444, 0, 0],\n \"931\": [0, 0.69444, 0, 0],\n \"933\": [0, 0.69444, 0, 0],\n \"934\": [0, 0.69444, 0, 0],\n \"936\": [0, 0.69444, 0, 0],\n \"937\": [0, 0.69444, 0, 0],\n \"8211\": [0, 0.44444, 0.02778, 0],\n \"8212\": [0, 0.44444, 0.02778, 0],\n \"8216\": [0, 0.69444, 0, 0],\n \"8217\": [0, 0.69444, 0, 0],\n \"8220\": [0, 0.69444, 0, 0],\n \"8221\": [0, 0.69444, 0, 0]\n },\n \"Script-Regular\": {\n \"65\": [0, 0.7, 0.22925, 0],\n \"66\": [0, 0.7, 0.04087, 0],\n \"67\": [0, 0.7, 0.1689, 0],\n \"68\": [0, 0.7, 0.09371, 0],\n \"69\": [0, 0.7, 0.18583, 0],\n \"70\": [0, 0.7, 0.13634, 0],\n \"71\": [0, 0.7, 0.17322, 0],\n \"72\": [0, 0.7, 0.29694, 0],\n \"73\": [0, 0.7, 0.19189, 0],\n \"74\": [0.27778, 0.7, 0.19189, 0],\n \"75\": [0, 0.7, 0.31259, 0],\n \"76\": [0, 0.7, 0.19189, 0],\n \"77\": [0, 0.7, 0.15981, 0],\n \"78\": [0, 0.7, 0.3525, 0],\n \"79\": [0, 0.7, 0.08078, 0],\n \"80\": [0, 0.7, 0.08078, 0],\n \"81\": [0, 0.7, 0.03305, 0],\n \"82\": [0, 0.7, 0.06259, 0],\n \"83\": [0, 0.7, 0.19189, 0],\n \"84\": [0, 0.7, 0.29087, 0],\n \"85\": [0, 0.7, 0.25815, 0],\n \"86\": [0, 0.7, 0.27523, 0],\n \"87\": [0, 0.7, 0.27523, 0],\n \"88\": [0, 0.7, 0.26006, 0],\n \"89\": [0, 0.7, 0.2939, 0],\n \"90\": [0, 0.7, 0.24037, 0]\n },\n \"Size1-Regular\": {\n \"40\": [0.35001, 0.85, 0, 0],\n \"41\": [0.35001, 0.85, 0, 0],\n \"47\": [0.35001, 0.85, 0, 0],\n \"91\": [0.35001, 0.85, 0, 0],\n \"92\": [0.35001, 0.85, 0, 0],\n \"93\": [0.35001, 0.85, 0, 0],\n \"123\": [0.35001, 0.85, 0, 0],\n \"125\": [0.35001, 0.85, 0, 0],\n \"710\": [0, 0.72222, 0, 0],\n \"732\": [0, 0.72222, 0, 0],\n \"770\": [0, 0.72222, 0, 0],\n \"771\": [0, 0.72222, 0, 0],\n \"8214\": [-0.00099, 0.601, 0, 0],\n \"8593\": [1e-05, 0.6, 0, 0],\n \"8595\": [1e-05, 0.6, 0, 0],\n \"8657\": [1e-05, 0.6, 0, 0],\n \"8659\": [1e-05, 0.6, 0, 0],\n \"8719\": [0.25001, 0.75, 0, 0],\n \"8720\": [0.25001, 0.75, 0, 0],\n \"8721\": [0.25001, 0.75, 0, 0],\n \"8730\": [0.35001, 0.85, 0, 0],\n \"8739\": [-0.00599, 0.606, 0, 0],\n \"8741\": [-0.00599, 0.606, 0, 0],\n \"8747\": [0.30612, 0.805, 0.19445, 0],\n \"8748\": [0.306, 0.805, 0.19445, 0],\n \"8749\": [0.306, 0.805, 0.19445, 0],\n \"8750\": [0.30612, 0.805, 0.19445, 0],\n \"8896\": [0.25001, 0.75, 0, 0],\n \"8897\": [0.25001, 0.75, 0, 0],\n \"8898\": [0.25001, 0.75, 0, 0],\n \"8899\": [0.25001, 0.75, 0, 0],\n \"8968\": [0.35001, 0.85, 0, 0],\n \"8969\": [0.35001, 0.85, 0, 0],\n \"8970\": [0.35001, 0.85, 0, 0],\n \"8971\": [0.35001, 0.85, 0, 0],\n \"9168\": [-0.00099, 0.601, 0, 0],\n \"10216\": [0.35001, 0.85, 0, 0],\n \"10217\": [0.35001, 0.85, 0, 0],\n \"10752\": [0.25001, 0.75, 0, 0],\n \"10753\": [0.25001, 0.75, 0, 0],\n \"10754\": [0.25001, 0.75, 0, 0],\n \"10756\": [0.25001, 0.75, 0, 0],\n \"10758\": [0.25001, 0.75, 0, 0]\n },\n \"Size2-Regular\": {\n \"40\": [0.65002, 1.15, 0, 0],\n \"41\": [0.65002, 1.15, 0, 0],\n \"47\": [0.65002, 1.15, 0, 0],\n \"91\": [0.65002, 1.15, 0, 0],\n \"92\": [0.65002, 1.15, 0, 0],\n \"93\": [0.65002, 1.15, 0, 0],\n \"123\": [0.65002, 1.15, 0, 0],\n \"125\": [0.65002, 1.15, 0, 0],\n \"710\": [0, 0.75, 0, 0],\n \"732\": [0, 0.75, 0, 0],\n \"770\": [0, 0.75, 0, 0],\n \"771\": [0, 0.75, 0, 0],\n \"8719\": [0.55001, 1.05, 0, 0],\n \"8720\": [0.55001, 1.05, 0, 0],\n \"8721\": [0.55001, 1.05, 0, 0],\n \"8730\": [0.65002, 1.15, 0, 0],\n \"8747\": [0.86225, 1.36, 0.44445, 0],\n \"8748\": [0.862, 1.36, 0.44445, 0],\n \"8749\": [0.862, 1.36, 0.44445, 0],\n \"8750\": [0.86225, 1.36, 0.44445, 0],\n \"8896\": [0.55001, 1.05, 0, 0],\n \"8897\": [0.55001, 1.05, 0, 0],\n \"8898\": [0.55001, 1.05, 0, 0],\n \"8899\": [0.55001, 1.05, 0, 0],\n \"8968\": [0.65002, 1.15, 0, 0],\n \"8969\": [0.65002, 1.15, 0, 0],\n \"8970\": [0.65002, 1.15, 0, 0],\n \"8971\": [0.65002, 1.15, 0, 0],\n \"10216\": [0.65002, 1.15, 0, 0],\n \"10217\": [0.65002, 1.15, 0, 0],\n \"10752\": [0.55001, 1.05, 0, 0],\n \"10753\": [0.55001, 1.05, 0, 0],\n \"10754\": [0.55001, 1.05, 0, 0],\n \"10756\": [0.55001, 1.05, 0, 0],\n \"10758\": [0.55001, 1.05, 0, 0]\n },\n \"Size3-Regular\": {\n \"40\": [0.95003, 1.45, 0, 0],\n \"41\": [0.95003, 1.45, 0, 0],\n \"47\": [0.95003, 1.45, 0, 0],\n \"91\": [0.95003, 1.45, 0, 0],\n \"92\": [0.95003, 1.45, 0, 0],\n \"93\": [0.95003, 1.45, 0, 0],\n \"123\": [0.95003, 1.45, 0, 0],\n \"125\": [0.95003, 1.45, 0, 0],\n \"710\": [0, 0.75, 0, 0],\n \"732\": [0, 0.75, 0, 0],\n \"770\": [0, 0.75, 0, 0],\n \"771\": [0, 0.75, 0, 0],\n \"8730\": [0.95003, 1.45, 0, 0],\n \"8968\": [0.95003, 1.45, 0, 0],\n \"8969\": [0.95003, 1.45, 0, 0],\n \"8970\": [0.95003, 1.45, 0, 0],\n \"8971\": [0.95003, 1.45, 0, 0],\n \"10216\": [0.95003, 1.45, 0, 0],\n \"10217\": [0.95003, 1.45, 0, 0]\n },\n \"Size4-Regular\": {\n \"40\": [1.25003, 1.75, 0, 0],\n \"41\": [1.25003, 1.75, 0, 0],\n \"47\": [1.25003, 1.75, 0, 0],\n \"91\": [1.25003, 1.75, 0, 0],\n \"92\": [1.25003, 1.75, 0, 0],\n \"93\": [1.25003, 1.75, 0, 0],\n \"123\": [1.25003, 1.75, 0, 0],\n \"125\": [1.25003, 1.75, 0, 0],\n \"710\": [0, 0.825, 0, 0],\n \"732\": [0, 0.825, 0, 0],\n \"770\": [0, 0.825, 0, 0],\n \"771\": [0, 0.825, 0, 0],\n \"8730\": [1.25003, 1.75, 0, 0],\n \"8968\": [1.25003, 1.75, 0, 0],\n \"8969\": [1.25003, 1.75, 0, 0],\n \"8970\": [1.25003, 1.75, 0, 0],\n \"8971\": [1.25003, 1.75, 0, 0],\n \"9115\": [0.64502, 1.155, 0, 0],\n \"9116\": [1e-05, 0.6, 0, 0],\n \"9117\": [0.64502, 1.155, 0, 0],\n \"9118\": [0.64502, 1.155, 0, 0],\n \"9119\": [1e-05, 0.6, 0, 0],\n \"9120\": [0.64502, 1.155, 0, 0],\n \"9121\": [0.64502, 1.155, 0, 0],\n \"9122\": [-0.00099, 0.601, 0, 0],\n \"9123\": [0.64502, 1.155, 0, 0],\n \"9124\": [0.64502, 1.155, 0, 0],\n \"9125\": [-0.00099, 0.601, 0, 0],\n \"9126\": [0.64502, 1.155, 0, 0],\n \"9127\": [1e-05, 0.9, 0, 0],\n \"9128\": [0.65002, 1.15, 0, 0],\n \"9129\": [0.90001, 0, 0, 0],\n \"9130\": [0, 0.3, 0, 0],\n \"9131\": [1e-05, 0.9, 0, 0],\n \"9132\": [0.65002, 1.15, 0, 0],\n \"9133\": [0.90001, 0, 0, 0],\n \"9143\": [0.88502, 0.915, 0, 0],\n \"10216\": [1.25003, 1.75, 0, 0],\n \"10217\": [1.25003, 1.75, 0, 0],\n \"57344\": [-0.00499, 0.605, 0, 0],\n \"57345\": [-0.00499, 0.605, 0, 0],\n \"57680\": [0, 0.12, 0, 0],\n \"57681\": [0, 0.12, 0, 0],\n \"57682\": [0, 0.12, 0, 0],\n \"57683\": [0, 0.12, 0, 0]\n },\n \"Typewriter-Regular\": {\n \"33\": [0, 0.61111, 0, 0],\n \"34\": [0, 0.61111, 0, 0],\n \"35\": [0, 0.61111, 0, 0],\n \"36\": [0.08333, 0.69444, 0, 0],\n \"37\": [0.08333, 0.69444, 0, 0],\n \"38\": [0, 0.61111, 0, 0],\n \"39\": [0, 0.61111, 0, 0],\n \"40\": [0.08333, 0.69444, 0, 0],\n \"41\": [0.08333, 0.69444, 0, 0],\n \"42\": [0, 0.52083, 0, 0],\n \"43\": [-0.08056, 0.53055, 0, 0],\n \"44\": [0.13889, 0.125, 0, 0],\n \"45\": [-0.08056, 0.53055, 0, 0],\n \"46\": [0, 0.125, 0, 0],\n \"47\": [0.08333, 0.69444, 0, 0],\n \"48\": [0, 0.61111, 0, 0],\n \"49\": [0, 0.61111, 0, 0],\n \"50\": [0, 0.61111, 0, 0],\n \"51\": [0, 0.61111, 0, 0],\n \"52\": [0, 0.61111, 0, 0],\n \"53\": [0, 0.61111, 0, 0],\n \"54\": [0, 0.61111, 0, 0],\n \"55\": [0, 0.61111, 0, 0],\n \"56\": [0, 0.61111, 0, 0],\n \"57\": [0, 0.61111, 0, 0],\n \"58\": [0, 0.43056, 0, 0],\n \"59\": [0.13889, 0.43056, 0, 0],\n \"60\": [-0.05556, 0.55556, 0, 0],\n \"61\": [-0.19549, 0.41562, 0, 0],\n \"62\": [-0.05556, 0.55556, 0, 0],\n \"63\": [0, 0.61111, 0, 0],\n \"64\": [0, 0.61111, 0, 0],\n \"65\": [0, 0.61111, 0, 0],\n \"66\": [0, 0.61111, 0, 0],\n \"67\": [0, 0.61111, 0, 0],\n \"68\": [0, 0.61111, 0, 0],\n \"69\": [0, 0.61111, 0, 0],\n \"70\": [0, 0.61111, 0, 0],\n \"71\": [0, 0.61111, 0, 0],\n \"72\": [0, 0.61111, 0, 0],\n \"73\": [0, 0.61111, 0, 0],\n \"74\": [0, 0.61111, 0, 0],\n \"75\": [0, 0.61111, 0, 0],\n \"76\": [0, 0.61111, 0, 0],\n \"77\": [0, 0.61111, 0, 0],\n \"78\": [0, 0.61111, 0, 0],\n \"79\": [0, 0.61111, 0, 0],\n \"80\": [0, 0.61111, 0, 0],\n \"81\": [0.13889, 0.61111, 0, 0],\n \"82\": [0, 0.61111, 0, 0],\n \"83\": [0, 0.61111, 0, 0],\n \"84\": [0, 0.61111, 0, 0],\n \"85\": [0, 0.61111, 0, 0],\n \"86\": [0, 0.61111, 0, 0],\n \"87\": [0, 0.61111, 0, 0],\n \"88\": [0, 0.61111, 0, 0],\n \"89\": [0, 0.61111, 0, 0],\n \"90\": [0, 0.61111, 0, 0],\n \"91\": [0.08333, 0.69444, 0, 0],\n \"92\": [0.08333, 0.69444, 0, 0],\n \"93\": [0.08333, 0.69444, 0, 0],\n \"94\": [0, 0.61111, 0, 0],\n \"95\": [0.09514, 0, 0, 0],\n \"96\": [0, 0.61111, 0, 0],\n \"97\": [0, 0.43056, 0, 0],\n \"98\": [0, 0.61111, 0, 0],\n \"99\": [0, 0.43056, 0, 0],\n \"100\": [0, 0.61111, 0, 0],\n \"101\": [0, 0.43056, 0, 0],\n \"102\": [0, 0.61111, 0, 0],\n \"103\": [0.22222, 0.43056, 0, 0],\n \"104\": [0, 0.61111, 0, 0],\n \"105\": [0, 0.61111, 0, 0],\n \"106\": [0.22222, 0.61111, 0, 0],\n \"107\": [0, 0.61111, 0, 0],\n \"108\": [0, 0.61111, 0, 0],\n \"109\": [0, 0.43056, 0, 0],\n \"110\": [0, 0.43056, 0, 0],\n \"111\": [0, 0.43056, 0, 0],\n \"112\": [0.22222, 0.43056, 0, 0],\n \"113\": [0.22222, 0.43056, 0, 0],\n \"114\": [0, 0.43056, 0, 0],\n \"115\": [0, 0.43056, 0, 0],\n \"116\": [0, 0.55358, 0, 0],\n \"117\": [0, 0.43056, 0, 0],\n \"118\": [0, 0.43056, 0, 0],\n \"119\": [0, 0.43056, 0, 0],\n \"120\": [0, 0.43056, 0, 0],\n \"121\": [0.22222, 0.43056, 0, 0],\n \"122\": [0, 0.43056, 0, 0],\n \"123\": [0.08333, 0.69444, 0, 0],\n \"124\": [0.08333, 0.69444, 0, 0],\n \"125\": [0.08333, 0.69444, 0, 0],\n \"126\": [0, 0.61111, 0, 0],\n \"127\": [0, 0.61111, 0, 0],\n \"305\": [0, 0.43056, 0, 0],\n \"567\": [0.22222, 0.43056, 0, 0],\n \"768\": [0, 0.61111, 0, 0],\n \"769\": [0, 0.61111, 0, 0],\n \"770\": [0, 0.61111, 0, 0],\n \"771\": [0, 0.61111, 0, 0],\n \"772\": [0, 0.56555, 0, 0],\n \"774\": [0, 0.61111, 0, 0],\n \"776\": [0, 0.61111, 0, 0],\n \"778\": [0, 0.61111, 0, 0],\n \"780\": [0, 0.56597, 0, 0],\n \"915\": [0, 0.61111, 0, 0],\n \"916\": [0, 0.61111, 0, 0],\n \"920\": [0, 0.61111, 0, 0],\n \"923\": [0, 0.61111, 0, 0],\n \"926\": [0, 0.61111, 0, 0],\n \"928\": [0, 0.61111, 0, 0],\n \"931\": [0, 0.61111, 0, 0],\n \"933\": [0, 0.61111, 0, 0],\n \"934\": [0, 0.61111, 0, 0],\n \"936\": [0, 0.61111, 0, 0],\n \"937\": [0, 0.61111, 0, 0],\n \"2018\": [0, 0.61111, 0, 0],\n \"2019\": [0, 0.61111, 0, 0],\n \"8242\": [0, 0.61111, 0, 0]\n }\n};\n","/* eslint no-unused-vars:0 */\n\nvar Style = require(\"./Style\");\nvar cjkRegex = require(\"./unicodeRegexes\").cjkRegex;\n\n/**\n * This file contains metrics regarding fonts and individual symbols. The sigma\n * and xi variables, as well as the metricMap map contain data extracted from\n * TeX, TeX font metrics, and the TTF files. These data are then exposed via the\n * `metrics` variable and the getCharacterMetrics function.\n */\n\n// In TeX, there are actually three sets of dimensions, one for each of\n// textstyle, scriptstyle, and scriptscriptstyle. These are provided in the\n// the arrays below, in that order.\n//\n// The font metrics are stored in fonts cmsy10, cmsy7, and cmsy5 respsectively.\n// This was determined by running the folllowing script:\n//\n// latex -interaction=nonstopmode \\\n// '\\documentclass{article}\\usepackage{amsmath}\\begin{document}' \\\n// '$a$ \\expandafter\\show\\the\\textfont2' \\\n// '\\expandafter\\show\\the\\scriptfont2' \\\n// '\\expandafter\\show\\the\\scriptscriptfont2' \\\n// '\\stop'\n//\n// The metrics themselves were retreived using the following commands:\n//\n// tftopl cmsy10\n// tftopl cmsy7\n// tftopl cmsy5\n//\n// The output of each of these commands is quite lengthy. The only part we\n// care about is the FONTDIMEN section. Each value is measured in EMs.\nvar sigmas = {\n slant: [0.250, 0.250, 0.250], // sigma1\n space: [0.000, 0.000, 0.000], // sigma2\n stretch: [0.000, 0.000, 0.000], // sigma3\n shrink: [0.000, 0.000, 0.000], // sigma4\n xHeight: [0.431, 0.431, 0.431], // sigma5\n quad: [1.000, 1.171, 1.472], // sigma6\n extraSpace: [0.000, 0.000, 0.000], // sigma7\n num1: [0.677, 0.732, 0.925], // sigma8\n num2: [0.394, 0.384, 0.387], // sigma9\n num3: [0.444, 0.471, 0.504], // sigma10\n denom1: [0.686, 0.752, 1.025], // sigma11\n denom2: [0.345, 0.344, 0.532], // sigma12\n sup1: [0.413, 0.503, 0.504], // sigma13\n sup2: [0.363, 0.431, 0.404], // sigma14\n sup3: [0.289, 0.286, 0.294], // sigma15\n sub1: [0.150, 0.143, 0.200], // sigma16\n sub2: [0.247, 0.286, 0.400], // sigma17\n supDrop: [0.386, 0.353, 0.494], // sigma18\n subDrop: [0.050, 0.071, 0.100], // sigma19\n delim1: [2.390, 1.700, 1.980], // sigma20\n delim2: [1.010, 1.157, 1.420], // sigma21\n axisHeight: [0.250, 0.250, 0.250] // sigma22\n};\n\n// These font metrics are extracted from TeX by using\n// \\font\\a=cmex10\n// \\showthe\\fontdimenX\\a\n// where X is the corresponding variable number. These correspond to the font\n// parameters of the extension fonts (family 3). See the TeXbook, page 441.\nvar xi1 = 0;\nvar xi2 = 0;\nvar xi3 = 0;\nvar xi4 = 0;\nvar xi5 = 0.431;\nvar xi6 = 1;\nvar xi7 = 0;\nvar xi8 = 0.04;\nvar xi9 = 0.111;\nvar xi10 = 0.166;\nvar xi11 = 0.2;\nvar xi12 = 0.6;\nvar xi13 = 0.1;\n\n// This value determines how large a pt is, for metrics which are defined in\n// terms of pts.\n// This value is also used in katex.less; if you change it make sure the values\n// match.\nvar ptPerEm = 10.0;\n\n// The space between adjacent `|` columns in an array definition. From\n// `\\showthe\\doublerulesep` in LaTeX.\nvar doubleRuleSep = 2.0 / ptPerEm;\n\n/**\n * This is just a mapping from common names to real metrics\n */\nvar metrics = {\n defaultRuleThickness: xi8,\n bigOpSpacing1: xi9,\n bigOpSpacing2: xi10,\n bigOpSpacing3: xi11,\n bigOpSpacing4: xi12,\n bigOpSpacing5: xi13,\n ptPerEm: ptPerEm,\n doubleRuleSep: doubleRuleSep\n};\n\n// This map contains a mapping from font name and character code to character\n// metrics, including height, depth, italic correction, and skew (kern from the\n// character to the corresponding \\skewchar)\n// This map is generated via `make metrics`. It should not be changed manually.\nvar metricMap = require(\"./fontMetricsData\");\n\n// These are very rough approximations. We default to Times New Roman which\n// should have Latin-1 and Cyrillic characters, but may not depending on the\n// operating system. The metrics do not account for extra height from the\n// accents. In the case of Cyrillic characters which have both ascenders and\n// descenders we prefer approximations with ascenders, primarily to prevent\n// the fraction bar or root line from intersecting the glyph.\n// TODO(kevinb) allow union of multiple glyph metrics for better accuracy.\nvar extraCharacterMap = {\n // Latin-1\n 'À': 'A',\n 'Á': 'A',\n 'Â': 'A',\n 'Ã': 'A',\n 'Ä': 'A',\n 'Å': 'A',\n 'Æ': 'A',\n 'Ç': 'C',\n 'È': 'E',\n 'É': 'E',\n 'Ê': 'E',\n 'Ë': 'E',\n 'Ì': 'I',\n 'Í': 'I',\n 'Î': 'I',\n 'Ï': 'I',\n 'Ð': 'D',\n 'Ñ': 'N',\n 'Ò': 'O',\n 'Ó': 'O',\n 'Ô': 'O',\n 'Õ': 'O',\n 'Ö': 'O',\n 'Ø': 'O',\n 'Ù': 'U',\n 'Ú': 'U',\n 'Û': 'U',\n 'Ü': 'U',\n 'Ý': 'Y',\n 'Þ': 'o',\n 'ß': 'B',\n 'à': 'a',\n 'á': 'a',\n 'â': 'a',\n 'ã': 'a',\n 'ä': 'a',\n 'å': 'a',\n 'æ': 'a',\n 'ç': 'c',\n 'è': 'e',\n 'é': 'e',\n 'ê': 'e',\n 'ë': 'e',\n 'ì': 'i',\n 'í': 'i',\n 'î': 'i',\n 'ï': 'i',\n 'ð': 'd',\n 'ñ': 'n',\n 'ò': 'o',\n 'ó': 'o',\n 'ô': 'o',\n 'õ': 'o',\n 'ö': 'o',\n 'ø': 'o',\n 'ù': 'u',\n 'ú': 'u',\n 'û': 'u',\n 'ü': 'u',\n 'ý': 'y',\n 'þ': 'o',\n 'ÿ': 'y',\n\n // Cyrillic\n 'А': 'A',\n 'Б': 'B',\n 'В': 'B',\n 'Г': 'F',\n 'Д': 'A',\n 'Е': 'E',\n 'Ж': 'K',\n 'З': '3',\n 'И': 'N',\n 'Й': 'N',\n 'К': 'K',\n 'Л': 'N',\n 'М': 'M',\n 'Н': 'H',\n 'О': 'O',\n 'П': 'N',\n 'Р': 'P',\n 'С': 'C',\n 'Т': 'T',\n 'У': 'y',\n 'Ф': 'O',\n 'Х': 'X',\n 'Ц': 'U',\n 'Ч': 'h',\n 'Ш': 'W',\n 'Щ': 'W',\n 'Ъ': 'B',\n 'Ы': 'X',\n 'Ь': 'B',\n 'Э': '3',\n 'Ю': 'X',\n 'Я': 'R',\n 'а': 'a',\n 'б': 'b',\n 'в': 'a',\n 'г': 'r',\n 'д': 'y',\n 'е': 'e',\n 'ж': 'm',\n 'з': 'e',\n 'и': 'n',\n 'й': 'n',\n 'к': 'n',\n 'л': 'n',\n 'м': 'm',\n 'н': 'n',\n 'о': 'o',\n 'п': 'n',\n 'р': 'p',\n 'с': 'c',\n 'т': 'o',\n 'у': 'y',\n 'ф': 'b',\n 'х': 'x',\n 'ц': 'n',\n 'ч': 'n',\n 'ш': 'w',\n 'щ': 'w',\n 'ъ': 'a',\n 'ы': 'm',\n 'ь': 'a',\n 'э': 'e',\n 'ю': 'm',\n 'я': 'r'\n};\n\n/**\n * This function is a convenience function for looking up information in the\n * metricMap table. It takes a character as a string, and a style.\n *\n * Note: the `width` property may be undefined if fontMetricsData.js wasn't\n * built using `Make extended_metrics`.\n */\nvar getCharacterMetrics = function(character, style) {\n var ch = character.charCodeAt(0);\n if (character[0] in extraCharacterMap) {\n ch = extraCharacterMap[character[0]].charCodeAt(0);\n } else if (cjkRegex.test(character[0])) {\n ch = 'M'.charCodeAt(0);\n }\n var metrics = metricMap[style][ch];\n if (metrics) {\n return {\n depth: metrics[0],\n height: metrics[1],\n italic: metrics[2],\n skew: metrics[3],\n width: metrics[4]\n };\n }\n};\n\nmodule.exports = {\n metrics: metrics,\n sigmas: sigmas,\n getCharacterMetrics: getCharacterMetrics\n};\n","/**\n * This file contains information and classes for the various kinds of styles\n * used in TeX. It provides a generic `Style` class, which holds information\n * about a specific style. It then provides instances of all the different kinds\n * of styles possible, and provides functions to move between them and get\n * information about them.\n */\n\nvar sigmas = require(\"./fontMetrics.js\").sigmas;\n\nvar metrics = [{}, {}, {}];\nvar i;\nfor (var key in sigmas) {\n if (sigmas.hasOwnProperty(key)) {\n for (i = 0; i < 3; i++) {\n metrics[i][key] = sigmas[key][i];\n }\n }\n}\nfor (i = 0; i < 3; i++) {\n metrics[i].emPerEx = sigmas.xHeight[i] / sigmas.quad[i];\n}\n\n/**\n * The main style class. Contains a unique id for the style, a size (which is\n * the same for cramped and uncramped version of a style), a cramped flag, and a\n * size multiplier, which gives the size difference between a style and\n * textstyle.\n */\nfunction Style(id, size, multiplier, cramped) {\n this.id = id;\n this.size = size;\n this.cramped = cramped;\n this.sizeMultiplier = multiplier;\n this.metrics = metrics[size > 0 ? size - 1 : 0];\n}\n\n/**\n * Get the style of a superscript given a base in the current style.\n */\nStyle.prototype.sup = function() {\n return styles[sup[this.id]];\n};\n\n/**\n * Get the style of a subscript given a base in the current style.\n */\nStyle.prototype.sub = function() {\n return styles[sub[this.id]];\n};\n\n/**\n * Get the style of a fraction numerator given the fraction in the current\n * style.\n */\nStyle.prototype.fracNum = function() {\n return styles[fracNum[this.id]];\n};\n\n/**\n * Get the style of a fraction denominator given the fraction in the current\n * style.\n */\nStyle.prototype.fracDen = function() {\n return styles[fracDen[this.id]];\n};\n\n/**\n * Get the cramped version of a style (in particular, cramping a cramped style\n * doesn't change the style).\n */\nStyle.prototype.cramp = function() {\n return styles[cramp[this.id]];\n};\n\n/**\n * HTML class name, like \"displaystyle cramped\"\n */\nStyle.prototype.cls = function() {\n return sizeNames[this.size] + (this.cramped ? \" cramped\" : \" uncramped\");\n};\n\n/**\n * HTML Reset class name, like \"reset-textstyle\"\n */\nStyle.prototype.reset = function() {\n return resetNames[this.size];\n};\n\n/**\n * Return if this style is tightly spaced (scriptstyle/scriptscriptstyle)\n */\nStyle.prototype.isTight = function() {\n return this.size >= 2;\n};\n\n// IDs of the different styles\nvar D = 0;\nvar Dc = 1;\nvar T = 2;\nvar Tc = 3;\nvar S = 4;\nvar Sc = 5;\nvar SS = 6;\nvar SSc = 7;\n\n// String names for the different sizes\nvar sizeNames = [\n \"displaystyle textstyle\",\n \"textstyle\",\n \"scriptstyle\",\n \"scriptscriptstyle\"\n];\n\n// Reset names for the different sizes\nvar resetNames = [\n \"reset-textstyle\",\n \"reset-textstyle\",\n \"reset-scriptstyle\",\n \"reset-scriptscriptstyle\"\n];\n\n// Instances of the different styles\nvar styles = [\n new Style(D, 0, 1.0, false),\n new Style(Dc, 0, 1.0, true),\n new Style(T, 1, 1.0, false),\n new Style(Tc, 1, 1.0, true),\n new Style(S, 2, 0.7, false),\n new Style(Sc, 2, 0.7, true),\n new Style(SS, 3, 0.5, false),\n new Style(SSc, 3, 0.5, true)\n];\n\n// Lookup tables for switching from one style to another\nvar sup = [S, Sc, S, Sc, SS, SSc, SS, SSc];\nvar sub = [Sc, Sc, Sc, Sc, SSc, SSc, SSc, SSc];\nvar fracNum = [T, Tc, S, Sc, SS, SSc, SS, SSc];\nvar fracDen = [Tc, Tc, Sc, Sc, SSc, SSc, SSc, SSc];\nvar cramp = [Dc, Dc, Tc, Tc, Sc, Sc, SSc, SSc];\n\n// We only export some of the styles. Also, we don't export the `Style` class so\n// no more styles can be generated.\nmodule.exports = {\n DISPLAY: styles[D],\n TEXT: styles[T],\n SCRIPT: styles[S],\n SCRIPTSCRIPT: styles[SS]\n};\n","/**\n * This file contains a list of utility functions which are useful in other\n * files.\n */\n\n/**\n * Provide an `indexOf` function which works in IE8, but defers to native if\n * possible.\n */\nvar nativeIndexOf = Array.prototype.indexOf;\nvar indexOf = function(list, elem) {\n if (list == null) {\n return -1;\n }\n if (nativeIndexOf && list.indexOf === nativeIndexOf) {\n return list.indexOf(elem);\n }\n var i = 0;\n var l = list.length;\n for (; i < l; i++) {\n if (list[i] === elem) {\n return i;\n }\n }\n return -1;\n};\n\n/**\n * Return whether an element is contained in a list\n */\nvar contains = function(list, elem) {\n return indexOf(list, elem) !== -1;\n};\n\n/**\n * Provide a default value if a setting is undefined\n */\nvar deflt = function(setting, defaultIfUndefined) {\n return setting === undefined ? defaultIfUndefined : setting;\n};\n\n// hyphenate and escape adapted from Facebook's React under Apache 2 license\n\nvar uppercase = /([A-Z])/g;\nvar hyphenate = function(str) {\n return str.replace(uppercase, \"-$1\").toLowerCase();\n};\n\nvar ESCAPE_LOOKUP = {\n \"&\": \"&\",\n \">\": \">\",\n \"<\": \"<\",\n \"\\\"\": \""\",\n \"'\": \"'\"\n};\n\nvar ESCAPE_REGEX = /[&><\"']/g;\n\nfunction escaper(match) {\n return ESCAPE_LOOKUP[match];\n}\n\n/**\n * Escapes text to prevent scripting attacks.\n *\n * @param {*} text Text value to escape.\n * @return {string} An escaped string.\n */\nfunction escape(text) {\n return (\"\" + text).replace(ESCAPE_REGEX, escaper);\n}\n\n/**\n * A function to set the text content of a DOM element in all supported\n * browsers. Note that we don't define this if there is no document.\n */\nvar setTextContent;\nif (typeof document !== \"undefined\") {\n var testNode = document.createElement(\"span\");\n if (\"textContent\" in testNode) {\n setTextContent = function(node, text) {\n node.textContent = text;\n };\n } else {\n setTextContent = function(node, text) {\n node.innerText = text;\n };\n }\n}\n\n/**\n * A function to clear a node.\n */\nfunction clearNode(node) {\n setTextContent(node, \"\");\n}\n\nmodule.exports = {\n contains: contains,\n deflt: deflt,\n escape: escape,\n hyphenate: hyphenate,\n indexOf: indexOf,\n setTextContent: setTextContent,\n clearNode: clearNode\n};\n","/**\n * These objects store the data about the DOM nodes we create, as well as some\n * extra data. They can then be transformed into real DOM nodes with the\n * `toNode` function or HTML markup using `toMarkup`. They are useful for both\n * storing extra properties on the nodes, as well as providing a way to easily\n * work with the DOM.\n *\n * Similar functions for working with MathML nodes exist in mathMLTree.js.\n */\nvar unicodeRegexes = require(\"./unicodeRegexes\");\nvar utils = require(\"./utils\");\n\n/**\n * Create an HTML className based on a list of classes. In addition to joining\n * with spaces, we also remove null or empty classes.\n */\nvar createClass = function(classes) {\n classes = classes.slice();\n for (var i = classes.length - 1; i >= 0; i--) {\n if (!classes[i]) {\n classes.splice(i, 1);\n }\n }\n\n return classes.join(\" \");\n};\n\n/**\n * This node represents a span node, with a className, a list of children, and\n * an inline style. It also contains information about its height, depth, and\n * maxFontSize.\n */\nfunction span(classes, children, options) {\n this.classes = classes || [];\n this.children = children || [];\n this.height = 0;\n this.depth = 0;\n this.maxFontSize = 0;\n this.style = {};\n this.attributes = {};\n if (options) {\n if (options.style.isTight()) {\n this.classes.push(\"mtight\");\n }\n if (options.getColor()) {\n this.style.color = options.getColor();\n }\n }\n}\n\n/**\n * Sets an arbitrary attribute on the span. Warning: use this wisely. Not all\n * browsers support attributes the same, and having too many custom attributes\n * is probably bad.\n */\nspan.prototype.setAttribute = function(attribute, value) {\n this.attributes[attribute] = value;\n};\n\nspan.prototype.tryCombine = function(sibling) {\n return false;\n};\n\n/**\n * Convert the span into an HTML node\n */\nspan.prototype.toNode = function() {\n var span = document.createElement(\"span\");\n\n // Apply the class\n span.className = createClass(this.classes);\n\n // Apply inline styles\n for (var style in this.style) {\n if (Object.prototype.hasOwnProperty.call(this.style, style)) {\n span.style[style] = this.style[style];\n }\n }\n\n // Apply attributes\n for (var attr in this.attributes) {\n if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {\n span.setAttribute(attr, this.attributes[attr]);\n }\n }\n\n // Append the children, also as HTML nodes\n for (var i = 0; i < this.children.length; i++) {\n span.appendChild(this.children[i].toNode());\n }\n\n return span;\n};\n\n/**\n * Convert the span into an HTML markup string\n */\nspan.prototype.toMarkup = function() {\n var markup = \"\";\n\n // Add the markup of the children, also as markup\n for (var i = 0; i < this.children.length; i++) {\n markup += this.children[i].toMarkup();\n }\n\n markup += \"\";\n\n return markup;\n};\n\n/**\n * This node represents a document fragment, which contains elements, but when\n * placed into the DOM doesn't have any representation itself. Thus, it only\n * contains children and doesn't have any HTML properties. It also keeps track\n * of a height, depth, and maxFontSize.\n */\nfunction documentFragment(children) {\n this.children = children || [];\n this.height = 0;\n this.depth = 0;\n this.maxFontSize = 0;\n}\n\n/**\n * Convert the fragment into a node\n */\ndocumentFragment.prototype.toNode = function() {\n // Create a fragment\n var frag = document.createDocumentFragment();\n\n // Append the children\n for (var i = 0; i < this.children.length; i++) {\n frag.appendChild(this.children[i].toNode());\n }\n\n return frag;\n};\n\n/**\n * Convert the fragment into HTML markup\n */\ndocumentFragment.prototype.toMarkup = function() {\n var markup = \"\";\n\n // Simply concatenate the markup for the children together\n for (var i = 0; i < this.children.length; i++) {\n markup += this.children[i].toMarkup();\n }\n\n return markup;\n};\n\nvar iCombinations = {\n 'î': '\\u0131\\u0302',\n 'ï': '\\u0131\\u0308',\n 'í': '\\u0131\\u0301',\n // 'ī': '\\u0131\\u0304', // enable when we add Extended Latin\n 'ì': '\\u0131\\u0300'\n};\n\n/**\n * A symbol node contains information about a single symbol. It either renders\n * to a single text node, or a span with a single text node in it, depending on\n * whether it has CSS classes, styles, or needs italic correction.\n */\nfunction symbolNode(value, height, depth, italic, skew, classes, style) {\n this.value = value || \"\";\n this.height = height || 0;\n this.depth = depth || 0;\n this.italic = italic || 0;\n this.skew = skew || 0;\n this.classes = classes || [];\n this.style = style || {};\n this.maxFontSize = 0;\n\n // Mark CJK characters with specific classes so that we can specify which\n // fonts to use. This allows us to render these characters with a serif\n // font in situations where the browser would either default to a sans serif\n // or render a placeholder character.\n if (unicodeRegexes.cjkRegex.test(value)) {\n // I couldn't find any fonts that contained Hangul as well as all of\n // the other characters we wanted to test there for it gets its own\n // CSS class.\n if (unicodeRegexes.hangulRegex.test(value)) {\n this.classes.push('hangul_fallback');\n } else {\n this.classes.push('cjk_fallback');\n }\n }\n\n if (/[îïíì]/.test(this.value)) { // add ī when we add Extended Latin\n this.value = iCombinations[this.value];\n }\n}\n\nsymbolNode.prototype.tryCombine = function(sibling) {\n if (!sibling\n || !(sibling instanceof symbolNode)\n || this.italic > 0\n || createClass(this.classes) !== createClass(sibling.classes)\n || this.skew !== sibling.skew\n || this.maxFontSize !== sibling.maxFontSize) {\n return false;\n }\n for (var style in this.style) {\n if (this.style.hasOwnProperty(style)\n && this.style[style] !== sibling.style[style]) {\n return false;\n }\n }\n for (style in sibling.style) {\n if (sibling.style.hasOwnProperty(style)\n && this.style[style] !== sibling.style[style]) {\n return false;\n }\n }\n this.value += sibling.value;\n this.height = Math.max(this.height, sibling.height);\n this.depth = Math.max(this.depth, sibling.depth);\n this.italic = sibling.italic;\n return true;\n};\n\n/**\n * Creates a text node or span from a symbol node. Note that a span is only\n * created if it is needed.\n */\nsymbolNode.prototype.toNode = function() {\n var node = document.createTextNode(this.value);\n var span = null;\n\n if (this.italic > 0) {\n span = document.createElement(\"span\");\n span.style.marginRight = this.italic + \"em\";\n }\n\n if (this.classes.length > 0) {\n span = span || document.createElement(\"span\");\n span.className = createClass(this.classes);\n }\n\n for (var style in this.style) {\n if (this.style.hasOwnProperty(style)) {\n span = span || document.createElement(\"span\");\n span.style[style] = this.style[style];\n }\n }\n\n if (span) {\n span.appendChild(node);\n return span;\n } else {\n return node;\n }\n};\n\n/**\n * Creates markup for a symbol node.\n */\nsymbolNode.prototype.toMarkup = function() {\n // TODO(alpert): More duplication than I'd like from\n // span.prototype.toMarkup and symbolNode.prototype.toNode...\n var needsSpan = false;\n\n var markup = \" 0) {\n styles += \"margin-right:\" + this.italic + \"em;\";\n }\n for (var style in this.style) {\n if (this.style.hasOwnProperty(style)) {\n styles += utils.hyphenate(style) + \":\" + this.style[style] + \";\";\n }\n }\n\n if (styles) {\n needsSpan = true;\n markup += \" style=\\\"\" + utils.escape(styles) + \"\\\"\";\n }\n\n var escaped = utils.escape(this.value);\n if (needsSpan) {\n markup += \">\";\n markup += escaped;\n markup += \"\";\n return markup;\n } else {\n return escaped;\n }\n};\n\nmodule.exports = {\n span: span,\n documentFragment: documentFragment,\n symbolNode: symbolNode\n};\n","/**\n * This file holds a list of all no-argument functions and single-character\n * symbols (like 'a' or ';').\n *\n * For each of the symbols, there are three properties they can have:\n * - font (required): the font to be used for this symbol. Either \"main\" (the\n normal font), or \"ams\" (the ams fonts).\n * - group (required): the ParseNode group type the symbol should have (i.e.\n \"textord\", \"mathord\", etc).\n See https://github.com/Khan/KaTeX/wiki/Examining-TeX#group-types\n * - replace: the character that this symbol or function should be\n * replaced with (i.e. \"\\phi\" has a replace value of \"\\u03d5\", the phi\n * character in the main font).\n *\n * The outermost map in the table indicates what mode the symbols should be\n * accepted in (e.g. \"math\" or \"text\").\n */\n\nmodule.exports = {\n math: {},\n text: {}\n};\n\nfunction defineSymbol(mode, font, group, replace, name) {\n module.exports[mode][name] = {\n font: font,\n group: group,\n replace: replace\n };\n}\n\n// Some abbreviations for commonly used strings.\n// This helps minify the code, and also spotting typos using jshint.\n\n// modes:\nvar math = \"math\";\nvar text = \"text\";\n\n// fonts:\nvar main = \"main\";\nvar ams = \"ams\";\n\n// groups:\nvar accent = \"accent\";\nvar bin = \"bin\";\nvar close = \"close\";\nvar inner = \"inner\";\nvar mathord = \"mathord\";\nvar op = \"op\";\nvar open = \"open\";\nvar punct = \"punct\";\nvar rel = \"rel\";\nvar spacing = \"spacing\";\nvar textord = \"textord\";\n\n// Now comes the symbol table\n\n// Relation Symbols\ndefineSymbol(math, main, rel, \"\\u2261\", \"\\\\equiv\");\ndefineSymbol(math, main, rel, \"\\u227a\", \"\\\\prec\");\ndefineSymbol(math, main, rel, \"\\u227b\", \"\\\\succ\");\ndefineSymbol(math, main, rel, \"\\u223c\", \"\\\\sim\");\ndefineSymbol(math, main, rel, \"\\u22a5\", \"\\\\perp\");\ndefineSymbol(math, main, rel, \"\\u2aaf\", \"\\\\preceq\");\ndefineSymbol(math, main, rel, \"\\u2ab0\", \"\\\\succeq\");\ndefineSymbol(math, main, rel, \"\\u2243\", \"\\\\simeq\");\ndefineSymbol(math, main, rel, \"\\u2223\", \"\\\\mid\");\ndefineSymbol(math, main, rel, \"\\u226a\", \"\\\\ll\");\ndefineSymbol(math, main, rel, \"\\u226b\", \"\\\\gg\");\ndefineSymbol(math, main, rel, \"\\u224d\", \"\\\\asymp\");\ndefineSymbol(math, main, rel, \"\\u2225\", \"\\\\parallel\");\ndefineSymbol(math, main, rel, \"\\u22c8\", \"\\\\bowtie\");\ndefineSymbol(math, main, rel, \"\\u2323\", \"\\\\smile\");\ndefineSymbol(math, main, rel, \"\\u2291\", \"\\\\sqsubseteq\");\ndefineSymbol(math, main, rel, \"\\u2292\", \"\\\\sqsupseteq\");\ndefineSymbol(math, main, rel, \"\\u2250\", \"\\\\doteq\");\ndefineSymbol(math, main, rel, \"\\u2322\", \"\\\\frown\");\ndefineSymbol(math, main, rel, \"\\u220b\", \"\\\\ni\");\ndefineSymbol(math, main, rel, \"\\u221d\", \"\\\\propto\");\ndefineSymbol(math, main, rel, \"\\u22a2\", \"\\\\vdash\");\ndefineSymbol(math, main, rel, \"\\u22a3\", \"\\\\dashv\");\ndefineSymbol(math, main, rel, \"\\u220b\", \"\\\\owns\");\n\n// Punctuation\ndefineSymbol(math, main, punct, \"\\u002e\", \"\\\\ldotp\");\ndefineSymbol(math, main, punct, \"\\u22c5\", \"\\\\cdotp\");\n\n// Misc Symbols\ndefineSymbol(math, main, textord, \"\\u0023\", \"\\\\#\");\ndefineSymbol(text, main, textord, \"\\u0023\", \"\\\\#\");\ndefineSymbol(math, main, textord, \"\\u0026\", \"\\\\&\");\ndefineSymbol(text, main, textord, \"\\u0026\", \"\\\\&\");\ndefineSymbol(math, main, textord, \"\\u2135\", \"\\\\aleph\");\ndefineSymbol(math, main, textord, \"\\u2200\", \"\\\\forall\");\ndefineSymbol(math, main, textord, \"\\u210f\", \"\\\\hbar\");\ndefineSymbol(math, main, textord, \"\\u2203\", \"\\\\exists\");\ndefineSymbol(math, main, textord, \"\\u2207\", \"\\\\nabla\");\ndefineSymbol(math, main, textord, \"\\u266d\", \"\\\\flat\");\ndefineSymbol(math, main, textord, \"\\u2113\", \"\\\\ell\");\ndefineSymbol(math, main, textord, \"\\u266e\", \"\\\\natural\");\ndefineSymbol(math, main, textord, \"\\u2663\", \"\\\\clubsuit\");\ndefineSymbol(math, main, textord, \"\\u2118\", \"\\\\wp\");\ndefineSymbol(math, main, textord, \"\\u266f\", \"\\\\sharp\");\ndefineSymbol(math, main, textord, \"\\u2662\", \"\\\\diamondsuit\");\ndefineSymbol(math, main, textord, \"\\u211c\", \"\\\\Re\");\ndefineSymbol(math, main, textord, \"\\u2661\", \"\\\\heartsuit\");\ndefineSymbol(math, main, textord, \"\\u2111\", \"\\\\Im\");\ndefineSymbol(math, main, textord, \"\\u2660\", \"\\\\spadesuit\");\n\n// Math and Text\ndefineSymbol(math, main, textord, \"\\u2020\", \"\\\\dag\");\ndefineSymbol(math, main, textord, \"\\u2021\", \"\\\\ddag\");\n\n// Large Delimiters\ndefineSymbol(math, main, close, \"\\u23b1\", \"\\\\rmoustache\");\ndefineSymbol(math, main, open, \"\\u23b0\", \"\\\\lmoustache\");\ndefineSymbol(math, main, close, \"\\u27ef\", \"\\\\rgroup\");\ndefineSymbol(math, main, open, \"\\u27ee\", \"\\\\lgroup\");\n\n// Binary Operators\ndefineSymbol(math, main, bin, \"\\u2213\", \"\\\\mp\");\ndefineSymbol(math, main, bin, \"\\u2296\", \"\\\\ominus\");\ndefineSymbol(math, main, bin, \"\\u228e\", \"\\\\uplus\");\ndefineSymbol(math, main, bin, \"\\u2293\", \"\\\\sqcap\");\ndefineSymbol(math, main, bin, \"\\u2217\", \"\\\\ast\");\ndefineSymbol(math, main, bin, \"\\u2294\", \"\\\\sqcup\");\ndefineSymbol(math, main, bin, \"\\u25ef\", \"\\\\bigcirc\");\ndefineSymbol(math, main, bin, \"\\u2219\", \"\\\\bullet\");\ndefineSymbol(math, main, bin, \"\\u2021\", \"\\\\ddagger\");\ndefineSymbol(math, main, bin, \"\\u2240\", \"\\\\wr\");\ndefineSymbol(math, main, bin, \"\\u2a3f\", \"\\\\amalg\");\n\n// Arrow Symbols\ndefineSymbol(math, main, rel, \"\\u27f5\", \"\\\\longleftarrow\");\ndefineSymbol(math, main, rel, \"\\u21d0\", \"\\\\Leftarrow\");\ndefineSymbol(math, main, rel, \"\\u27f8\", \"\\\\Longleftarrow\");\ndefineSymbol(math, main, rel, \"\\u27f6\", \"\\\\longrightarrow\");\ndefineSymbol(math, main, rel, \"\\u21d2\", \"\\\\Rightarrow\");\ndefineSymbol(math, main, rel, \"\\u27f9\", \"\\\\Longrightarrow\");\ndefineSymbol(math, main, rel, \"\\u2194\", \"\\\\leftrightarrow\");\ndefineSymbol(math, main, rel, \"\\u27f7\", \"\\\\longleftrightarrow\");\ndefineSymbol(math, main, rel, \"\\u21d4\", \"\\\\Leftrightarrow\");\ndefineSymbol(math, main, rel, \"\\u27fa\", \"\\\\Longleftrightarrow\");\ndefineSymbol(math, main, rel, \"\\u21a6\", \"\\\\mapsto\");\ndefineSymbol(math, main, rel, \"\\u27fc\", \"\\\\longmapsto\");\ndefineSymbol(math, main, rel, \"\\u2197\", \"\\\\nearrow\");\ndefineSymbol(math, main, rel, \"\\u21a9\", \"\\\\hookleftarrow\");\ndefineSymbol(math, main, rel, \"\\u21aa\", \"\\\\hookrightarrow\");\ndefineSymbol(math, main, rel, \"\\u2198\", \"\\\\searrow\");\ndefineSymbol(math, main, rel, \"\\u21bc\", \"\\\\leftharpoonup\");\ndefineSymbol(math, main, rel, \"\\u21c0\", \"\\\\rightharpoonup\");\ndefineSymbol(math, main, rel, \"\\u2199\", \"\\\\swarrow\");\ndefineSymbol(math, main, rel, \"\\u21bd\", \"\\\\leftharpoondown\");\ndefineSymbol(math, main, rel, \"\\u21c1\", \"\\\\rightharpoondown\");\ndefineSymbol(math, main, rel, \"\\u2196\", \"\\\\nwarrow\");\ndefineSymbol(math, main, rel, \"\\u21cc\", \"\\\\rightleftharpoons\");\n\n// AMS Negated Binary Relations\ndefineSymbol(math, ams, rel, \"\\u226e\", \"\\\\nless\");\ndefineSymbol(math, ams, rel, \"\\ue010\", \"\\\\nleqslant\");\ndefineSymbol(math, ams, rel, \"\\ue011\", \"\\\\nleqq\");\ndefineSymbol(math, ams, rel, \"\\u2a87\", \"\\\\lneq\");\ndefineSymbol(math, ams, rel, \"\\u2268\", \"\\\\lneqq\");\ndefineSymbol(math, ams, rel, \"\\ue00c\", \"\\\\lvertneqq\");\ndefineSymbol(math, ams, rel, \"\\u22e6\", \"\\\\lnsim\");\ndefineSymbol(math, ams, rel, \"\\u2a89\", \"\\\\lnapprox\");\ndefineSymbol(math, ams, rel, \"\\u2280\", \"\\\\nprec\");\ndefineSymbol(math, ams, rel, \"\\u22e0\", \"\\\\npreceq\");\ndefineSymbol(math, ams, rel, \"\\u22e8\", \"\\\\precnsim\");\ndefineSymbol(math, ams, rel, \"\\u2ab9\", \"\\\\precnapprox\");\ndefineSymbol(math, ams, rel, \"\\u2241\", \"\\\\nsim\");\ndefineSymbol(math, ams, rel, \"\\ue006\", \"\\\\nshortmid\");\ndefineSymbol(math, ams, rel, \"\\u2224\", \"\\\\nmid\");\ndefineSymbol(math, ams, rel, \"\\u22ac\", \"\\\\nvdash\");\ndefineSymbol(math, ams, rel, \"\\u22ad\", \"\\\\nvDash\");\ndefineSymbol(math, ams, rel, \"\\u22ea\", \"\\\\ntriangleleft\");\ndefineSymbol(math, ams, rel, \"\\u22ec\", \"\\\\ntrianglelefteq\");\ndefineSymbol(math, ams, rel, \"\\u228a\", \"\\\\subsetneq\");\ndefineSymbol(math, ams, rel, \"\\ue01a\", \"\\\\varsubsetneq\");\ndefineSymbol(math, ams, rel, \"\\u2acb\", \"\\\\subsetneqq\");\ndefineSymbol(math, ams, rel, \"\\ue017\", \"\\\\varsubsetneqq\");\ndefineSymbol(math, ams, rel, \"\\u226f\", \"\\\\ngtr\");\ndefineSymbol(math, ams, rel, \"\\ue00f\", \"\\\\ngeqslant\");\ndefineSymbol(math, ams, rel, \"\\ue00e\", \"\\\\ngeqq\");\ndefineSymbol(math, ams, rel, \"\\u2a88\", \"\\\\gneq\");\ndefineSymbol(math, ams, rel, \"\\u2269\", \"\\\\gneqq\");\ndefineSymbol(math, ams, rel, \"\\ue00d\", \"\\\\gvertneqq\");\ndefineSymbol(math, ams, rel, \"\\u22e7\", \"\\\\gnsim\");\ndefineSymbol(math, ams, rel, \"\\u2a8a\", \"\\\\gnapprox\");\ndefineSymbol(math, ams, rel, \"\\u2281\", \"\\\\nsucc\");\ndefineSymbol(math, ams, rel, \"\\u22e1\", \"\\\\nsucceq\");\ndefineSymbol(math, ams, rel, \"\\u22e9\", \"\\\\succnsim\");\ndefineSymbol(math, ams, rel, \"\\u2aba\", \"\\\\succnapprox\");\ndefineSymbol(math, ams, rel, \"\\u2246\", \"\\\\ncong\");\ndefineSymbol(math, ams, rel, \"\\ue007\", \"\\\\nshortparallel\");\ndefineSymbol(math, ams, rel, \"\\u2226\", \"\\\\nparallel\");\ndefineSymbol(math, ams, rel, \"\\u22af\", \"\\\\nVDash\");\ndefineSymbol(math, ams, rel, \"\\u22eb\", \"\\\\ntriangleright\");\ndefineSymbol(math, ams, rel, \"\\u22ed\", \"\\\\ntrianglerighteq\");\ndefineSymbol(math, ams, rel, \"\\ue018\", \"\\\\nsupseteqq\");\ndefineSymbol(math, ams, rel, \"\\u228b\", \"\\\\supsetneq\");\ndefineSymbol(math, ams, rel, \"\\ue01b\", \"\\\\varsupsetneq\");\ndefineSymbol(math, ams, rel, \"\\u2acc\", \"\\\\supsetneqq\");\ndefineSymbol(math, ams, rel, \"\\ue019\", \"\\\\varsupsetneqq\");\ndefineSymbol(math, ams, rel, \"\\u22ae\", \"\\\\nVdash\");\ndefineSymbol(math, ams, rel, \"\\u2ab5\", \"\\\\precneqq\");\ndefineSymbol(math, ams, rel, \"\\u2ab6\", \"\\\\succneqq\");\ndefineSymbol(math, ams, rel, \"\\ue016\", \"\\\\nsubseteqq\");\ndefineSymbol(math, ams, bin, \"\\u22b4\", \"\\\\unlhd\");\ndefineSymbol(math, ams, bin, \"\\u22b5\", \"\\\\unrhd\");\n\n// AMS Negated Arrows\ndefineSymbol(math, ams, rel, \"\\u219a\", \"\\\\nleftarrow\");\ndefineSymbol(math, ams, rel, \"\\u219b\", \"\\\\nrightarrow\");\ndefineSymbol(math, ams, rel, \"\\u21cd\", \"\\\\nLeftarrow\");\ndefineSymbol(math, ams, rel, \"\\u21cf\", \"\\\\nRightarrow\");\ndefineSymbol(math, ams, rel, \"\\u21ae\", \"\\\\nleftrightarrow\");\ndefineSymbol(math, ams, rel, \"\\u21ce\", \"\\\\nLeftrightarrow\");\n\n// AMS Misc\ndefineSymbol(math, ams, rel, \"\\u25b3\", \"\\\\vartriangle\");\ndefineSymbol(math, ams, textord, \"\\u210f\", \"\\\\hslash\");\ndefineSymbol(math, ams, textord, \"\\u25bd\", \"\\\\triangledown\");\ndefineSymbol(math, ams, textord, \"\\u25ca\", \"\\\\lozenge\");\ndefineSymbol(math, ams, textord, \"\\u24c8\", \"\\\\circledS\");\ndefineSymbol(math, ams, textord, \"\\u00ae\", \"\\\\circledR\");\ndefineSymbol(math, ams, textord, \"\\u2221\", \"\\\\measuredangle\");\ndefineSymbol(math, ams, textord, \"\\u2204\", \"\\\\nexists\");\ndefineSymbol(math, ams, textord, \"\\u2127\", \"\\\\mho\");\ndefineSymbol(math, ams, textord, \"\\u2132\", \"\\\\Finv\");\ndefineSymbol(math, ams, textord, \"\\u2141\", \"\\\\Game\");\ndefineSymbol(math, ams, textord, \"\\u006b\", \"\\\\Bbbk\");\ndefineSymbol(math, ams, textord, \"\\u2035\", \"\\\\backprime\");\ndefineSymbol(math, ams, textord, \"\\u25b2\", \"\\\\blacktriangle\");\ndefineSymbol(math, ams, textord, \"\\u25bc\", \"\\\\blacktriangledown\");\ndefineSymbol(math, ams, textord, \"\\u25a0\", \"\\\\blacksquare\");\ndefineSymbol(math, ams, textord, \"\\u29eb\", \"\\\\blacklozenge\");\ndefineSymbol(math, ams, textord, \"\\u2605\", \"\\\\bigstar\");\ndefineSymbol(math, ams, textord, \"\\u2222\", \"\\\\sphericalangle\");\ndefineSymbol(math, ams, textord, \"\\u2201\", \"\\\\complement\");\ndefineSymbol(math, ams, textord, \"\\u00f0\", \"\\\\eth\");\ndefineSymbol(math, ams, textord, \"\\u2571\", \"\\\\diagup\");\ndefineSymbol(math, ams, textord, \"\\u2572\", \"\\\\diagdown\");\ndefineSymbol(math, ams, textord, \"\\u25a1\", \"\\\\square\");\ndefineSymbol(math, ams, textord, \"\\u25a1\", \"\\\\Box\");\ndefineSymbol(math, ams, textord, \"\\u25ca\", \"\\\\Diamond\");\ndefineSymbol(math, ams, textord, \"\\u00a5\", \"\\\\yen\");\ndefineSymbol(math, ams, textord, \"\\u2713\", \"\\\\checkmark\");\n\n// AMS Hebrew\ndefineSymbol(math, ams, textord, \"\\u2136\", \"\\\\beth\");\ndefineSymbol(math, ams, textord, \"\\u2138\", \"\\\\daleth\");\ndefineSymbol(math, ams, textord, \"\\u2137\", \"\\\\gimel\");\n\n// AMS Greek\ndefineSymbol(math, ams, textord, \"\\u03dd\", \"\\\\digamma\");\ndefineSymbol(math, ams, textord, \"\\u03f0\", \"\\\\varkappa\");\n\n// AMS Delimiters\ndefineSymbol(math, ams, open, \"\\u250c\", \"\\\\ulcorner\");\ndefineSymbol(math, ams, close, \"\\u2510\", \"\\\\urcorner\");\ndefineSymbol(math, ams, open, \"\\u2514\", \"\\\\llcorner\");\ndefineSymbol(math, ams, close, \"\\u2518\", \"\\\\lrcorner\");\n\n// AMS Binary Relations\ndefineSymbol(math, ams, rel, \"\\u2266\", \"\\\\leqq\");\ndefineSymbol(math, ams, rel, \"\\u2a7d\", \"\\\\leqslant\");\ndefineSymbol(math, ams, rel, \"\\u2a95\", \"\\\\eqslantless\");\ndefineSymbol(math, ams, rel, \"\\u2272\", \"\\\\lesssim\");\ndefineSymbol(math, ams, rel, \"\\u2a85\", \"\\\\lessapprox\");\ndefineSymbol(math, ams, rel, \"\\u224a\", \"\\\\approxeq\");\ndefineSymbol(math, ams, bin, \"\\u22d6\", \"\\\\lessdot\");\ndefineSymbol(math, ams, rel, \"\\u22d8\", \"\\\\lll\");\ndefineSymbol(math, ams, rel, \"\\u2276\", \"\\\\lessgtr\");\ndefineSymbol(math, ams, rel, \"\\u22da\", \"\\\\lesseqgtr\");\ndefineSymbol(math, ams, rel, \"\\u2a8b\", \"\\\\lesseqqgtr\");\ndefineSymbol(math, ams, rel, \"\\u2251\", \"\\\\doteqdot\");\ndefineSymbol(math, ams, rel, \"\\u2253\", \"\\\\risingdotseq\");\ndefineSymbol(math, ams, rel, \"\\u2252\", \"\\\\fallingdotseq\");\ndefineSymbol(math, ams, rel, \"\\u223d\", \"\\\\backsim\");\ndefineSymbol(math, ams, rel, \"\\u22cd\", \"\\\\backsimeq\");\ndefineSymbol(math, ams, rel, \"\\u2ac5\", \"\\\\subseteqq\");\ndefineSymbol(math, ams, rel, \"\\u22d0\", \"\\\\Subset\");\ndefineSymbol(math, ams, rel, \"\\u228f\", \"\\\\sqsubset\");\ndefineSymbol(math, ams, rel, \"\\u227c\", \"\\\\preccurlyeq\");\ndefineSymbol(math, ams, rel, \"\\u22de\", \"\\\\curlyeqprec\");\ndefineSymbol(math, ams, rel, \"\\u227e\", \"\\\\precsim\");\ndefineSymbol(math, ams, rel, \"\\u2ab7\", \"\\\\precapprox\");\ndefineSymbol(math, ams, rel, \"\\u22b2\", \"\\\\vartriangleleft\");\ndefineSymbol(math, ams, rel, \"\\u22b4\", \"\\\\trianglelefteq\");\ndefineSymbol(math, ams, rel, \"\\u22a8\", \"\\\\vDash\");\ndefineSymbol(math, ams, rel, \"\\u22aa\", \"\\\\Vvdash\");\ndefineSymbol(math, ams, rel, \"\\u2323\", \"\\\\smallsmile\");\ndefineSymbol(math, ams, rel, \"\\u2322\", \"\\\\smallfrown\");\ndefineSymbol(math, ams, rel, \"\\u224f\", \"\\\\bumpeq\");\ndefineSymbol(math, ams, rel, \"\\u224e\", \"\\\\Bumpeq\");\ndefineSymbol(math, ams, rel, \"\\u2267\", \"\\\\geqq\");\ndefineSymbol(math, ams, rel, \"\\u2a7e\", \"\\\\geqslant\");\ndefineSymbol(math, ams, rel, \"\\u2a96\", \"\\\\eqslantgtr\");\ndefineSymbol(math, ams, rel, \"\\u2273\", \"\\\\gtrsim\");\ndefineSymbol(math, ams, rel, \"\\u2a86\", \"\\\\gtrapprox\");\ndefineSymbol(math, ams, bin, \"\\u22d7\", \"\\\\gtrdot\");\ndefineSymbol(math, ams, rel, \"\\u22d9\", \"\\\\ggg\");\ndefineSymbol(math, ams, rel, \"\\u2277\", \"\\\\gtrless\");\ndefineSymbol(math, ams, rel, \"\\u22db\", \"\\\\gtreqless\");\ndefineSymbol(math, ams, rel, \"\\u2a8c\", \"\\\\gtreqqless\");\ndefineSymbol(math, ams, rel, \"\\u2256\", \"\\\\eqcirc\");\ndefineSymbol(math, ams, rel, \"\\u2257\", \"\\\\circeq\");\ndefineSymbol(math, ams, rel, \"\\u225c\", \"\\\\triangleq\");\ndefineSymbol(math, ams, rel, \"\\u223c\", \"\\\\thicksim\");\ndefineSymbol(math, ams, rel, \"\\u2248\", \"\\\\thickapprox\");\ndefineSymbol(math, ams, rel, \"\\u2ac6\", \"\\\\supseteqq\");\ndefineSymbol(math, ams, rel, \"\\u22d1\", \"\\\\Supset\");\ndefineSymbol(math, ams, rel, \"\\u2290\", \"\\\\sqsupset\");\ndefineSymbol(math, ams, rel, \"\\u227d\", \"\\\\succcurlyeq\");\ndefineSymbol(math, ams, rel, \"\\u22df\", \"\\\\curlyeqsucc\");\ndefineSymbol(math, ams, rel, \"\\u227f\", \"\\\\succsim\");\ndefineSymbol(math, ams, rel, \"\\u2ab8\", \"\\\\succapprox\");\ndefineSymbol(math, ams, rel, \"\\u22b3\", \"\\\\vartriangleright\");\ndefineSymbol(math, ams, rel, \"\\u22b5\", \"\\\\trianglerighteq\");\ndefineSymbol(math, ams, rel, \"\\u22a9\", \"\\\\Vdash\");\ndefineSymbol(math, ams, rel, \"\\u2223\", \"\\\\shortmid\");\ndefineSymbol(math, ams, rel, \"\\u2225\", \"\\\\shortparallel\");\ndefineSymbol(math, ams, rel, \"\\u226c\", \"\\\\between\");\ndefineSymbol(math, ams, rel, \"\\u22d4\", \"\\\\pitchfork\");\ndefineSymbol(math, ams, rel, \"\\u221d\", \"\\\\varpropto\");\ndefineSymbol(math, ams, rel, \"\\u25c0\", \"\\\\blacktriangleleft\");\ndefineSymbol(math, ams, rel, \"\\u2234\", \"\\\\therefore\");\ndefineSymbol(math, ams, rel, \"\\u220d\", \"\\\\backepsilon\");\ndefineSymbol(math, ams, rel, \"\\u25b6\", \"\\\\blacktriangleright\");\ndefineSymbol(math, ams, rel, \"\\u2235\", \"\\\\because\");\ndefineSymbol(math, ams, rel, \"\\u22d8\", \"\\\\llless\");\ndefineSymbol(math, ams, rel, \"\\u22d9\", \"\\\\gggtr\");\ndefineSymbol(math, ams, bin, \"\\u22b2\", \"\\\\lhd\");\ndefineSymbol(math, ams, bin, \"\\u22b3\", \"\\\\rhd\");\ndefineSymbol(math, ams, rel, \"\\u2242\", \"\\\\eqsim\");\ndefineSymbol(math, main, rel, \"\\u22c8\", \"\\\\Join\");\ndefineSymbol(math, ams, rel, \"\\u2251\", \"\\\\Doteq\");\n\n// AMS Binary Operators\ndefineSymbol(math, ams, bin, \"\\u2214\", \"\\\\dotplus\");\ndefineSymbol(math, ams, bin, \"\\u2216\", \"\\\\smallsetminus\");\ndefineSymbol(math, ams, bin, \"\\u22d2\", \"\\\\Cap\");\ndefineSymbol(math, ams, bin, \"\\u22d3\", \"\\\\Cup\");\ndefineSymbol(math, ams, bin, \"\\u2a5e\", \"\\\\doublebarwedge\");\ndefineSymbol(math, ams, bin, \"\\u229f\", \"\\\\boxminus\");\ndefineSymbol(math, ams, bin, \"\\u229e\", \"\\\\boxplus\");\ndefineSymbol(math, ams, bin, \"\\u22c7\", \"\\\\divideontimes\");\ndefineSymbol(math, ams, bin, \"\\u22c9\", \"\\\\ltimes\");\ndefineSymbol(math, ams, bin, \"\\u22ca\", \"\\\\rtimes\");\ndefineSymbol(math, ams, bin, \"\\u22cb\", \"\\\\leftthreetimes\");\ndefineSymbol(math, ams, bin, \"\\u22cc\", \"\\\\rightthreetimes\");\ndefineSymbol(math, ams, bin, \"\\u22cf\", \"\\\\curlywedge\");\ndefineSymbol(math, ams, bin, \"\\u22ce\", \"\\\\curlyvee\");\ndefineSymbol(math, ams, bin, \"\\u229d\", \"\\\\circleddash\");\ndefineSymbol(math, ams, bin, \"\\u229b\", \"\\\\circledast\");\ndefineSymbol(math, ams, bin, \"\\u22c5\", \"\\\\centerdot\");\ndefineSymbol(math, ams, bin, \"\\u22ba\", \"\\\\intercal\");\ndefineSymbol(math, ams, bin, \"\\u22d2\", \"\\\\doublecap\");\ndefineSymbol(math, ams, bin, \"\\u22d3\", \"\\\\doublecup\");\ndefineSymbol(math, ams, bin, \"\\u22a0\", \"\\\\boxtimes\");\n\n// AMS Arrows\ndefineSymbol(math, ams, rel, \"\\u21e2\", \"\\\\dashrightarrow\");\ndefineSymbol(math, ams, rel, \"\\u21e0\", \"\\\\dashleftarrow\");\ndefineSymbol(math, ams, rel, \"\\u21c7\", \"\\\\leftleftarrows\");\ndefineSymbol(math, ams, rel, \"\\u21c6\", \"\\\\leftrightarrows\");\ndefineSymbol(math, ams, rel, \"\\u21da\", \"\\\\Lleftarrow\");\ndefineSymbol(math, ams, rel, \"\\u219e\", \"\\\\twoheadleftarrow\");\ndefineSymbol(math, ams, rel, \"\\u21a2\", \"\\\\leftarrowtail\");\ndefineSymbol(math, ams, rel, \"\\u21ab\", \"\\\\looparrowleft\");\ndefineSymbol(math, ams, rel, \"\\u21cb\", \"\\\\leftrightharpoons\");\ndefineSymbol(math, ams, rel, \"\\u21b6\", \"\\\\curvearrowleft\");\ndefineSymbol(math, ams, rel, \"\\u21ba\", \"\\\\circlearrowleft\");\ndefineSymbol(math, ams, rel, \"\\u21b0\", \"\\\\Lsh\");\ndefineSymbol(math, ams, rel, \"\\u21c8\", \"\\\\upuparrows\");\ndefineSymbol(math, ams, rel, \"\\u21bf\", \"\\\\upharpoonleft\");\ndefineSymbol(math, ams, rel, \"\\u21c3\", \"\\\\downharpoonleft\");\ndefineSymbol(math, ams, rel, \"\\u22b8\", \"\\\\multimap\");\ndefineSymbol(math, ams, rel, \"\\u21ad\", \"\\\\leftrightsquigarrow\");\ndefineSymbol(math, ams, rel, \"\\u21c9\", \"\\\\rightrightarrows\");\ndefineSymbol(math, ams, rel, \"\\u21c4\", \"\\\\rightleftarrows\");\ndefineSymbol(math, ams, rel, \"\\u21a0\", \"\\\\twoheadrightarrow\");\ndefineSymbol(math, ams, rel, \"\\u21a3\", \"\\\\rightarrowtail\");\ndefineSymbol(math, ams, rel, \"\\u21ac\", \"\\\\looparrowright\");\ndefineSymbol(math, ams, rel, \"\\u21b7\", \"\\\\curvearrowright\");\ndefineSymbol(math, ams, rel, \"\\u21bb\", \"\\\\circlearrowright\");\ndefineSymbol(math, ams, rel, \"\\u21b1\", \"\\\\Rsh\");\ndefineSymbol(math, ams, rel, \"\\u21ca\", \"\\\\downdownarrows\");\ndefineSymbol(math, ams, rel, \"\\u21be\", \"\\\\upharpoonright\");\ndefineSymbol(math, ams, rel, \"\\u21c2\", \"\\\\downharpoonright\");\ndefineSymbol(math, ams, rel, \"\\u21dd\", \"\\\\rightsquigarrow\");\ndefineSymbol(math, ams, rel, \"\\u21dd\", \"\\\\leadsto\");\ndefineSymbol(math, ams, rel, \"\\u21db\", \"\\\\Rrightarrow\");\ndefineSymbol(math, ams, rel, \"\\u21be\", \"\\\\restriction\");\n\ndefineSymbol(math, main, textord, \"\\u2018\", \"`\");\ndefineSymbol(math, main, textord, \"$\", \"\\\\$\");\ndefineSymbol(text, main, textord, \"$\", \"\\\\$\");\ndefineSymbol(math, main, textord, \"%\", \"\\\\%\");\ndefineSymbol(text, main, textord, \"%\", \"\\\\%\");\ndefineSymbol(math, main, textord, \"_\", \"\\\\_\");\ndefineSymbol(text, main, textord, \"_\", \"\\\\_\");\ndefineSymbol(math, main, textord, \"\\u2220\", \"\\\\angle\");\ndefineSymbol(math, main, textord, \"\\u221e\", \"\\\\infty\");\ndefineSymbol(math, main, textord, \"\\u2032\", \"\\\\prime\");\ndefineSymbol(math, main, textord, \"\\u25b3\", \"\\\\triangle\");\ndefineSymbol(math, main, textord, \"\\u0393\", \"\\\\Gamma\");\ndefineSymbol(math, main, textord, \"\\u0394\", \"\\\\Delta\");\ndefineSymbol(math, main, textord, \"\\u0398\", \"\\\\Theta\");\ndefineSymbol(math, main, textord, \"\\u039b\", \"\\\\Lambda\");\ndefineSymbol(math, main, textord, \"\\u039e\", \"\\\\Xi\");\ndefineSymbol(math, main, textord, \"\\u03a0\", \"\\\\Pi\");\ndefineSymbol(math, main, textord, \"\\u03a3\", \"\\\\Sigma\");\ndefineSymbol(math, main, textord, \"\\u03a5\", \"\\\\Upsilon\");\ndefineSymbol(math, main, textord, \"\\u03a6\", \"\\\\Phi\");\ndefineSymbol(math, main, textord, \"\\u03a8\", \"\\\\Psi\");\ndefineSymbol(math, main, textord, \"\\u03a9\", \"\\\\Omega\");\ndefineSymbol(math, main, textord, \"\\u00ac\", \"\\\\neg\");\ndefineSymbol(math, main, textord, \"\\u00ac\", \"\\\\lnot\");\ndefineSymbol(math, main, textord, \"\\u22a4\", \"\\\\top\");\ndefineSymbol(math, main, textord, \"\\u22a5\", \"\\\\bot\");\ndefineSymbol(math, main, textord, \"\\u2205\", \"\\\\emptyset\");\ndefineSymbol(math, ams, textord, \"\\u2205\", \"\\\\varnothing\");\ndefineSymbol(math, main, mathord, \"\\u03b1\", \"\\\\alpha\");\ndefineSymbol(math, main, mathord, \"\\u03b2\", \"\\\\beta\");\ndefineSymbol(math, main, mathord, \"\\u03b3\", \"\\\\gamma\");\ndefineSymbol(math, main, mathord, \"\\u03b4\", \"\\\\delta\");\ndefineSymbol(math, main, mathord, \"\\u03f5\", \"\\\\epsilon\");\ndefineSymbol(math, main, mathord, \"\\u03b6\", \"\\\\zeta\");\ndefineSymbol(math, main, mathord, \"\\u03b7\", \"\\\\eta\");\ndefineSymbol(math, main, mathord, \"\\u03b8\", \"\\\\theta\");\ndefineSymbol(math, main, mathord, \"\\u03b9\", \"\\\\iota\");\ndefineSymbol(math, main, mathord, \"\\u03ba\", \"\\\\kappa\");\ndefineSymbol(math, main, mathord, \"\\u03bb\", \"\\\\lambda\");\ndefineSymbol(math, main, mathord, \"\\u03bc\", \"\\\\mu\");\ndefineSymbol(math, main, mathord, \"\\u03bd\", \"\\\\nu\");\ndefineSymbol(math, main, mathord, \"\\u03be\", \"\\\\xi\");\ndefineSymbol(math, main, mathord, \"o\", \"\\\\omicron\");\ndefineSymbol(math, main, mathord, \"\\u03c0\", \"\\\\pi\");\ndefineSymbol(math, main, mathord, \"\\u03c1\", \"\\\\rho\");\ndefineSymbol(math, main, mathord, \"\\u03c3\", \"\\\\sigma\");\ndefineSymbol(math, main, mathord, \"\\u03c4\", \"\\\\tau\");\ndefineSymbol(math, main, mathord, \"\\u03c5\", \"\\\\upsilon\");\ndefineSymbol(math, main, mathord, \"\\u03d5\", \"\\\\phi\");\ndefineSymbol(math, main, mathord, \"\\u03c7\", \"\\\\chi\");\ndefineSymbol(math, main, mathord, \"\\u03c8\", \"\\\\psi\");\ndefineSymbol(math, main, mathord, \"\\u03c9\", \"\\\\omega\");\ndefineSymbol(math, main, mathord, \"\\u03b5\", \"\\\\varepsilon\");\ndefineSymbol(math, main, mathord, \"\\u03d1\", \"\\\\vartheta\");\ndefineSymbol(math, main, mathord, \"\\u03d6\", \"\\\\varpi\");\ndefineSymbol(math, main, mathord, \"\\u03f1\", \"\\\\varrho\");\ndefineSymbol(math, main, mathord, \"\\u03c2\", \"\\\\varsigma\");\ndefineSymbol(math, main, mathord, \"\\u03c6\", \"\\\\varphi\");\ndefineSymbol(math, main, bin, \"\\u2217\", \"*\");\ndefineSymbol(math, main, bin, \"+\", \"+\");\ndefineSymbol(math, main, bin, \"\\u2212\", \"-\");\ndefineSymbol(math, main, bin, \"\\u22c5\", \"\\\\cdot\");\ndefineSymbol(math, main, bin, \"\\u2218\", \"\\\\circ\");\ndefineSymbol(math, main, bin, \"\\u00f7\", \"\\\\div\");\ndefineSymbol(math, main, bin, \"\\u00b1\", \"\\\\pm\");\ndefineSymbol(math, main, bin, \"\\u00d7\", \"\\\\times\");\ndefineSymbol(math, main, bin, \"\\u2229\", \"\\\\cap\");\ndefineSymbol(math, main, bin, \"\\u222a\", \"\\\\cup\");\ndefineSymbol(math, main, bin, \"\\u2216\", \"\\\\setminus\");\ndefineSymbol(math, main, bin, \"\\u2227\", \"\\\\land\");\ndefineSymbol(math, main, bin, \"\\u2228\", \"\\\\lor\");\ndefineSymbol(math, main, bin, \"\\u2227\", \"\\\\wedge\");\ndefineSymbol(math, main, bin, \"\\u2228\", \"\\\\vee\");\ndefineSymbol(math, main, textord, \"\\u221a\", \"\\\\surd\");\ndefineSymbol(math, main, open, \"(\", \"(\");\ndefineSymbol(math, main, open, \"[\", \"[\");\ndefineSymbol(math, main, open, \"\\u27e8\", \"\\\\langle\");\ndefineSymbol(math, main, open, \"\\u2223\", \"\\\\lvert\");\ndefineSymbol(math, main, open, \"\\u2225\", \"\\\\lVert\");\ndefineSymbol(math, main, close, \")\", \")\");\ndefineSymbol(math, main, close, \"]\", \"]\");\ndefineSymbol(math, main, close, \"?\", \"?\");\ndefineSymbol(math, main, close, \"!\", \"!\");\ndefineSymbol(math, main, close, \"\\u27e9\", \"\\\\rangle\");\ndefineSymbol(math, main, close, \"\\u2223\", \"\\\\rvert\");\ndefineSymbol(math, main, close, \"\\u2225\", \"\\\\rVert\");\ndefineSymbol(math, main, rel, \"=\", \"=\");\ndefineSymbol(math, main, rel, \"<\", \"<\");\ndefineSymbol(math, main, rel, \">\", \">\");\ndefineSymbol(math, main, rel, \":\", \":\");\ndefineSymbol(math, main, rel, \"\\u2248\", \"\\\\approx\");\ndefineSymbol(math, main, rel, \"\\u2245\", \"\\\\cong\");\ndefineSymbol(math, main, rel, \"\\u2265\", \"\\\\ge\");\ndefineSymbol(math, main, rel, \"\\u2265\", \"\\\\geq\");\ndefineSymbol(math, main, rel, \"\\u2190\", \"\\\\gets\");\ndefineSymbol(math, main, rel, \">\", \"\\\\gt\");\ndefineSymbol(math, main, rel, \"\\u2208\", \"\\\\in\");\ndefineSymbol(math, main, rel, \"\\u2209\", \"\\\\notin\");\ndefineSymbol(math, main, rel, \"\\u2282\", \"\\\\subset\");\ndefineSymbol(math, main, rel, \"\\u2283\", \"\\\\supset\");\ndefineSymbol(math, main, rel, \"\\u2286\", \"\\\\subseteq\");\ndefineSymbol(math, main, rel, \"\\u2287\", \"\\\\supseteq\");\ndefineSymbol(math, ams, rel, \"\\u2288\", \"\\\\nsubseteq\");\ndefineSymbol(math, ams, rel, \"\\u2289\", \"\\\\nsupseteq\");\ndefineSymbol(math, main, rel, \"\\u22a8\", \"\\\\models\");\ndefineSymbol(math, main, rel, \"\\u2190\", \"\\\\leftarrow\");\ndefineSymbol(math, main, rel, \"\\u2264\", \"\\\\le\");\ndefineSymbol(math, main, rel, \"\\u2264\", \"\\\\leq\");\ndefineSymbol(math, main, rel, \"<\", \"\\\\lt\");\ndefineSymbol(math, main, rel, \"\\u2260\", \"\\\\ne\");\ndefineSymbol(math, main, rel, \"\\u2260\", \"\\\\neq\");\ndefineSymbol(math, main, rel, \"\\u2192\", \"\\\\rightarrow\");\ndefineSymbol(math, main, rel, \"\\u2192\", \"\\\\to\");\ndefineSymbol(math, ams, rel, \"\\u2271\", \"\\\\ngeq\");\ndefineSymbol(math, ams, rel, \"\\u2270\", \"\\\\nleq\");\ndefineSymbol(math, main, spacing, null, \"\\\\!\");\ndefineSymbol(math, main, spacing, \"\\u00a0\", \"\\\\ \");\ndefineSymbol(math, main, spacing, \"\\u00a0\", \"~\");\ndefineSymbol(math, main, spacing, null, \"\\\\,\");\ndefineSymbol(math, main, spacing, null, \"\\\\:\");\ndefineSymbol(math, main, spacing, null, \"\\\\;\");\ndefineSymbol(math, main, spacing, null, \"\\\\enspace\");\ndefineSymbol(math, main, spacing, null, \"\\\\qquad\");\ndefineSymbol(math, main, spacing, null, \"\\\\quad\");\ndefineSymbol(math, main, spacing, \"\\u00a0\", \"\\\\space\");\ndefineSymbol(math, main, punct, \",\", \",\");\ndefineSymbol(math, main, punct, \";\", \";\");\ndefineSymbol(math, main, punct, \":\", \"\\\\colon\");\ndefineSymbol(math, ams, bin, \"\\u22bc\", \"\\\\barwedge\");\ndefineSymbol(math, ams, bin, \"\\u22bb\", \"\\\\veebar\");\ndefineSymbol(math, main, bin, \"\\u2299\", \"\\\\odot\");\ndefineSymbol(math, main, bin, \"\\u2295\", \"\\\\oplus\");\ndefineSymbol(math, main, bin, \"\\u2297\", \"\\\\otimes\");\ndefineSymbol(math, main, textord, \"\\u2202\", \"\\\\partial\");\ndefineSymbol(math, main, bin, \"\\u2298\", \"\\\\oslash\");\ndefineSymbol(math, ams, bin, \"\\u229a\", \"\\\\circledcirc\");\ndefineSymbol(math, ams, bin, \"\\u22a1\", \"\\\\boxdot\");\ndefineSymbol(math, main, bin, \"\\u25b3\", \"\\\\bigtriangleup\");\ndefineSymbol(math, main, bin, \"\\u25bd\", \"\\\\bigtriangledown\");\ndefineSymbol(math, main, bin, \"\\u2020\", \"\\\\dagger\");\ndefineSymbol(math, main, bin, \"\\u22c4\", \"\\\\diamond\");\ndefineSymbol(math, main, bin, \"\\u22c6\", \"\\\\star\");\ndefineSymbol(math, main, bin, \"\\u25c3\", \"\\\\triangleleft\");\ndefineSymbol(math, main, bin, \"\\u25b9\", \"\\\\triangleright\");\ndefineSymbol(math, main, open, \"{\", \"\\\\{\");\ndefineSymbol(text, main, textord, \"{\", \"\\\\{\");\ndefineSymbol(math, main, close, \"}\", \"\\\\}\");\ndefineSymbol(text, main, textord, \"}\", \"\\\\}\");\ndefineSymbol(math, main, open, \"{\", \"\\\\lbrace\");\ndefineSymbol(math, main, close, \"}\", \"\\\\rbrace\");\ndefineSymbol(math, main, open, \"[\", \"\\\\lbrack\");\ndefineSymbol(math, main, close, \"]\", \"\\\\rbrack\");\ndefineSymbol(math, main, open, \"\\u230a\", \"\\\\lfloor\");\ndefineSymbol(math, main, close, \"\\u230b\", \"\\\\rfloor\");\ndefineSymbol(math, main, open, \"\\u2308\", \"\\\\lceil\");\ndefineSymbol(math, main, close, \"\\u2309\", \"\\\\rceil\");\ndefineSymbol(math, main, textord, \"\\\\\", \"\\\\backslash\");\ndefineSymbol(math, main, textord, \"\\u2223\", \"|\");\ndefineSymbol(math, main, textord, \"\\u2223\", \"\\\\vert\");\ndefineSymbol(math, main, textord, \"\\u2225\", \"\\\\|\");\ndefineSymbol(math, main, textord, \"\\u2225\", \"\\\\Vert\");\ndefineSymbol(math, main, rel, \"\\u2191\", \"\\\\uparrow\");\ndefineSymbol(math, main, rel, \"\\u21d1\", \"\\\\Uparrow\");\ndefineSymbol(math, main, rel, \"\\u2193\", \"\\\\downarrow\");\ndefineSymbol(math, main, rel, \"\\u21d3\", \"\\\\Downarrow\");\ndefineSymbol(math, main, rel, \"\\u2195\", \"\\\\updownarrow\");\ndefineSymbol(math, main, rel, \"\\u21d5\", \"\\\\Updownarrow\");\ndefineSymbol(math, math, op, \"\\u2210\", \"\\\\coprod\");\ndefineSymbol(math, math, op, \"\\u22c1\", \"\\\\bigvee\");\ndefineSymbol(math, math, op, \"\\u22c0\", \"\\\\bigwedge\");\ndefineSymbol(math, math, op, \"\\u2a04\", \"\\\\biguplus\");\ndefineSymbol(math, math, op, \"\\u22c2\", \"\\\\bigcap\");\ndefineSymbol(math, math, op, \"\\u22c3\", \"\\\\bigcup\");\ndefineSymbol(math, math, op, \"\\u222b\", \"\\\\int\");\ndefineSymbol(math, math, op, \"\\u222b\", \"\\\\intop\");\ndefineSymbol(math, math, op, \"\\u222c\", \"\\\\iint\");\ndefineSymbol(math, math, op, \"\\u222d\", \"\\\\iiint\");\ndefineSymbol(math, math, op, \"\\u220f\", \"\\\\prod\");\ndefineSymbol(math, math, op, \"\\u2211\", \"\\\\sum\");\ndefineSymbol(math, math, op, \"\\u2a02\", \"\\\\bigotimes\");\ndefineSymbol(math, math, op, \"\\u2a01\", \"\\\\bigoplus\");\ndefineSymbol(math, math, op, \"\\u2a00\", \"\\\\bigodot\");\ndefineSymbol(math, math, op, \"\\u222e\", \"\\\\oint\");\ndefineSymbol(math, math, op, \"\\u2a06\", \"\\\\bigsqcup\");\ndefineSymbol(math, math, op, \"\\u222b\", \"\\\\smallint\");\ndefineSymbol(text, main, inner, \"\\u2026\", \"\\\\textellipsis\");\ndefineSymbol(math, main, inner, \"\\u2026\", \"\\\\mathellipsis\");\ndefineSymbol(text, main, inner, \"\\u2026\", \"\\\\ldots\");\ndefineSymbol(math, main, inner, \"\\u2026\", \"\\\\ldots\");\ndefineSymbol(math, main, inner, \"\\u22ef\", \"\\\\cdots\");\ndefineSymbol(math, main, inner, \"\\u22f1\", \"\\\\ddots\");\ndefineSymbol(math, main, textord, \"\\u22ee\", \"\\\\vdots\");\ndefineSymbol(math, main, accent, \"\\u00b4\", \"\\\\acute\");\ndefineSymbol(math, main, accent, \"\\u0060\", \"\\\\grave\");\ndefineSymbol(math, main, accent, \"\\u00a8\", \"\\\\ddot\");\ndefineSymbol(math, main, accent, \"\\u007e\", \"\\\\tilde\");\ndefineSymbol(math, main, accent, \"\\u00af\", \"\\\\bar\");\ndefineSymbol(math, main, accent, \"\\u02d8\", \"\\\\breve\");\ndefineSymbol(math, main, accent, \"\\u02c7\", \"\\\\check\");\ndefineSymbol(math, main, accent, \"\\u005e\", \"\\\\hat\");\ndefineSymbol(math, main, accent, \"\\u20d7\", \"\\\\vec\");\ndefineSymbol(math, main, accent, \"\\u02d9\", \"\\\\dot\");\ndefineSymbol(math, main, mathord, \"\\u0131\", \"\\\\imath\");\ndefineSymbol(math, main, mathord, \"\\u0237\", \"\\\\jmath\");\n\ndefineSymbol(text, main, textord, \"\\u2013\", \"--\");\ndefineSymbol(text, main, textord, \"\\u2014\", \"---\");\ndefineSymbol(text, main, textord, \"\\u2018\", \"`\");\ndefineSymbol(text, main, textord, \"\\u2019\", \"'\");\ndefineSymbol(text, main, textord, \"\\u201c\", \"``\");\ndefineSymbol(text, main, textord, \"\\u201d\", \"''\");\ndefineSymbol(math, main, textord, \"\\u00b0\", \"\\\\degree\");\ndefineSymbol(text, main, textord, \"\\u00b0\", \"\\\\degree\");\ndefineSymbol(math, main, mathord, \"\\u00a3\", \"\\\\pounds\");\ndefineSymbol(math, ams, textord, \"\\u2720\", \"\\\\maltese\");\ndefineSymbol(text, ams, textord, \"\\u2720\", \"\\\\maltese\");\n\ndefineSymbol(text, main, spacing, \"\\u00a0\", \"\\\\ \");\ndefineSymbol(text, main, spacing, \"\\u00a0\", \" \");\ndefineSymbol(text, main, spacing, \"\\u00a0\", \"~\");\n\n// There are lots of symbols which are the same, so we add them in afterwards.\nvar i;\nvar ch;\n\n// All of these are textords in math mode\nvar mathTextSymbols = \"0123456789/@.\\\"\";\nfor (i = 0; i < mathTextSymbols.length; i++) {\n ch = mathTextSymbols.charAt(i);\n defineSymbol(math, main, textord, ch, ch);\n}\n\n// All of these are textords in text mode\nvar textSymbols = \"0123456789!@*()-=+[]\\\";:?/.,\";\nfor (i = 0; i < textSymbols.length; i++) {\n ch = textSymbols.charAt(i);\n defineSymbol(text, main, textord, ch, ch);\n}\n\n// All of these are textords in text mode, and mathords in math mode\nvar letters = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\";\nfor (i = 0; i < letters.length; i++) {\n ch = letters.charAt(i);\n defineSymbol(math, main, mathord, ch, ch);\n defineSymbol(text, main, textord, ch, ch);\n}\n\n// Latin-1 letters\nfor (i = 0x00C0; i <= 0x00D6; i++) {\n ch = String.fromCharCode(i);\n defineSymbol(text, main, textord, ch, ch);\n}\n\nfor (i = 0x00D8; i <= 0x00F6; i++) {\n ch = String.fromCharCode(i);\n defineSymbol(text, main, textord, ch, ch);\n}\n\nfor (i = 0x00F8; i <= 0x00FF; i++) {\n ch = String.fromCharCode(i);\n defineSymbol(text, main, textord, ch, ch);\n}\n\n// Cyrillic\nfor (i = 0x0410; i <= 0x044F; i++) {\n ch = String.fromCharCode(i);\n defineSymbol(text, main, textord, ch, ch);\n}\n\n// Unicode versions of existing characters\ndefineSymbol(text, main, textord, \"\\u2013\", \"–\");\ndefineSymbol(text, main, textord, \"\\u2014\", \"—\");\ndefineSymbol(text, main, textord, \"\\u2018\", \"‘\");\ndefineSymbol(text, main, textord, \"\\u2019\", \"’\");\ndefineSymbol(text, main, textord, \"\\u201c\", \"“\");\ndefineSymbol(text, main, textord, \"\\u201d\", \"”\");\n","/* eslint no-console:0 */\n/**\n * This module contains general functions that can be used for building\n * different kinds of domTree nodes in a consistent manner.\n */\n\nvar domTree = require(\"./domTree\");\nvar fontMetrics = require(\"./fontMetrics\");\nvar symbols = require(\"./symbols\");\nvar utils = require(\"./utils\");\n\nvar greekCapitals = [\n \"\\\\Gamma\",\n \"\\\\Delta\",\n \"\\\\Theta\",\n \"\\\\Lambda\",\n \"\\\\Xi\",\n \"\\\\Pi\",\n \"\\\\Sigma\",\n \"\\\\Upsilon\",\n \"\\\\Phi\",\n \"\\\\Psi\",\n \"\\\\Omega\"\n];\n\n// The following have to be loaded from Main-Italic font, using class mainit\nvar mainitLetters = [\n \"\\u0131\", // dotless i, \\imath\n \"\\u0237\", // dotless j, \\jmath\n \"\\u00a3\" // \\pounds\n];\n\n/**\n * Makes a symbolNode after translation via the list of symbols in symbols.js.\n * Correctly pulls out metrics for the character, and optionally takes a list of\n * classes to be attached to the node.\n *\n * TODO: make argument order closer to makeSpan\n * TODO: add a separate argument for math class (e.g. `mop`, `mbin`), which\n * should if present come first in `classes`.\n */\nvar makeSymbol = function(value, fontFamily, mode, options, classes) {\n // Replace the value with its replaced value from symbol.js\n if (symbols[mode][value] && symbols[mode][value].replace) {\n value = symbols[mode][value].replace;\n }\n\n var metrics = fontMetrics.getCharacterMetrics(value, fontFamily);\n\n var symbolNode;\n if (metrics) {\n var italic = metrics.italic;\n if (mode === \"text\") {\n italic = 0;\n }\n symbolNode = new domTree.symbolNode(\n value, metrics.height, metrics.depth, italic, metrics.skew,\n classes);\n } else {\n // TODO(emily): Figure out a good way to only print this in development\n typeof console !== \"undefined\" && console.warn(\n \"No character metrics for '\" + value + \"' in style '\" +\n fontFamily + \"'\");\n symbolNode = new domTree.symbolNode(value, 0, 0, 0, 0, classes);\n }\n\n if (options) {\n if (options.style.isTight()) {\n symbolNode.classes.push(\"mtight\");\n }\n if (options.getColor()) {\n symbolNode.style.color = options.getColor();\n }\n }\n\n return symbolNode;\n};\n\n/**\n * Makes a symbol in Main-Regular or AMS-Regular.\n * Used for rel, bin, open, close, inner, and punct.\n */\nvar mathsym = function(value, mode, options, classes) {\n // Decide what font to render the symbol in by its entry in the symbols\n // table.\n // Have a special case for when the value = \\ because the \\ is used as a\n // textord in unsupported command errors but cannot be parsed as a regular\n // text ordinal and is therefore not present as a symbol in the symbols\n // table for text\n if (value === \"\\\\\" || symbols[mode][value].font === \"main\") {\n return makeSymbol(value, \"Main-Regular\", mode, options, classes);\n } else {\n return makeSymbol(\n value, \"AMS-Regular\", mode, options, classes.concat([\"amsrm\"]));\n }\n};\n\n/**\n * Makes a symbol in the default font for mathords and textords.\n */\nvar mathDefault = function(value, mode, options, classes, type) {\n if (type === \"mathord\") {\n return mathit(value, mode, options, classes);\n } else if (type === \"textord\") {\n return makeSymbol(\n value, \"Main-Regular\", mode, options, classes.concat([\"mathrm\"]));\n } else {\n throw new Error(\"unexpected type: \" + type + \" in mathDefault\");\n }\n};\n\n/**\n * Makes a symbol in the italic math font.\n */\nvar mathit = function(value, mode, options, classes) {\n if (/[0-9]/.test(value.charAt(0)) ||\n // glyphs for \\imath and \\jmath do not exist in Math-Italic so we\n // need to use Main-Italic instead\n utils.contains(mainitLetters, value) ||\n utils.contains(greekCapitals, value)) {\n return makeSymbol(\n value, \"Main-Italic\", mode, options, classes.concat([\"mainit\"]));\n } else {\n return makeSymbol(\n value, \"Math-Italic\", mode, options, classes.concat([\"mathit\"]));\n }\n};\n\n/**\n * Makes either a mathord or textord in the correct font and color.\n */\nvar makeOrd = function(group, options, type) {\n var mode = group.mode;\n var value = group.value;\n if (symbols[mode][value] && symbols[mode][value].replace) {\n value = symbols[mode][value].replace;\n }\n\n var classes = [\"mord\"];\n\n var font = options.font;\n if (font) {\n if (font === \"mathit\" || utils.contains(mainitLetters, value)) {\n return mathit(value, mode, options, classes);\n } else {\n var fontName = fontMap[font].fontName;\n if (fontMetrics.getCharacterMetrics(value, fontName)) {\n return makeSymbol(\n value, fontName, mode, options, classes.concat([font]));\n } else {\n return mathDefault(value, mode, options, classes, type);\n }\n }\n } else {\n return mathDefault(value, mode, options, classes, type);\n }\n};\n\n/**\n * Calculate the height, depth, and maxFontSize of an element based on its\n * children.\n */\nvar sizeElementFromChildren = function(elem) {\n var height = 0;\n var depth = 0;\n var maxFontSize = 0;\n\n if (elem.children) {\n for (var i = 0; i < elem.children.length; i++) {\n if (elem.children[i].height > height) {\n height = elem.children[i].height;\n }\n if (elem.children[i].depth > depth) {\n depth = elem.children[i].depth;\n }\n if (elem.children[i].maxFontSize > maxFontSize) {\n maxFontSize = elem.children[i].maxFontSize;\n }\n }\n }\n\n elem.height = height;\n elem.depth = depth;\n elem.maxFontSize = maxFontSize;\n};\n\n/**\n * Makes a span with the given list of classes, list of children, and options.\n *\n * TODO: Ensure that `options` is always provided (currently some call sites\n * don't pass it).\n * TODO: add a separate argument for math class (e.g. `mop`, `mbin`), which\n * should if present come first in `classes`.\n */\nvar makeSpan = function(classes, children, options) {\n var span = new domTree.span(classes, children, options);\n\n sizeElementFromChildren(span);\n\n return span;\n};\n\n/**\n * Prepends the given children to the given span, updating height, depth, and\n * maxFontSize.\n */\nvar prependChildren = function(span, children) {\n span.children = children.concat(span.children);\n\n sizeElementFromChildren(span);\n};\n\n/**\n * Makes a document fragment with the given list of children.\n */\nvar makeFragment = function(children) {\n var fragment = new domTree.documentFragment(children);\n\n sizeElementFromChildren(fragment);\n\n return fragment;\n};\n\n/**\n * Makes an element placed in each of the vlist elements to ensure that each\n * element has the same max font size. To do this, we create a zero-width space\n * with the correct font size.\n */\nvar makeFontSizer = function(options, fontSize) {\n var fontSizeInner = makeSpan([], [new domTree.symbolNode(\"\\u200b\")]);\n fontSizeInner.style.fontSize =\n (fontSize / options.style.sizeMultiplier) + \"em\";\n\n var fontSizer = makeSpan(\n [\"fontsize-ensurer\", \"reset-\" + options.size, \"size5\"],\n [fontSizeInner]);\n\n return fontSizer;\n};\n\n/**\n * Makes a vertical list by stacking elements and kerns on top of each other.\n * Allows for many different ways of specifying the positioning method.\n *\n * Arguments:\n * - children: A list of child or kern nodes to be stacked on top of each other\n * (i.e. the first element will be at the bottom, and the last at\n * the top). Element nodes are specified as\n * {type: \"elem\", elem: node}\n * while kern nodes are specified as\n * {type: \"kern\", size: size}\n * - positionType: The method by which the vlist should be positioned. Valid\n * values are:\n * - \"individualShift\": The children list only contains elem\n * nodes, and each node contains an extra\n * \"shift\" value of how much it should be\n * shifted (note that shifting is always\n * moving downwards). positionData is\n * ignored.\n * - \"top\": The positionData specifies the topmost point of\n * the vlist (note this is expected to be a height,\n * so positive values move up)\n * - \"bottom\": The positionData specifies the bottommost point\n * of the vlist (note this is expected to be a\n * depth, so positive values move down\n * - \"shift\": The vlist will be positioned such that its\n * baseline is positionData away from the baseline\n * of the first child. Positive values move\n * downwards.\n * - \"firstBaseline\": The vlist will be positioned such that\n * its baseline is aligned with the\n * baseline of the first child.\n * positionData is ignored. (this is\n * equivalent to \"shift\" with\n * positionData=0)\n * - positionData: Data used in different ways depending on positionType\n * - options: An Options object\n *\n */\nvar makeVList = function(children, positionType, positionData, options) {\n var depth;\n var currPos;\n var i;\n if (positionType === \"individualShift\") {\n var oldChildren = children;\n children = [oldChildren[0]];\n\n // Add in kerns to the list of children to get each element to be\n // shifted to the correct specified shift\n depth = -oldChildren[0].shift - oldChildren[0].elem.depth;\n currPos = depth;\n for (i = 1; i < oldChildren.length; i++) {\n var diff = -oldChildren[i].shift - currPos -\n oldChildren[i].elem.depth;\n var size = diff -\n (oldChildren[i - 1].elem.height +\n oldChildren[i - 1].elem.depth);\n\n currPos = currPos + diff;\n\n children.push({type: \"kern\", size: size});\n children.push(oldChildren[i]);\n }\n } else if (positionType === \"top\") {\n // We always start at the bottom, so calculate the bottom by adding up\n // all the sizes\n var bottom = positionData;\n for (i = 0; i < children.length; i++) {\n if (children[i].type === \"kern\") {\n bottom -= children[i].size;\n } else {\n bottom -= children[i].elem.height + children[i].elem.depth;\n }\n }\n depth = bottom;\n } else if (positionType === \"bottom\") {\n depth = -positionData;\n } else if (positionType === \"shift\") {\n depth = -children[0].elem.depth - positionData;\n } else if (positionType === \"firstBaseline\") {\n depth = -children[0].elem.depth;\n } else {\n depth = 0;\n }\n\n // Make the fontSizer\n var maxFontSize = 0;\n for (i = 0; i < children.length; i++) {\n if (children[i].type === \"elem\") {\n maxFontSize = Math.max(maxFontSize, children[i].elem.maxFontSize);\n }\n }\n var fontSizer = makeFontSizer(options, maxFontSize);\n\n // Create a new list of actual children at the correct offsets\n var realChildren = [];\n currPos = depth;\n for (i = 0; i < children.length; i++) {\n if (children[i].type === \"kern\") {\n currPos += children[i].size;\n } else {\n var child = children[i].elem;\n\n var shift = -child.depth - currPos;\n currPos += child.height + child.depth;\n\n var childWrap = makeSpan([], [fontSizer, child]);\n childWrap.height -= shift;\n childWrap.depth += shift;\n childWrap.style.top = shift + \"em\";\n\n realChildren.push(childWrap);\n }\n }\n\n // Add in an element at the end with no offset to fix the calculation of\n // baselines in some browsers (namely IE, sometimes safari)\n var baselineFix = makeSpan(\n [\"baseline-fix\"], [fontSizer, new domTree.symbolNode(\"\\u200b\")]);\n realChildren.push(baselineFix);\n\n var vlist = makeSpan([\"vlist\"], realChildren);\n // Fix the final height and depth, in case there were kerns at the ends\n // since the makeSpan calculation won't take that in to account.\n vlist.height = Math.max(currPos, vlist.height);\n vlist.depth = Math.max(-depth, vlist.depth);\n return vlist;\n};\n\n// A table of size -> font size for the different sizing functions\nvar sizingMultiplier = {\n size1: 0.5,\n size2: 0.7,\n size3: 0.8,\n size4: 0.9,\n size5: 1.0,\n size6: 1.2,\n size7: 1.44,\n size8: 1.73,\n size9: 2.07,\n size10: 2.49\n};\n\n// A map of spacing functions to their attributes, like size and corresponding\n// CSS class\nvar spacingFunctions = {\n \"\\\\qquad\": {\n size: \"2em\",\n className: \"qquad\"\n },\n \"\\\\quad\": {\n size: \"1em\",\n className: \"quad\"\n },\n \"\\\\enspace\": {\n size: \"0.5em\",\n className: \"enspace\"\n },\n \"\\\\;\": {\n size: \"0.277778em\",\n className: \"thickspace\"\n },\n \"\\\\:\": {\n size: \"0.22222em\",\n className: \"mediumspace\"\n },\n \"\\\\,\": {\n size: \"0.16667em\",\n className: \"thinspace\"\n },\n \"\\\\!\": {\n size: \"-0.16667em\",\n className: \"negativethinspace\"\n }\n};\n\n/**\n * Maps TeX font commands to objects containing:\n * - variant: string used for \"mathvariant\" attribute in buildMathML.js\n * - fontName: the \"style\" parameter to fontMetrics.getCharacterMetrics\n */\n// A map between tex font commands an MathML mathvariant attribute values\nvar fontMap = {\n // styles\n \"mathbf\": {\n variant: \"bold\",\n fontName: \"Main-Bold\"\n },\n \"mathrm\": {\n variant: \"normal\",\n fontName: \"Main-Regular\"\n },\n \"textit\": {\n variant: \"italic\",\n fontName: \"Main-Italic\"\n },\n\n // \"mathit\" is missing because it requires the use of two fonts: Main-Italic\n // and Math-Italic. This is handled by a special case in makeOrd which ends\n // up calling mathit.\n\n // families\n \"mathbb\": {\n variant: \"double-struck\",\n fontName: \"AMS-Regular\"\n },\n \"mathcal\": {\n variant: \"script\",\n fontName: \"Caligraphic-Regular\"\n },\n \"mathfrak\": {\n variant: \"fraktur\",\n fontName: \"Fraktur-Regular\"\n },\n \"mathscr\": {\n variant: \"script\",\n fontName: \"Script-Regular\"\n },\n \"mathsf\": {\n variant: \"sans-serif\",\n fontName: \"SansSerif-Regular\"\n },\n \"mathtt\": {\n variant: \"monospace\",\n fontName: \"Typewriter-Regular\"\n }\n};\n\nmodule.exports = {\n fontMap: fontMap,\n makeSymbol: makeSymbol,\n mathsym: mathsym,\n makeSpan: makeSpan,\n makeFragment: makeFragment,\n makeVList: makeVList,\n makeOrd: makeOrd,\n prependChildren: prependChildren,\n sizingMultiplier: sizingMultiplier,\n spacingFunctions: spacingFunctions\n};\n","/**\n * This file deals with creating delimiters of various sizes. The TeXbook\n * discusses these routines on page 441-442, in the \"Another subroutine sets box\n * x to a specified variable delimiter\" paragraph.\n *\n * There are three main routines here. `makeSmallDelim` makes a delimiter in the\n * normal font, but in either text, script, or scriptscript style.\n * `makeLargeDelim` makes a delimiter in textstyle, but in one of the Size1,\n * Size2, Size3, or Size4 fonts. `makeStackedDelim` makes a delimiter out of\n * smaller pieces that are stacked on top of one another.\n *\n * The functions take a parameter `center`, which determines if the delimiter\n * should be centered around the axis.\n *\n * Then, there are three exposed functions. `sizedDelim` makes a delimiter in\n * one of the given sizes. This is used for things like `\\bigl`.\n * `customSizedDelim` makes a delimiter with a given total height+depth. It is\n * called in places like `\\sqrt`. `leftRightDelim` makes an appropriate\n * delimiter which surrounds an expression of a given height an depth. It is\n * used in `\\left` and `\\right`.\n */\n\nvar ParseError = require(\"./ParseError\");\nvar Style = require(\"./Style\");\n\nvar buildCommon = require(\"./buildCommon\");\nvar fontMetrics = require(\"./fontMetrics\");\nvar symbols = require(\"./symbols\");\nvar utils = require(\"./utils\");\n\nvar makeSpan = buildCommon.makeSpan;\n\n/**\n * Get the metrics for a given symbol and font, after transformation (i.e.\n * after following replacement from symbols.js)\n */\nvar getMetrics = function(symbol, font) {\n if (symbols.math[symbol] && symbols.math[symbol].replace) {\n return fontMetrics.getCharacterMetrics(\n symbols.math[symbol].replace, font);\n } else {\n return fontMetrics.getCharacterMetrics(\n symbol, font);\n }\n};\n\n/**\n * Builds a symbol in the given font size (note size is an integer)\n */\nvar mathrmSize = function(value, size, mode, options) {\n return buildCommon.makeSymbol(value, \"Size\" + size + \"-Regular\",\n mode, options);\n};\n\n/**\n * Puts a delimiter span in a given style, and adds appropriate height, depth,\n * and maxFontSizes.\n */\nvar styleWrap = function(delim, toStyle, options, classes) {\n classes = classes || [];\n var span = makeSpan(\n classes.concat([\"style-wrap\", options.style.reset(), toStyle.cls()]),\n [delim], options);\n\n var multiplier = toStyle.sizeMultiplier / options.style.sizeMultiplier;\n\n span.height *= multiplier;\n span.depth *= multiplier;\n span.maxFontSize = toStyle.sizeMultiplier;\n\n return span;\n};\n\n/**\n * Makes a small delimiter. This is a delimiter that comes in the Main-Regular\n * font, but is restyled to either be in textstyle, scriptstyle, or\n * scriptscriptstyle.\n */\nvar makeSmallDelim = function(delim, style, center, options, mode, classes) {\n var text = buildCommon.makeSymbol(delim, \"Main-Regular\", mode, options);\n\n var span = styleWrap(text, style, options, classes);\n\n if (center) {\n var shift =\n (1 - options.style.sizeMultiplier / style.sizeMultiplier) *\n options.style.metrics.axisHeight;\n\n span.style.top = shift + \"em\";\n span.height -= shift;\n span.depth += shift;\n }\n\n return span;\n};\n\n/**\n * Makes a large delimiter. This is a delimiter that comes in the Size1, Size2,\n * Size3, or Size4 fonts. It is always rendered in textstyle.\n */\nvar makeLargeDelim = function(delim, size, center, options, mode, classes) {\n var inner = mathrmSize(delim, size, mode, options);\n\n var span = styleWrap(\n makeSpan([\"delimsizing\", \"size\" + size], [inner], options),\n Style.TEXT, options, classes);\n\n if (center) {\n var shift = (1 - options.style.sizeMultiplier) *\n options.style.metrics.axisHeight;\n\n span.style.top = shift + \"em\";\n span.height -= shift;\n span.depth += shift;\n }\n\n return span;\n};\n\n/**\n * Make an inner span with the given offset and in the given font. This is used\n * in `makeStackedDelim` to make the stacking pieces for the delimiter.\n */\nvar makeInner = function(symbol, font, mode) {\n var sizeClass;\n // Apply the correct CSS class to choose the right font.\n if (font === \"Size1-Regular\") {\n sizeClass = \"delim-size1\";\n } else if (font === \"Size4-Regular\") {\n sizeClass = \"delim-size4\";\n }\n\n var inner = makeSpan(\n [\"delimsizinginner\", sizeClass],\n [makeSpan([], [buildCommon.makeSymbol(symbol, font, mode)])]);\n\n // Since this will be passed into `makeVList` in the end, wrap the element\n // in the appropriate tag that VList uses.\n return {type: \"elem\", elem: inner};\n};\n\n/**\n * Make a stacked delimiter out of a given delimiter, with the total height at\n * least `heightTotal`. This routine is mentioned on page 442 of the TeXbook.\n */\nvar makeStackedDelim = function(delim, heightTotal, center, options, mode,\n classes) {\n // There are four parts, the top, an optional middle, a repeated part, and a\n // bottom.\n var top;\n var middle;\n var repeat;\n var bottom;\n top = repeat = bottom = delim;\n middle = null;\n // Also keep track of what font the delimiters are in\n var font = \"Size1-Regular\";\n\n // We set the parts and font based on the symbol. Note that we use\n // '\\u23d0' instead of '|' and '\\u2016' instead of '\\\\|' for the\n // repeats of the arrows\n if (delim === \"\\\\uparrow\") {\n repeat = bottom = \"\\u23d0\";\n } else if (delim === \"\\\\Uparrow\") {\n repeat = bottom = \"\\u2016\";\n } else if (delim === \"\\\\downarrow\") {\n top = repeat = \"\\u23d0\";\n } else if (delim === \"\\\\Downarrow\") {\n top = repeat = \"\\u2016\";\n } else if (delim === \"\\\\updownarrow\") {\n top = \"\\\\uparrow\";\n repeat = \"\\u23d0\";\n bottom = \"\\\\downarrow\";\n } else if (delim === \"\\\\Updownarrow\") {\n top = \"\\\\Uparrow\";\n repeat = \"\\u2016\";\n bottom = \"\\\\Downarrow\";\n } else if (delim === \"[\" || delim === \"\\\\lbrack\") {\n top = \"\\u23a1\";\n repeat = \"\\u23a2\";\n bottom = \"\\u23a3\";\n font = \"Size4-Regular\";\n } else if (delim === \"]\" || delim === \"\\\\rbrack\") {\n top = \"\\u23a4\";\n repeat = \"\\u23a5\";\n bottom = \"\\u23a6\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\lfloor\") {\n repeat = top = \"\\u23a2\";\n bottom = \"\\u23a3\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\lceil\") {\n top = \"\\u23a1\";\n repeat = bottom = \"\\u23a2\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\rfloor\") {\n repeat = top = \"\\u23a5\";\n bottom = \"\\u23a6\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\rceil\") {\n top = \"\\u23a4\";\n repeat = bottom = \"\\u23a5\";\n font = \"Size4-Regular\";\n } else if (delim === \"(\") {\n top = \"\\u239b\";\n repeat = \"\\u239c\";\n bottom = \"\\u239d\";\n font = \"Size4-Regular\";\n } else if (delim === \")\") {\n top = \"\\u239e\";\n repeat = \"\\u239f\";\n bottom = \"\\u23a0\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\{\" || delim === \"\\\\lbrace\") {\n top = \"\\u23a7\";\n middle = \"\\u23a8\";\n bottom = \"\\u23a9\";\n repeat = \"\\u23aa\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\}\" || delim === \"\\\\rbrace\") {\n top = \"\\u23ab\";\n middle = \"\\u23ac\";\n bottom = \"\\u23ad\";\n repeat = \"\\u23aa\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\lgroup\") {\n top = \"\\u23a7\";\n bottom = \"\\u23a9\";\n repeat = \"\\u23aa\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\rgroup\") {\n top = \"\\u23ab\";\n bottom = \"\\u23ad\";\n repeat = \"\\u23aa\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\lmoustache\") {\n top = \"\\u23a7\";\n bottom = \"\\u23ad\";\n repeat = \"\\u23aa\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\rmoustache\") {\n top = \"\\u23ab\";\n bottom = \"\\u23a9\";\n repeat = \"\\u23aa\";\n font = \"Size4-Regular\";\n } else if (delim === \"\\\\surd\") {\n top = \"\\ue001\";\n bottom = \"\\u23b7\";\n repeat = \"\\ue000\";\n font = \"Size4-Regular\";\n }\n\n // Get the metrics of the four sections\n var topMetrics = getMetrics(top, font);\n var topHeightTotal = topMetrics.height + topMetrics.depth;\n var repeatMetrics = getMetrics(repeat, font);\n var repeatHeightTotal = repeatMetrics.height + repeatMetrics.depth;\n var bottomMetrics = getMetrics(bottom, font);\n var bottomHeightTotal = bottomMetrics.height + bottomMetrics.depth;\n var middleHeightTotal = 0;\n var middleFactor = 1;\n if (middle !== null) {\n var middleMetrics = getMetrics(middle, font);\n middleHeightTotal = middleMetrics.height + middleMetrics.depth;\n middleFactor = 2; // repeat symmetrically above and below middle\n }\n\n // Calcuate the minimal height that the delimiter can have.\n // It is at least the size of the top, bottom, and optional middle combined.\n var minHeight = topHeightTotal + bottomHeightTotal + middleHeightTotal;\n\n // Compute the number of copies of the repeat symbol we will need\n var repeatCount = Math.ceil(\n (heightTotal - minHeight) / (middleFactor * repeatHeightTotal));\n\n // Compute the total height of the delimiter including all the symbols\n var realHeightTotal =\n minHeight + repeatCount * middleFactor * repeatHeightTotal;\n\n // The center of the delimiter is placed at the center of the axis. Note\n // that in this context, \"center\" means that the delimiter should be\n // centered around the axis in the current style, while normally it is\n // centered around the axis in textstyle.\n var axisHeight = options.style.metrics.axisHeight;\n if (center) {\n axisHeight *= options.style.sizeMultiplier;\n }\n // Calculate the depth\n var depth = realHeightTotal / 2 - axisHeight;\n\n // Now, we start building the pieces that will go into the vlist\n\n // Keep a list of the inner pieces\n var inners = [];\n\n // Add the bottom symbol\n inners.push(makeInner(bottom, font, mode));\n\n var i;\n if (middle === null) {\n // Add that many symbols\n for (i = 0; i < repeatCount; i++) {\n inners.push(makeInner(repeat, font, mode));\n }\n } else {\n // When there is a middle bit, we need the middle part and two repeated\n // sections\n for (i = 0; i < repeatCount; i++) {\n inners.push(makeInner(repeat, font, mode));\n }\n inners.push(makeInner(middle, font, mode));\n for (i = 0; i < repeatCount; i++) {\n inners.push(makeInner(repeat, font, mode));\n }\n }\n\n // Add the top symbol\n inners.push(makeInner(top, font, mode));\n\n // Finally, build the vlist\n var inner = buildCommon.makeVList(inners, \"bottom\", depth, options);\n\n return styleWrap(\n makeSpan([\"delimsizing\", \"mult\"], [inner], options),\n Style.TEXT, options, classes);\n};\n\n// There are three kinds of delimiters, delimiters that stack when they become\n// too large\nvar stackLargeDelimiters = [\n \"(\", \")\", \"[\", \"\\\\lbrack\", \"]\", \"\\\\rbrack\",\n \"\\\\{\", \"\\\\lbrace\", \"\\\\}\", \"\\\\rbrace\",\n \"\\\\lfloor\", \"\\\\rfloor\", \"\\\\lceil\", \"\\\\rceil\",\n \"\\\\surd\"\n];\n\n// delimiters that always stack\nvar stackAlwaysDelimiters = [\n \"\\\\uparrow\", \"\\\\downarrow\", \"\\\\updownarrow\",\n \"\\\\Uparrow\", \"\\\\Downarrow\", \"\\\\Updownarrow\",\n \"|\", \"\\\\|\", \"\\\\vert\", \"\\\\Vert\",\n \"\\\\lvert\", \"\\\\rvert\", \"\\\\lVert\", \"\\\\rVert\",\n \"\\\\lgroup\", \"\\\\rgroup\", \"\\\\lmoustache\", \"\\\\rmoustache\"\n];\n\n// and delimiters that never stack\nvar stackNeverDelimiters = [\n \"<\", \">\", \"\\\\langle\", \"\\\\rangle\", \"/\", \"\\\\backslash\", \"\\\\lt\", \"\\\\gt\"\n];\n\n// Metrics of the different sizes. Found by looking at TeX's output of\n// $\\bigl| // \\Bigl| \\biggl| \\Biggl| \\showlists$\n// Used to create stacked delimiters of appropriate sizes in makeSizedDelim.\nvar sizeToMaxHeight = [0, 1.2, 1.8, 2.4, 3.0];\n\n/**\n * Used to create a delimiter of a specific size, where `size` is 1, 2, 3, or 4.\n */\nvar makeSizedDelim = function(delim, size, options, mode, classes) {\n // < and > turn into \\langle and \\rangle in delimiters\n if (delim === \"<\" || delim === \"\\\\lt\") {\n delim = \"\\\\langle\";\n } else if (delim === \">\" || delim === \"\\\\gt\") {\n delim = \"\\\\rangle\";\n }\n\n // Sized delimiters are never centered.\n if (utils.contains(stackLargeDelimiters, delim) ||\n utils.contains(stackNeverDelimiters, delim)) {\n return makeLargeDelim(delim, size, false, options, mode, classes);\n } else if (utils.contains(stackAlwaysDelimiters, delim)) {\n return makeStackedDelim(\n delim, sizeToMaxHeight[size], false, options, mode, classes);\n } else {\n throw new ParseError(\"Illegal delimiter: '\" + delim + \"'\");\n }\n};\n\n/**\n * There are three different sequences of delimiter sizes that the delimiters\n * follow depending on the kind of delimiter. This is used when creating custom\n * sized delimiters to decide whether to create a small, large, or stacked\n * delimiter.\n *\n * In real TeX, these sequences aren't explicitly defined, but are instead\n * defined inside the font metrics. Since there are only three sequences that\n * are possible for the delimiters that TeX defines, it is easier to just encode\n * them explicitly here.\n */\n\n// Delimiters that never stack try small delimiters and large delimiters only\nvar stackNeverDelimiterSequence = [\n {type: \"small\", style: Style.SCRIPTSCRIPT},\n {type: \"small\", style: Style.SCRIPT},\n {type: \"small\", style: Style.TEXT},\n {type: \"large\", size: 1},\n {type: \"large\", size: 2},\n {type: \"large\", size: 3},\n {type: \"large\", size: 4}\n];\n\n// Delimiters that always stack try the small delimiters first, then stack\nvar stackAlwaysDelimiterSequence = [\n {type: \"small\", style: Style.SCRIPTSCRIPT},\n {type: \"small\", style: Style.SCRIPT},\n {type: \"small\", style: Style.TEXT},\n {type: \"stack\"}\n];\n\n// Delimiters that stack when large try the small and then large delimiters, and\n// stack afterwards\nvar stackLargeDelimiterSequence = [\n {type: \"small\", style: Style.SCRIPTSCRIPT},\n {type: \"small\", style: Style.SCRIPT},\n {type: \"small\", style: Style.TEXT},\n {type: \"large\", size: 1},\n {type: \"large\", size: 2},\n {type: \"large\", size: 3},\n {type: \"large\", size: 4},\n {type: \"stack\"}\n];\n\n/**\n * Get the font used in a delimiter based on what kind of delimiter it is.\n */\nvar delimTypeToFont = function(type) {\n if (type.type === \"small\") {\n return \"Main-Regular\";\n } else if (type.type === \"large\") {\n return \"Size\" + type.size + \"-Regular\";\n } else if (type.type === \"stack\") {\n return \"Size4-Regular\";\n }\n};\n\n/**\n * Traverse a sequence of types of delimiters to decide what kind of delimiter\n * should be used to create a delimiter of the given height+depth.\n */\nvar traverseSequence = function(delim, height, sequence, options) {\n // Here, we choose the index we should start at in the sequences. In smaller\n // sizes (which correspond to larger numbers in style.size) we start earlier\n // in the sequence. Thus, scriptscript starts at index 3-3=0, script starts\n // at index 3-2=1, text starts at 3-1=2, and display starts at min(2,3-0)=2\n var start = Math.min(2, 3 - options.style.size);\n for (var i = start; i < sequence.length; i++) {\n if (sequence[i].type === \"stack\") {\n // This is always the last delimiter, so we just break the loop now.\n break;\n }\n\n var metrics = getMetrics(delim, delimTypeToFont(sequence[i]));\n var heightDepth = metrics.height + metrics.depth;\n\n // Small delimiters are scaled down versions of the same font, so we\n // account for the style change size.\n\n if (sequence[i].type === \"small\") {\n heightDepth *= sequence[i].style.sizeMultiplier;\n }\n\n // Check if the delimiter at this size works for the given height.\n if (heightDepth > height) {\n return sequence[i];\n }\n }\n\n // If we reached the end of the sequence, return the last sequence element.\n return sequence[sequence.length - 1];\n};\n\n/**\n * Make a delimiter of a given height+depth, with optional centering. Here, we\n * traverse the sequences, and create a delimiter that the sequence tells us to.\n */\nvar makeCustomSizedDelim = function(delim, height, center, options, mode,\n classes) {\n if (delim === \"<\" || delim === \"\\\\lt\") {\n delim = \"\\\\langle\";\n } else if (delim === \">\" || delim === \"\\\\gt\") {\n delim = \"\\\\rangle\";\n }\n\n // Decide what sequence to use\n var sequence;\n if (utils.contains(stackNeverDelimiters, delim)) {\n sequence = stackNeverDelimiterSequence;\n } else if (utils.contains(stackLargeDelimiters, delim)) {\n sequence = stackLargeDelimiterSequence;\n } else {\n sequence = stackAlwaysDelimiterSequence;\n }\n\n // Look through the sequence\n var delimType = traverseSequence(delim, height, sequence, options);\n\n // Depending on the sequence element we decided on, call the appropriate\n // function.\n if (delimType.type === \"small\") {\n return makeSmallDelim(delim, delimType.style, center, options, mode,\n classes);\n } else if (delimType.type === \"large\") {\n return makeLargeDelim(delim, delimType.size, center, options, mode,\n classes);\n } else if (delimType.type === \"stack\") {\n return makeStackedDelim(delim, height, center, options, mode, classes);\n }\n};\n\n/**\n * Make a delimiter for use with `\\left` and `\\right`, given a height and depth\n * of an expression that the delimiters surround.\n */\nvar makeLeftRightDelim = function(delim, height, depth, options, mode,\n classes) {\n // We always center \\left/\\right delimiters, so the axis is always shifted\n var axisHeight =\n options.style.metrics.axisHeight * options.style.sizeMultiplier;\n\n // Taken from TeX source, tex.web, function make_left_right\n var delimiterFactor = 901;\n var delimiterExtend = 5.0 / fontMetrics.metrics.ptPerEm;\n\n var maxDistFromAxis = Math.max(\n height - axisHeight, depth + axisHeight);\n\n var totalHeight = Math.max(\n // In real TeX, calculations are done using integral values which are\n // 65536 per pt, or 655360 per em. So, the division here truncates in\n // TeX but doesn't here, producing different results. If we wanted to\n // exactly match TeX's calculation, we could do\n // Math.floor(655360 * maxDistFromAxis / 500) *\n // delimiterFactor / 655360\n // (To see the difference, compare\n // x^{x^{\\left(\\rule{0.1em}{0.68em}\\right)}}\n // in TeX and KaTeX)\n maxDistFromAxis / 500 * delimiterFactor,\n 2 * maxDistFromAxis - delimiterExtend);\n\n // Finally, we defer to `makeCustomSizedDelim` with our calculated total\n // height\n return makeCustomSizedDelim(delim, totalHeight, true, options, mode,\n classes);\n};\n\nmodule.exports = {\n sizedDelim: makeSizedDelim,\n customSizedDelim: makeCustomSizedDelim,\n leftRightDelim: makeLeftRightDelim\n};\n","/* eslint no-console:0 */\n/**\n * This file does the main work of building a domTree structure from a parse\n * tree. The entry point is the `buildHTML` function, which takes a parse tree.\n * Then, the buildExpression, buildGroup, and various groupTypes functions are\n * called, to produce a final HTML tree.\n */\n\nvar ParseError = require(\"./ParseError\");\nvar Style = require(\"./Style\");\n\nvar buildCommon = require(\"./buildCommon\");\nvar delimiter = require(\"./delimiter\");\nvar domTree = require(\"./domTree\");\nvar fontMetrics = require(\"./fontMetrics\");\nvar utils = require(\"./utils\");\n\nvar makeSpan = buildCommon.makeSpan;\n\nvar isSpace = function(node) {\n return node instanceof domTree.span && node.classes[0] === \"mspace\";\n};\n\n// Binary atoms (first class `mbin`) change into ordinary atoms (`mord`)\n// depending on their surroundings. See TeXbook pg. 442-446, Rules 5 and 6,\n// and the text before Rule 19.\n\nvar isBin = function(node) {\n return node && node.classes[0] === \"mbin\";\n};\n\nvar isBinLeftCanceller = function(node, isRealGroup) {\n // TODO: This code assumes that a node's math class is the first element\n // of its `classes` array. A later cleanup should ensure this, for\n // instance by changing the signature of `makeSpan`.\n if (node) {\n return utils.contains([\"mbin\", \"mopen\", \"mrel\", \"mop\", \"mpunct\"],\n node.classes[0]);\n } else {\n return isRealGroup;\n }\n};\n\nvar isBinRightCanceller = function(node, isRealGroup) {\n if (node) {\n return utils.contains([\"mrel\", \"mclose\", \"mpunct\"], node.classes[0]);\n } else {\n return isRealGroup;\n }\n};\n\n/**\n * Take a list of nodes, build them in order, and return a list of the built\n * nodes. documentFragments are flattened into their contents, so the\n * returned list contains no fragments. `isRealGroup` is true if `expression`\n * is a real group (no atoms will be added on either side), as opposed to\n * a partial group (e.g. one created by \\color).\n */\nvar buildExpression = function(expression, options, isRealGroup) {\n // Parse expressions into `groups`.\n var groups = [];\n for (var i = 0; i < expression.length; i++) {\n var group = expression[i];\n var output = buildGroup(group, options);\n if (output instanceof domTree.documentFragment) {\n Array.prototype.push.apply(groups, output.children);\n } else {\n groups.push(output);\n }\n }\n // At this point `groups` consists entirely of `symbolNode`s and `span`s.\n\n // Explicit spaces (e.g., \\;, \\,) should be ignored with respect to atom\n // spacing (e.g., \"add thick space between mord and mrel\"). Since CSS\n // adjacency rules implement atom spacing, spaces should be invisible to\n // CSS. So we splice them out of `groups` and into the atoms themselves.\n var spaces = null;\n for (i = 0; i < groups.length; i++) {\n if (isSpace(groups[i])) {\n spaces = spaces || [];\n spaces.push(groups[i]);\n groups.splice(i, 1);\n i--;\n } else if (spaces) {\n if (groups[i] instanceof domTree.symbolNode) {\n groups[i] = makeSpan([].concat(groups[i].classes), [groups[i]]);\n }\n buildCommon.prependChildren(groups[i], spaces);\n spaces = null;\n }\n }\n if (spaces) {\n Array.prototype.push.apply(groups, spaces);\n }\n\n // Binary operators change to ordinary symbols in some contexts.\n for (i = 0; i < groups.length; i++) {\n if (isBin(groups[i])\n && (isBinLeftCanceller(groups[i - 1], isRealGroup)\n || isBinRightCanceller(groups[i + 1], isRealGroup))) {\n groups[i].classes[0] = \"mord\";\n }\n }\n\n return groups;\n};\n\n// Return math atom class (mclass) of a domTree.\nvar getTypeOfDomTree = function(node) {\n if (node instanceof domTree.documentFragment) {\n if (node.children.length) {\n return getTypeOfDomTree(\n node.children[node.children.length - 1]);\n }\n } else {\n if (utils.contains([\"mord\", \"mop\", \"mbin\", \"mrel\", \"mopen\", \"mclose\",\n \"mpunct\", \"minner\"], node.classes[0])) {\n return node.classes[0];\n }\n }\n return null;\n};\n\n/**\n * Sometimes, groups perform special rules when they have superscripts or\n * subscripts attached to them. This function lets the `supsub` group know that\n * its inner element should handle the superscripts and subscripts instead of\n * handling them itself.\n */\nvar shouldHandleSupSub = function(group, options) {\n if (!group) {\n return false;\n } else if (group.type === \"op\") {\n // Operators handle supsubs differently when they have limits\n // (e.g. `\\displaystyle\\sum_2^3`)\n return group.value.limits &&\n (options.style.size === Style.DISPLAY.size ||\n group.value.alwaysHandleSupSub);\n } else if (group.type === \"accent\") {\n return isCharacterBox(group.value.base);\n } else {\n return null;\n }\n};\n\n/**\n * Sometimes we want to pull out the innermost element of a group. In most\n * cases, this will just be the group itself, but when ordgroups and colors have\n * a single element, we want to pull that out.\n */\nvar getBaseElem = function(group) {\n if (!group) {\n return false;\n } else if (group.type === \"ordgroup\") {\n if (group.value.length === 1) {\n return getBaseElem(group.value[0]);\n } else {\n return group;\n }\n } else if (group.type === \"color\") {\n if (group.value.value.length === 1) {\n return getBaseElem(group.value.value[0]);\n } else {\n return group;\n }\n } else if (group.type === \"font\") {\n return getBaseElem(group.value.body);\n } else {\n return group;\n }\n};\n\n/**\n * TeXbook algorithms often reference \"character boxes\", which are simply groups\n * with a single character in them. To decide if something is a character box,\n * we find its innermost group, and see if it is a single character.\n */\nvar isCharacterBox = function(group) {\n var baseElem = getBaseElem(group);\n\n // These are all they types of groups which hold single characters\n return baseElem.type === \"mathord\" ||\n baseElem.type === \"textord\" ||\n baseElem.type === \"bin\" ||\n baseElem.type === \"rel\" ||\n baseElem.type === \"inner\" ||\n baseElem.type === \"open\" ||\n baseElem.type === \"close\" ||\n baseElem.type === \"punct\";\n};\n\nvar makeNullDelimiter = function(options, classes) {\n return makeSpan(classes.concat([\n \"sizing\", \"reset-\" + options.size, \"size5\",\n options.style.reset(), Style.TEXT.cls(),\n \"nulldelimiter\"]));\n};\n\n/**\n * This is a map of group types to the function used to handle that type.\n * Simpler types come at the beginning, while complicated types come afterwards.\n */\nvar groupTypes = {};\n\ngroupTypes.mathord = function(group, options) {\n return buildCommon.makeOrd(group, options, \"mathord\");\n};\n\ngroupTypes.textord = function(group, options) {\n return buildCommon.makeOrd(group, options, \"textord\");\n};\n\ngroupTypes.bin = function(group, options) {\n return buildCommon.mathsym(\n group.value, group.mode, options, [\"mbin\"]);\n};\n\ngroupTypes.rel = function(group, options) {\n return buildCommon.mathsym(\n group.value, group.mode, options, [\"mrel\"]);\n};\n\ngroupTypes.open = function(group, options) {\n return buildCommon.mathsym(\n group.value, group.mode, options, [\"mopen\"]);\n};\n\ngroupTypes.close = function(group, options) {\n return buildCommon.mathsym(\n group.value, group.mode, options, [\"mclose\"]);\n};\n\ngroupTypes.inner = function(group, options) {\n return buildCommon.mathsym(\n group.value, group.mode, options, [\"minner\"]);\n};\n\ngroupTypes.punct = function(group, options) {\n return buildCommon.mathsym(\n group.value, group.mode, options, [\"mpunct\"]);\n};\n\ngroupTypes.ordgroup = function(group, options) {\n return makeSpan(\n [\"mord\", options.style.cls()],\n buildExpression(group.value, options.reset(), true),\n options\n );\n};\n\ngroupTypes.text = function(group, options) {\n var newOptions = options.withFont(group.value.style);\n var inner = buildExpression(group.value.body, newOptions, true);\n for (var i = 0; i < inner.length - 1; i++) {\n if (inner[i].tryCombine(inner[i + 1])) {\n inner.splice(i + 1, 1);\n i--;\n }\n }\n return makeSpan([\"mord\", \"text\", newOptions.style.cls()],\n inner, newOptions);\n};\n\ngroupTypes.color = function(group, options) {\n var elements = buildExpression(\n group.value.value,\n options.withColor(group.value.color),\n false\n );\n\n // \\color isn't supposed to affect the type of the elements it contains.\n // To accomplish this, we wrap the results in a fragment, so the inner\n // elements will be able to directly interact with their neighbors. For\n // example, `\\color{red}{2 +} 3` has the same spacing as `2 + 3`\n return new buildCommon.makeFragment(elements);\n};\n\ngroupTypes.supsub = function(group, options) {\n // Superscript and subscripts are handled in the TeXbook on page\n // 445-446, rules 18(a-f).\n\n // Here is where we defer to the inner group if it should handle\n // superscripts and subscripts itself.\n if (shouldHandleSupSub(group.value.base, options)) {\n return groupTypes[group.value.base.type](group, options);\n }\n\n var base = buildGroup(group.value.base, options.reset());\n var supmid;\n var submid;\n var sup;\n var sub;\n\n var style = options.style;\n var newOptions;\n\n if (group.value.sup) {\n newOptions = options.withStyle(style.sup());\n sup = buildGroup(group.value.sup, newOptions);\n supmid = makeSpan([style.reset(), style.sup().cls()],\n [sup], newOptions);\n }\n\n if (group.value.sub) {\n newOptions = options.withStyle(style.sub());\n sub = buildGroup(group.value.sub, newOptions);\n submid = makeSpan([style.reset(), style.sub().cls()],\n [sub], newOptions);\n }\n\n // Rule 18a\n var supShift;\n var subShift;\n if (isCharacterBox(group.value.base)) {\n supShift = 0;\n subShift = 0;\n } else {\n supShift = base.height - style.metrics.supDrop;\n subShift = base.depth + style.metrics.subDrop;\n }\n\n // Rule 18c\n var minSupShift;\n if (style === Style.DISPLAY) {\n minSupShift = style.metrics.sup1;\n } else if (style.cramped) {\n minSupShift = style.metrics.sup3;\n } else {\n minSupShift = style.metrics.sup2;\n }\n\n // scriptspace is a font-size-independent size, so scale it\n // appropriately\n var multiplier = Style.TEXT.sizeMultiplier *\n style.sizeMultiplier;\n var scriptspace =\n (0.5 / fontMetrics.metrics.ptPerEm) / multiplier + \"em\";\n\n var supsub;\n if (!group.value.sup) {\n // Rule 18b\n subShift = Math.max(\n subShift, style.metrics.sub1,\n sub.height - 0.8 * style.metrics.xHeight);\n\n supsub = buildCommon.makeVList([\n {type: \"elem\", elem: submid}\n ], \"shift\", subShift, options);\n\n supsub.children[0].style.marginRight = scriptspace;\n\n // Subscripts shouldn't be shifted by the base's italic correction.\n // Account for that by shifting the subscript back the appropriate\n // amount. Note we only do this when the base is a single symbol.\n if (base instanceof domTree.symbolNode) {\n supsub.children[0].style.marginLeft = -base.italic + \"em\";\n }\n } else if (!group.value.sub) {\n // Rule 18c, d\n supShift = Math.max(supShift, minSupShift,\n sup.depth + 0.25 * style.metrics.xHeight);\n\n supsub = buildCommon.makeVList([\n {type: \"elem\", elem: supmid}\n ], \"shift\", -supShift, options);\n\n supsub.children[0].style.marginRight = scriptspace;\n } else {\n supShift = Math.max(\n supShift, minSupShift, sup.depth + 0.25 * style.metrics.xHeight);\n subShift = Math.max(subShift, style.metrics.sub2);\n\n var ruleWidth = fontMetrics.metrics.defaultRuleThickness;\n\n // Rule 18e\n if ((supShift - sup.depth) - (sub.height - subShift) <\n 4 * ruleWidth) {\n subShift = 4 * ruleWidth - (supShift - sup.depth) + sub.height;\n var psi = 0.8 * style.metrics.xHeight - (supShift - sup.depth);\n if (psi > 0) {\n supShift += psi;\n subShift -= psi;\n }\n }\n\n supsub = buildCommon.makeVList([\n {type: \"elem\", elem: submid, shift: subShift},\n {type: \"elem\", elem: supmid, shift: -supShift}\n ], \"individualShift\", null, options);\n\n // See comment above about subscripts not being shifted\n if (base instanceof domTree.symbolNode) {\n supsub.children[0].style.marginLeft = -base.italic + \"em\";\n }\n\n supsub.children[0].style.marginRight = scriptspace;\n supsub.children[1].style.marginRight = scriptspace;\n }\n\n // We ensure to wrap the supsub vlist in a span.msupsub to reset text-align\n var mclass = getTypeOfDomTree(base) || \"mord\";\n return makeSpan([mclass],\n [base, makeSpan([\"msupsub\"], [supsub])],\n options);\n};\n\ngroupTypes.genfrac = function(group, options) {\n // Fractions are handled in the TeXbook on pages 444-445, rules 15(a-e).\n // Figure out what style this fraction should be in based on the\n // function used\n var style = options.style;\n if (group.value.size === \"display\") {\n style = Style.DISPLAY;\n } else if (group.value.size === \"text\") {\n style = Style.TEXT;\n }\n\n var nstyle = style.fracNum();\n var dstyle = style.fracDen();\n var newOptions;\n\n newOptions = options.withStyle(nstyle);\n var numer = buildGroup(group.value.numer, newOptions);\n var numerreset = makeSpan([style.reset(), nstyle.cls()],\n [numer], newOptions);\n\n newOptions = options.withStyle(dstyle);\n var denom = buildGroup(group.value.denom, newOptions);\n var denomreset = makeSpan([style.reset(), dstyle.cls()],\n [denom], newOptions);\n\n var ruleWidth;\n if (group.value.hasBarLine) {\n ruleWidth = fontMetrics.metrics.defaultRuleThickness /\n options.style.sizeMultiplier;\n } else {\n ruleWidth = 0;\n }\n\n // Rule 15b\n var numShift;\n var clearance;\n var denomShift;\n if (style.size === Style.DISPLAY.size) {\n numShift = style.metrics.num1;\n if (ruleWidth > 0) {\n clearance = 3 * ruleWidth;\n } else {\n clearance = 7 * fontMetrics.metrics.defaultRuleThickness;\n }\n denomShift = style.metrics.denom1;\n } else {\n if (ruleWidth > 0) {\n numShift = style.metrics.num2;\n clearance = ruleWidth;\n } else {\n numShift = style.metrics.num3;\n clearance = 3 * fontMetrics.metrics.defaultRuleThickness;\n }\n denomShift = style.metrics.denom2;\n }\n\n var frac;\n if (ruleWidth === 0) {\n // Rule 15c\n var candidateClearance =\n (numShift - numer.depth) - (denom.height - denomShift);\n if (candidateClearance < clearance) {\n numShift += 0.5 * (clearance - candidateClearance);\n denomShift += 0.5 * (clearance - candidateClearance);\n }\n\n frac = buildCommon.makeVList([\n {type: \"elem\", elem: denomreset, shift: denomShift},\n {type: \"elem\", elem: numerreset, shift: -numShift}\n ], \"individualShift\", null, options);\n } else {\n // Rule 15d\n var axisHeight = style.metrics.axisHeight;\n\n if ((numShift - numer.depth) - (axisHeight + 0.5 * ruleWidth) <\n clearance) {\n numShift +=\n clearance - ((numShift - numer.depth) -\n (axisHeight + 0.5 * ruleWidth));\n }\n\n if ((axisHeight - 0.5 * ruleWidth) - (denom.height - denomShift) <\n clearance) {\n denomShift +=\n clearance - ((axisHeight - 0.5 * ruleWidth) -\n (denom.height - denomShift));\n }\n\n var mid = makeSpan(\n [options.style.reset(), Style.TEXT.cls(), \"frac-line\"]);\n // Manually set the height of the line because its height is\n // created in CSS\n mid.height = ruleWidth;\n\n var midShift = -(axisHeight - 0.5 * ruleWidth);\n\n frac = buildCommon.makeVList([\n {type: \"elem\", elem: denomreset, shift: denomShift},\n {type: \"elem\", elem: mid, shift: midShift},\n {type: \"elem\", elem: numerreset, shift: -numShift}\n ], \"individualShift\", null, options);\n }\n\n // Since we manually change the style sometimes (with \\dfrac or \\tfrac),\n // account for the possible size change here.\n frac.height *= style.sizeMultiplier / options.style.sizeMultiplier;\n frac.depth *= style.sizeMultiplier / options.style.sizeMultiplier;\n\n // Rule 15e\n var delimSize;\n if (style.size === Style.DISPLAY.size) {\n delimSize = style.metrics.delim1;\n } else {\n delimSize = style.metrics.delim2;\n }\n\n var leftDelim;\n var rightDelim;\n if (group.value.leftDelim == null) {\n leftDelim = makeNullDelimiter(options, [\"mopen\"]);\n } else {\n leftDelim = delimiter.customSizedDelim(\n group.value.leftDelim, delimSize, true,\n options.withStyle(style), group.mode, [\"mopen\"]);\n }\n if (group.value.rightDelim == null) {\n rightDelim = makeNullDelimiter(options, [\"mclose\"]);\n } else {\n rightDelim = delimiter.customSizedDelim(\n group.value.rightDelim, delimSize, true,\n options.withStyle(style), group.mode, [\"mclose\"]);\n }\n\n return makeSpan(\n [\"mord\", options.style.reset(), style.cls()],\n [leftDelim, makeSpan([\"mfrac\"], [frac]), rightDelim],\n options);\n};\n\nvar calculateSize = function(sizeValue, style) {\n var x = sizeValue.number;\n if (sizeValue.unit === \"ex\") {\n x *= style.metrics.emPerEx;\n } else if (sizeValue.unit === \"mu\") {\n x /= 18;\n }\n return x;\n};\n\ngroupTypes.array = function(group, options) {\n var r;\n var c;\n var nr = group.value.body.length;\n var nc = 0;\n var body = new Array(nr);\n\n var style = options.style;\n\n // Horizontal spacing\n var pt = 1 / fontMetrics.metrics.ptPerEm;\n var arraycolsep = 5 * pt; // \\arraycolsep in article.cls\n\n // Vertical spacing\n var baselineskip = 12 * pt; // see size10.clo\n // Default \\arraystretch from lttab.dtx\n // TODO(gagern): may get redefined once we have user-defined macros\n var arraystretch = utils.deflt(group.value.arraystretch, 1);\n var arrayskip = arraystretch * baselineskip;\n var arstrutHeight = 0.7 * arrayskip; // \\strutbox in ltfsstrc.dtx and\n var arstrutDepth = 0.3 * arrayskip; // \\@arstrutbox in lttab.dtx\n\n var totalHeight = 0;\n for (r = 0; r < group.value.body.length; ++r) {\n var inrow = group.value.body[r];\n var height = arstrutHeight; // \\@array adds an \\@arstrut\n var depth = arstrutDepth; // to each tow (via the template)\n\n if (nc < inrow.length) {\n nc = inrow.length;\n }\n\n var outrow = new Array(inrow.length);\n for (c = 0; c < inrow.length; ++c) {\n var elt = buildGroup(inrow[c], options);\n if (depth < elt.depth) {\n depth = elt.depth;\n }\n if (height < elt.height) {\n height = elt.height;\n }\n outrow[c] = elt;\n }\n\n var gap = 0;\n if (group.value.rowGaps[r]) {\n gap = calculateSize(group.value.rowGaps[r].value, style);\n if (gap > 0) { // \\@argarraycr\n gap += arstrutDepth;\n if (depth < gap) {\n depth = gap; // \\@xargarraycr\n }\n gap = 0;\n }\n }\n\n outrow.height = height;\n outrow.depth = depth;\n totalHeight += height;\n outrow.pos = totalHeight;\n totalHeight += depth + gap; // \\@yargarraycr\n body[r] = outrow;\n }\n\n var offset = totalHeight / 2 + style.metrics.axisHeight;\n var colDescriptions = group.value.cols || [];\n var cols = [];\n var colSep;\n var colDescrNum;\n for (c = 0, colDescrNum = 0;\n // Continue while either there are more columns or more column\n // descriptions, so trailing separators don't get lost.\n c < nc || colDescrNum < colDescriptions.length;\n ++c, ++colDescrNum) {\n\n var colDescr = colDescriptions[colDescrNum] || {};\n\n var firstSeparator = true;\n while (colDescr.type === \"separator\") {\n // If there is more than one separator in a row, add a space\n // between them.\n if (!firstSeparator) {\n colSep = makeSpan([\"arraycolsep\"], []);\n colSep.style.width =\n fontMetrics.metrics.doubleRuleSep + \"em\";\n cols.push(colSep);\n }\n\n if (colDescr.separator === \"|\") {\n var separator = makeSpan(\n [\"vertical-separator\"],\n []);\n separator.style.height = totalHeight + \"em\";\n separator.style.verticalAlign =\n -(totalHeight - offset) + \"em\";\n\n cols.push(separator);\n } else {\n throw new ParseError(\n \"Invalid separator type: \" + colDescr.separator);\n }\n\n colDescrNum++;\n colDescr = colDescriptions[colDescrNum] || {};\n firstSeparator = false;\n }\n\n if (c >= nc) {\n continue;\n }\n\n var sepwidth;\n if (c > 0 || group.value.hskipBeforeAndAfter) {\n sepwidth = utils.deflt(colDescr.pregap, arraycolsep);\n if (sepwidth !== 0) {\n colSep = makeSpan([\"arraycolsep\"], []);\n colSep.style.width = sepwidth + \"em\";\n cols.push(colSep);\n }\n }\n\n var col = [];\n for (r = 0; r < nr; ++r) {\n var row = body[r];\n var elem = row[c];\n if (!elem) {\n continue;\n }\n var shift = row.pos - offset;\n elem.depth = row.depth;\n elem.height = row.height;\n col.push({type: \"elem\", elem: elem, shift: shift});\n }\n\n col = buildCommon.makeVList(col, \"individualShift\", null, options);\n col = makeSpan(\n [\"col-align-\" + (colDescr.align || \"c\")],\n [col]);\n cols.push(col);\n\n if (c < nc - 1 || group.value.hskipBeforeAndAfter) {\n sepwidth = utils.deflt(colDescr.postgap, arraycolsep);\n if (sepwidth !== 0) {\n colSep = makeSpan([\"arraycolsep\"], []);\n colSep.style.width = sepwidth + \"em\";\n cols.push(colSep);\n }\n }\n }\n body = makeSpan([\"mtable\"], cols);\n return makeSpan([\"mord\"], [body], options);\n};\n\ngroupTypes.spacing = function(group, options) {\n if (group.value === \"\\\\ \" || group.value === \"\\\\space\" ||\n group.value === \" \" || group.value === \"~\") {\n // Spaces are generated by adding an actual space. Each of these\n // things has an entry in the symbols table, so these will be turned\n // into appropriate outputs.\n if (group.mode === \"text\") {\n return buildCommon.makeOrd(group, options, \"textord\");\n } else {\n return makeSpan([\"mspace\"],\n [buildCommon.mathsym(group.value, group.mode, options)],\n options);\n }\n } else {\n // Other kinds of spaces are of arbitrary width. We use CSS to\n // generate these.\n return makeSpan(\n [\"mspace\",\n buildCommon.spacingFunctions[group.value].className],\n [], options);\n }\n};\n\ngroupTypes.llap = function(group, options) {\n var inner = makeSpan(\n [\"inner\"], [buildGroup(group.value.body, options.reset())]);\n var fix = makeSpan([\"fix\"], []);\n return makeSpan(\n [\"mord\", \"llap\", options.style.cls()], [inner, fix], options);\n};\n\ngroupTypes.rlap = function(group, options) {\n var inner = makeSpan(\n [\"inner\"], [buildGroup(group.value.body, options.reset())]);\n var fix = makeSpan([\"fix\"], []);\n return makeSpan(\n [\"mord\", \"rlap\", options.style.cls()], [inner, fix], options);\n};\n\ngroupTypes.op = function(group, options) {\n // Operators are handled in the TeXbook pg. 443-444, rule 13(a).\n var supGroup;\n var subGroup;\n var hasLimits = false;\n if (group.type === \"supsub\") {\n // If we have limits, supsub will pass us its group to handle. Pull\n // out the superscript and subscript and set the group to the op in\n // its base.\n supGroup = group.value.sup;\n subGroup = group.value.sub;\n group = group.value.base;\n hasLimits = true;\n }\n\n var style = options.style;\n\n // Most operators have a large successor symbol, but these don't.\n var noSuccessor = [\n \"\\\\smallint\"\n ];\n\n var large = false;\n if (style.size === Style.DISPLAY.size &&\n group.value.symbol &&\n !utils.contains(noSuccessor, group.value.body)) {\n\n // Most symbol operators get larger in displaystyle (rule 13)\n large = true;\n }\n\n var base;\n var baseShift = 0;\n var slant = 0;\n if (group.value.symbol) {\n // If this is a symbol, create the symbol.\n var fontName = large ? \"Size2-Regular\" : \"Size1-Regular\";\n base = buildCommon.makeSymbol(\n group.value.body, fontName, \"math\", options,\n [\"mop\", \"op-symbol\", large ? \"large-op\" : \"small-op\"]);\n\n // Shift the symbol so its center lies on the axis (rule 13). It\n // appears that our fonts have the centers of the symbols already\n // almost on the axis, so these numbers are very small. Note we\n // don't actually apply this here, but instead it is used either in\n // the vlist creation or separately when there are no limits.\n baseShift = (base.height - base.depth) / 2 -\n style.metrics.axisHeight * style.sizeMultiplier;\n\n // The slant of the symbol is just its italic correction.\n slant = base.italic;\n } else if (group.value.value) {\n // If this is a list, compose that list.\n var inner = buildExpression(group.value.value, options, true);\n\n base = makeSpan([\"mop\"], inner, options);\n } else {\n // Otherwise, this is a text operator. Build the text from the\n // operator's name.\n // TODO(emily): Add a space in the middle of some of these\n // operators, like \\limsup\n var output = [];\n for (var i = 1; i < group.value.body.length; i++) {\n output.push(buildCommon.mathsym(group.value.body[i], group.mode));\n }\n base = makeSpan([\"mop\"], output, options);\n }\n\n if (hasLimits) {\n // IE 8 clips \\int if it is in a display: inline-block. We wrap it\n // in a new span so it is an inline, and works.\n base = makeSpan([], [base]);\n\n var supmid;\n var supKern;\n var submid;\n var subKern;\n var newOptions;\n // We manually have to handle the superscripts and subscripts. This,\n // aside from the kern calculations, is copied from supsub.\n if (supGroup) {\n newOptions = options.withStyle(style.sup());\n var sup = buildGroup(supGroup, newOptions);\n supmid = makeSpan([style.reset(), style.sup().cls()],\n [sup], newOptions);\n\n supKern = Math.max(\n fontMetrics.metrics.bigOpSpacing1,\n fontMetrics.metrics.bigOpSpacing3 - sup.depth);\n }\n\n if (subGroup) {\n newOptions = options.withStyle(style.sub());\n var sub = buildGroup(subGroup, newOptions);\n submid = makeSpan([style.reset(), style.sub().cls()],\n [sub], newOptions);\n\n subKern = Math.max(\n fontMetrics.metrics.bigOpSpacing2,\n fontMetrics.metrics.bigOpSpacing4 - sub.height);\n }\n\n // Build the final group as a vlist of the possible subscript, base,\n // and possible superscript.\n var finalGroup;\n var top;\n var bottom;\n if (!supGroup) {\n top = base.height - baseShift;\n\n finalGroup = buildCommon.makeVList([\n {type: \"kern\", size: fontMetrics.metrics.bigOpSpacing5},\n {type: \"elem\", elem: submid},\n {type: \"kern\", size: subKern},\n {type: \"elem\", elem: base}\n ], \"top\", top, options);\n\n // Here, we shift the limits by the slant of the symbol. Note\n // that we are supposed to shift the limits by 1/2 of the slant,\n // but since we are centering the limits adding a full slant of\n // margin will shift by 1/2 that.\n finalGroup.children[0].style.marginLeft = -slant + \"em\";\n } else if (!subGroup) {\n bottom = base.depth + baseShift;\n\n finalGroup = buildCommon.makeVList([\n {type: \"elem\", elem: base},\n {type: \"kern\", size: supKern},\n {type: \"elem\", elem: supmid},\n {type: \"kern\", size: fontMetrics.metrics.bigOpSpacing5}\n ], \"bottom\", bottom, options);\n\n // See comment above about slants\n finalGroup.children[1].style.marginLeft = slant + \"em\";\n } else if (!supGroup && !subGroup) {\n // This case probably shouldn't occur (this would mean the\n // supsub was sending us a group with no superscript or\n // subscript) but be safe.\n return base;\n } else {\n bottom = fontMetrics.metrics.bigOpSpacing5 +\n submid.height + submid.depth +\n subKern +\n base.depth + baseShift;\n\n finalGroup = buildCommon.makeVList([\n {type: \"kern\", size: fontMetrics.metrics.bigOpSpacing5},\n {type: \"elem\", elem: submid},\n {type: \"kern\", size: subKern},\n {type: \"elem\", elem: base},\n {type: \"kern\", size: supKern},\n {type: \"elem\", elem: supmid},\n {type: \"kern\", size: fontMetrics.metrics.bigOpSpacing5}\n ], \"bottom\", bottom, options);\n\n // See comment above about slants\n finalGroup.children[0].style.marginLeft = -slant + \"em\";\n finalGroup.children[2].style.marginLeft = slant + \"em\";\n }\n\n return makeSpan([\"mop\", \"op-limits\"], [finalGroup], options);\n } else {\n if (group.value.symbol) {\n base.style.top = baseShift + \"em\";\n }\n\n return base;\n }\n};\n\ngroupTypes.mod = function(group, options) {\n var inner = [];\n\n if (group.value.modType === \"bmod\") {\n // “\\nonscript\\mskip-\\medmuskip\\mkern5mu”\n if (!options.style.isTight()) {\n inner.push(makeSpan(\n [\"mspace\", \"negativemediumspace\"], [], options));\n }\n inner.push(makeSpan([\"mspace\", \"thickspace\"], [], options));\n } else if (options.style.size === Style.DISPLAY.size) {\n inner.push(makeSpan([\"mspace\", \"quad\"], [], options));\n } else if (group.value.modType === \"mod\") {\n inner.push(makeSpan([\"mspace\", \"twelvemuspace\"], [], options));\n } else {\n inner.push(makeSpan([\"mspace\", \"eightmuspace\"], [], options));\n }\n\n if (group.value.modType === \"pod\" || group.value.modType === \"pmod\") {\n inner.push(buildCommon.mathsym(\"(\", group.mode));\n }\n\n if (group.value.modType !== \"pod\") {\n var modInner = [\n buildCommon.mathsym(\"m\", group.mode),\n buildCommon.mathsym(\"o\", group.mode),\n buildCommon.mathsym(\"d\", group.mode)];\n if (group.value.modType === \"bmod\") {\n inner.push(makeSpan([\"mbin\"], modInner, options));\n // “\\mkern5mu\\nonscript\\mskip-\\medmuskip”\n inner.push(makeSpan([\"mspace\", \"thickspace\"], [], options));\n if (!options.style.isTight()) {\n inner.push(makeSpan(\n [\"mspace\", \"negativemediumspace\"], [], options));\n }\n } else {\n Array.prototype.push.apply(inner, modInner);\n inner.push(makeSpan([\"mspace\", \"sixmuspace\"], [], options));\n }\n }\n\n if (group.value.value) {\n Array.prototype.push.apply(inner,\n buildExpression(group.value.value, options, false));\n }\n\n if (group.value.modType === \"pod\" || group.value.modType === \"pmod\") {\n inner.push(buildCommon.mathsym(\")\", group.mode));\n }\n\n return buildCommon.makeFragment(inner);\n};\n\ngroupTypes.katex = function(group, options) {\n // The KaTeX logo. The offsets for the K and a were chosen to look\n // good, but the offsets for the T, E, and X were taken from the\n // definition of \\TeX in TeX (see TeXbook pg. 356)\n var k = makeSpan(\n [\"k\"], [buildCommon.mathsym(\"K\", group.mode)], options);\n var a = makeSpan(\n [\"a\"], [buildCommon.mathsym(\"A\", group.mode)], options);\n\n a.height = (a.height + 0.2) * 0.75;\n a.depth = (a.height - 0.2) * 0.75;\n\n var t = makeSpan(\n [\"t\"], [buildCommon.mathsym(\"T\", group.mode)], options);\n var e = makeSpan(\n [\"e\"], [buildCommon.mathsym(\"E\", group.mode)], options);\n\n e.height = (e.height - 0.2155);\n e.depth = (e.depth + 0.2155);\n\n var x = makeSpan(\n [\"x\"], [buildCommon.mathsym(\"X\", group.mode)], options);\n\n return makeSpan(\n [\"mord\", \"katex-logo\"], [k, a, t, e, x], options);\n};\n\ngroupTypes.overline = function(group, options) {\n // Overlines are handled in the TeXbook pg 443, Rule 9.\n var style = options.style;\n\n // Build the inner group in the cramped style.\n var innerGroup = buildGroup(group.value.body,\n options.withStyle(style.cramp()));\n\n var ruleWidth = fontMetrics.metrics.defaultRuleThickness /\n style.sizeMultiplier;\n\n // Create the line above the body\n var line = makeSpan(\n [style.reset(), Style.TEXT.cls(), \"overline-line\"]);\n line.height = ruleWidth;\n line.maxFontSize = 1.0;\n\n // Generate the vlist, with the appropriate kerns\n var vlist = buildCommon.makeVList([\n {type: \"elem\", elem: innerGroup},\n {type: \"kern\", size: 3 * ruleWidth},\n {type: \"elem\", elem: line},\n {type: \"kern\", size: ruleWidth}\n ], \"firstBaseline\", null, options);\n\n return makeSpan([\"mord\", \"overline\"], [vlist], options);\n};\n\ngroupTypes.underline = function(group, options) {\n // Underlines are handled in the TeXbook pg 443, Rule 10.\n var style = options.style;\n\n // Build the inner group.\n var innerGroup = buildGroup(group.value.body, options);\n\n var ruleWidth = fontMetrics.metrics.defaultRuleThickness /\n style.sizeMultiplier;\n\n // Create the line above the body\n var line = makeSpan([style.reset(), Style.TEXT.cls(), \"underline-line\"]);\n line.height = ruleWidth;\n line.maxFontSize = 1.0;\n\n // Generate the vlist, with the appropriate kerns\n var vlist = buildCommon.makeVList([\n {type: \"kern\", size: ruleWidth},\n {type: \"elem\", elem: line},\n {type: \"kern\", size: 3 * ruleWidth},\n {type: \"elem\", elem: innerGroup}\n ], \"top\", innerGroup.height, options);\n\n return makeSpan([\"mord\", \"underline\"], [vlist], options);\n};\n\ngroupTypes.sqrt = function(group, options) {\n // Square roots are handled in the TeXbook pg. 443, Rule 11.\n var style = options.style;\n\n // First, we do the same steps as in overline to build the inner group\n // and line\n var inner = buildGroup(group.value.body, options.withStyle(style.cramp()));\n\n var ruleWidth = fontMetrics.metrics.defaultRuleThickness /\n style.sizeMultiplier;\n\n var line = makeSpan(\n [style.reset(), Style.TEXT.cls(), \"sqrt-line\"], [],\n options);\n line.height = ruleWidth;\n line.maxFontSize = 1.0;\n\n var phi = ruleWidth;\n if (style.id < Style.TEXT.id) {\n phi = style.metrics.xHeight;\n }\n\n // Calculate the clearance between the body and line\n var lineClearance = ruleWidth + phi / 4;\n\n var innerHeight = (inner.height + inner.depth) * style.sizeMultiplier;\n var minDelimiterHeight = innerHeight + lineClearance + ruleWidth;\n\n // Create a \\surd delimiter of the required minimum size\n var delim = makeSpan([\"sqrt-sign\"], [\n delimiter.customSizedDelim(\"\\\\surd\", minDelimiterHeight,\n false, options, group.mode)],\n options);\n\n var delimDepth = (delim.height + delim.depth) - ruleWidth;\n\n // Adjust the clearance based on the delimiter size\n if (delimDepth > inner.height + inner.depth + lineClearance) {\n lineClearance =\n (lineClearance + delimDepth - inner.height - inner.depth) / 2;\n }\n\n // Shift the delimiter so that its top lines up with the top of the line\n var delimShift = -(inner.height + lineClearance + ruleWidth) + delim.height;\n delim.style.top = delimShift + \"em\";\n delim.height -= delimShift;\n delim.depth += delimShift;\n\n // We add a special case here, because even when `inner` is empty, we\n // still get a line. So, we use a simple heuristic to decide if we\n // should omit the body entirely. (note this doesn't work for something\n // like `\\sqrt{\\rlap{x}}`, but if someone is doing that they deserve for\n // it not to work.\n var body;\n if (inner.height === 0 && inner.depth === 0) {\n body = makeSpan();\n } else {\n body = buildCommon.makeVList([\n {type: \"elem\", elem: inner},\n {type: \"kern\", size: lineClearance},\n {type: \"elem\", elem: line},\n {type: \"kern\", size: ruleWidth}\n ], \"firstBaseline\", null, options);\n }\n\n if (!group.value.index) {\n return makeSpan([\"mord\", \"sqrt\"], [delim, body], options);\n } else {\n // Handle the optional root index\n\n // The index is always in scriptscript style\n var newOptions = options.withStyle(Style.SCRIPTSCRIPT);\n var root = buildGroup(group.value.index, newOptions);\n var rootWrap = makeSpan(\n [style.reset(), Style.SCRIPTSCRIPT.cls()],\n [root],\n newOptions);\n\n // Figure out the height and depth of the inner part\n var innerRootHeight = Math.max(delim.height, body.height);\n var innerRootDepth = Math.max(delim.depth, body.depth);\n\n // The amount the index is shifted by. This is taken from the TeX\n // source, in the definition of `\\r@@t`.\n var toShift = 0.6 * (innerRootHeight - innerRootDepth);\n\n // Build a VList with the superscript shifted up correctly\n var rootVList = buildCommon.makeVList(\n [{type: \"elem\", elem: rootWrap}],\n \"shift\", -toShift, options);\n // Add a class surrounding it so we can add on the appropriate\n // kerning\n var rootVListWrap = makeSpan([\"root\"], [rootVList]);\n\n return makeSpan([\"mord\", \"sqrt\"],\n [rootVListWrap, delim, body], options);\n }\n};\n\ngroupTypes.sizing = function(group, options) {\n // Handle sizing operators like \\Huge. Real TeX doesn't actually allow\n // these functions inside of math expressions, so we do some special\n // handling.\n var inner = buildExpression(group.value.value,\n options.withSize(group.value.size), false);\n\n // Compute the correct maxFontSize.\n var style = options.style;\n var fontSize = buildCommon.sizingMultiplier[group.value.size];\n fontSize = fontSize * style.sizeMultiplier;\n\n // Add size-resetting classes to the inner list and set maxFontSize\n // manually. Handle nested size changes.\n for (var i = 0; i < inner.length; i++) {\n var pos = utils.indexOf(inner[i].classes, \"sizing\");\n if (pos < 0) {\n inner[i].classes.push(\"sizing\", \"reset-\" + options.size,\n group.value.size, style.cls());\n inner[i].maxFontSize = fontSize;\n } else if (inner[i].classes[pos + 1] === \"reset-\" + group.value.size) {\n // This is a nested size change: e.g., inner[i] is the \"b\" in\n // `\\Huge a \\small b`. Override the old size (the `reset-` class)\n // but not the new size.\n inner[i].classes[pos + 1] = \"reset-\" + options.size;\n }\n }\n\n return buildCommon.makeFragment(inner);\n};\n\ngroupTypes.styling = function(group, options) {\n // Style changes are handled in the TeXbook on pg. 442, Rule 3.\n\n // Figure out what style we're changing to.\n var styleMap = {\n \"display\": Style.DISPLAY,\n \"text\": Style.TEXT,\n \"script\": Style.SCRIPT,\n \"scriptscript\": Style.SCRIPTSCRIPT\n };\n\n var newStyle = styleMap[group.value.style];\n var newOptions = options.withStyle(newStyle);\n\n // Build the inner expression in the new style.\n var inner = buildExpression(\n group.value.value, newOptions, false);\n\n // Add style-resetting classes to the inner list. Handle nested changes.\n for (var i = 0; i < inner.length; i++) {\n var pos = utils.indexOf(inner[i].classes, newStyle.reset());\n if (pos < 0) {\n inner[i].classes.push(options.style.reset(), newStyle.cls());\n } else {\n // This is a nested style change, as `\\textstyle a\\scriptstyle b`.\n // Only override the old style (the reset class).\n inner[i].classes[pos] = options.style.reset();\n }\n }\n\n return new buildCommon.makeFragment(inner);\n};\n\ngroupTypes.font = function(group, options) {\n var font = group.value.font;\n return buildGroup(group.value.body, options.withFont(font));\n};\n\ngroupTypes.delimsizing = function(group, options) {\n var delim = group.value.value;\n\n if (delim === \".\") {\n // Empty delimiters still count as elements, even though they don't\n // show anything.\n return makeSpan([group.value.mclass]);\n }\n\n // Use delimiter.sizedDelim to generate the delimiter.\n return delimiter.sizedDelim(\n delim, group.value.size, options, group.mode,\n [group.value.mclass]);\n};\n\ngroupTypes.leftright = function(group, options) {\n // Build the inner expression\n var inner = buildExpression(group.value.body, options.reset(), true);\n\n var innerHeight = 0;\n var innerDepth = 0;\n var hadMiddle = false;\n\n // Calculate its height and depth\n for (var i = 0; i < inner.length; i++) {\n if (inner[i].isMiddle) {\n hadMiddle = true;\n } else {\n innerHeight = Math.max(inner[i].height, innerHeight);\n innerDepth = Math.max(inner[i].depth, innerDepth);\n }\n }\n\n var style = options.style;\n\n // The size of delimiters is the same, regardless of what style we are\n // in. Thus, to correctly calculate the size of delimiter we need around\n // a group, we scale down the inner size based on the size.\n innerHeight *= style.sizeMultiplier;\n innerDepth *= style.sizeMultiplier;\n\n var leftDelim;\n if (group.value.left === \".\") {\n // Empty delimiters in \\left and \\right make null delimiter spaces.\n leftDelim = makeNullDelimiter(options, [\"mopen\"]);\n } else {\n // Otherwise, use leftRightDelim to generate the correct sized\n // delimiter.\n leftDelim = delimiter.leftRightDelim(\n group.value.left, innerHeight, innerDepth, options,\n group.mode, [\"mopen\"]);\n }\n // Add it to the beginning of the expression\n inner.unshift(leftDelim);\n\n // Handle middle delimiters\n if (hadMiddle) {\n for (i = 1; i < inner.length; i++) {\n if (inner[i].isMiddle) {\n // Apply the options that were active when \\middle was called\n inner[i] = delimiter.leftRightDelim(\n inner[i].isMiddle.value, innerHeight, innerDepth,\n inner[i].isMiddle.options, group.mode, []);\n }\n }\n }\n\n var rightDelim;\n // Same for the right delimiter\n if (group.value.right === \".\") {\n rightDelim = makeNullDelimiter(options, [\"mclose\"]);\n } else {\n rightDelim = delimiter.leftRightDelim(\n group.value.right, innerHeight, innerDepth, options,\n group.mode, [\"mclose\"]);\n }\n // Add it to the end of the expression.\n inner.push(rightDelim);\n\n return makeSpan(\n [\"minner\", style.cls()], inner, options);\n};\n\ngroupTypes.middle = function(group, options) {\n var middleDelim;\n if (group.value.value === \".\") {\n middleDelim = makeNullDelimiter(options, []);\n } else {\n middleDelim = delimiter.sizedDelim(\n group.value.value, 1, options,\n group.mode, []);\n middleDelim.isMiddle = {value: group.value.value, options: options};\n }\n return middleDelim;\n};\n\ngroupTypes.rule = function(group, options) {\n // Make an empty span for the rule\n var rule = makeSpan([\"mord\", \"rule\"], [], options);\n var style = options.style;\n\n // Calculate the shift, width, and height of the rule, and account for units\n var shift = 0;\n if (group.value.shift) {\n shift = calculateSize(group.value.shift, style);\n }\n\n var width = calculateSize(group.value.width, style);\n var height = calculateSize(group.value.height, style);\n\n // The sizes of rules are absolute, so make it larger if we are in a\n // smaller style.\n shift /= style.sizeMultiplier;\n width /= style.sizeMultiplier;\n height /= style.sizeMultiplier;\n\n // Style the rule to the right size\n rule.style.borderRightWidth = width + \"em\";\n rule.style.borderTopWidth = height + \"em\";\n rule.style.bottom = shift + \"em\";\n\n // Record the height and width\n rule.width = width;\n rule.height = height + shift;\n rule.depth = -shift;\n\n return rule;\n};\n\ngroupTypes.kern = function(group, options) {\n // Make an empty span for the rule\n var rule = makeSpan([\"mord\", \"rule\"], [], options);\n var style = options.style;\n\n var dimension = 0;\n if (group.value.dimension) {\n dimension = calculateSize(group.value.dimension, style);\n }\n\n dimension /= style.sizeMultiplier;\n\n rule.style.marginLeft = dimension + \"em\";\n\n return rule;\n};\n\ngroupTypes.accent = function(group, options) {\n // Accents are handled in the TeXbook pg. 443, rule 12.\n var base = group.value.base;\n var style = options.style;\n\n var supsubGroup;\n if (group.type === \"supsub\") {\n // If our base is a character box, and we have superscripts and\n // subscripts, the supsub will defer to us. In particular, we want\n // to attach the superscripts and subscripts to the inner body (so\n // that the position of the superscripts and subscripts won't be\n // affected by the height of the accent). We accomplish this by\n // sticking the base of the accent into the base of the supsub, and\n // rendering that, while keeping track of where the accent is.\n\n // The supsub group is the group that was passed in\n var supsub = group;\n // The real accent group is the base of the supsub group\n group = supsub.value.base;\n // The character box is the base of the accent group\n base = group.value.base;\n // Stick the character box into the base of the supsub group\n supsub.value.base = base;\n\n // Rerender the supsub group with its new base, and store that\n // result.\n supsubGroup = buildGroup(\n supsub, options.reset());\n }\n\n // Build the base group\n var body = buildGroup(\n base, options.withStyle(style.cramp()));\n\n // Calculate the skew of the accent. This is based on the line \"If the\n // nucleus is not a single character, let s = 0; otherwise set s to the\n // kern amount for the nucleus followed by the \\skewchar of its font.\"\n // Note that our skew metrics are just the kern between each character\n // and the skewchar.\n var skew;\n if (isCharacterBox(base)) {\n // If the base is a character box, then we want the skew of the\n // innermost character. To do that, we find the innermost character:\n var baseChar = getBaseElem(base);\n // Then, we render its group to get the symbol inside it\n var baseGroup = buildGroup(\n baseChar, options.withStyle(style.cramp()));\n // Finally, we pull the skew off of the symbol.\n skew = baseGroup.skew;\n // Note that we now throw away baseGroup, because the layers we\n // removed with getBaseElem might contain things like \\color which\n // we can't get rid of.\n // TODO(emily): Find a better way to get the skew\n } else {\n skew = 0;\n }\n\n // calculate the amount of space between the body and the accent\n var clearance = Math.min(\n body.height,\n style.metrics.xHeight);\n\n // Build the accent\n var accent = buildCommon.makeSymbol(\n group.value.accent, \"Main-Regular\", \"math\", options);\n // Remove the italic correction of the accent, because it only serves to\n // shift the accent over to a place we don't want.\n accent.italic = 0;\n\n // The \\vec character that the fonts use is a combining character, and\n // thus shows up much too far to the left. To account for this, we add a\n // specific class which shifts the accent over to where we want it.\n // TODO(emily): Fix this in a better way, like by changing the font\n var vecClass = group.value.accent === \"\\\\vec\" ? \"accent-vec\" : null;\n\n var accentBody = makeSpan([\"accent-body\", vecClass], [\n makeSpan([], [accent])]);\n\n accentBody = buildCommon.makeVList([\n {type: \"elem\", elem: body},\n {type: \"kern\", size: -clearance},\n {type: \"elem\", elem: accentBody}\n ], \"firstBaseline\", null, options);\n\n // Shift the accent over by the skew. Note we shift by twice the skew\n // because we are centering the accent, so by adding 2*skew to the left,\n // we shift it to the right by 1*skew.\n accentBody.children[1].style.marginLeft = 2 * skew + \"em\";\n\n var accentWrap = makeSpan([\"mord\", \"accent\"], [accentBody], options);\n\n if (supsubGroup) {\n // Here, we replace the \"base\" child of the supsub with our newly\n // generated accent.\n supsubGroup.children[0] = accentWrap;\n\n // Since we don't rerun the height calculation after replacing the\n // accent, we manually recalculate height.\n supsubGroup.height = Math.max(accentWrap.height, supsubGroup.height);\n\n // Accents should always be ords, even when their innards are not.\n supsubGroup.classes[0] = \"mord\";\n\n return supsubGroup;\n } else {\n return accentWrap;\n }\n};\n\ngroupTypes.phantom = function(group, options) {\n var elements = buildExpression(\n group.value.value,\n options.withPhantom(),\n false\n );\n\n // \\phantom isn't supposed to affect the elements it contains.\n // See \"color\" for more details.\n return new buildCommon.makeFragment(elements);\n};\n\ngroupTypes.mclass = function(group, options) {\n var elements = buildExpression(group.value.value, options, true);\n\n return makeSpan([group.value.mclass], elements, options);\n};\n\n/**\n * buildGroup is the function that takes a group and calls the correct groupType\n * function for it. It also handles the interaction of size and style changes\n * between parents and children.\n */\nvar buildGroup = function(group, options) {\n if (!group) {\n return makeSpan();\n }\n\n if (groupTypes[group.type]) {\n // Call the groupTypes function\n var groupNode = groupTypes[group.type](group, options);\n var multiplier;\n\n // If the style changed between the parent and the current group,\n // account for the size difference\n if (options.style !== options.parentStyle) {\n multiplier = options.style.sizeMultiplier /\n options.parentStyle.sizeMultiplier;\n\n groupNode.height *= multiplier;\n groupNode.depth *= multiplier;\n }\n\n // If the size changed between the parent and the current group, account\n // for that size difference.\n if (options.size !== options.parentSize) {\n multiplier = buildCommon.sizingMultiplier[options.size] /\n buildCommon.sizingMultiplier[options.parentSize];\n\n groupNode.height *= multiplier;\n groupNode.depth *= multiplier;\n }\n\n return groupNode;\n } else {\n throw new ParseError(\n \"Got group of unknown type: '\" + group.type + \"'\");\n }\n};\n\n/**\n * Take an entire parse tree, and build it into an appropriate set of HTML\n * nodes.\n */\nvar buildHTML = function(tree, options) {\n // buildExpression is destructive, so we need to make a clone\n // of the incoming tree so that it isn't accidentally changed\n tree = JSON.parse(JSON.stringify(tree));\n\n // Build the expression contained in the tree\n var expression = buildExpression(tree, options, true);\n var body = makeSpan([\"base\", options.style.cls()], expression, options);\n\n // Add struts, which ensure that the top of the HTML element falls at the\n // height of the expression, and the bottom of the HTML element falls at the\n // depth of the expression.\n var topStrut = makeSpan([\"strut\"]);\n var bottomStrut = makeSpan([\"strut\", \"bottom\"]);\n\n topStrut.style.height = body.height + \"em\";\n bottomStrut.style.height = (body.height + body.depth) + \"em\";\n // We'd like to use `vertical-align: top` but in IE 9 this lowers the\n // baseline of the box to the bottom of this strut (instead staying in the\n // normal place) so we use an absolute value for vertical-align instead\n bottomStrut.style.verticalAlign = -body.depth + \"em\";\n\n // Wrap the struts and body together\n var htmlNode = makeSpan([\"katex-html\"], [topStrut, bottomStrut, body]);\n\n htmlNode.setAttribute(\"aria-hidden\", \"true\");\n\n return htmlNode;\n};\n\nmodule.exports = buildHTML;\n","/**\n * These objects store data about MathML nodes. This is the MathML equivalent\n * of the types in domTree.js. Since MathML handles its own rendering, and\n * since we're mainly using MathML to improve accessibility, we don't manage\n * any of the styling state that the plain DOM nodes do.\n *\n * The `toNode` and `toMarkup` functions work simlarly to how they do in\n * domTree.js, creating namespaced DOM nodes and HTML text markup respectively.\n */\n\nvar utils = require(\"./utils\");\n\n/**\n * This node represents a general purpose MathML node of any type. The\n * constructor requires the type of node to create (for example, `\"mo\"` or\n * `\"mspace\"`, corresponding to `` and `` tags).\n */\nfunction MathNode(type, children) {\n this.type = type;\n this.attributes = {};\n this.children = children || [];\n}\n\n/**\n * Sets an attribute on a MathML node. MathML depends on attributes to convey a\n * semantic content, so this is used heavily.\n */\nMathNode.prototype.setAttribute = function(name, value) {\n this.attributes[name] = value;\n};\n\n/**\n * Converts the math node into a MathML-namespaced DOM element.\n */\nMathNode.prototype.toNode = function() {\n var node = document.createElementNS(\n \"http://www.w3.org/1998/Math/MathML\", this.type);\n\n for (var attr in this.attributes) {\n if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {\n node.setAttribute(attr, this.attributes[attr]);\n }\n }\n\n for (var i = 0; i < this.children.length; i++) {\n node.appendChild(this.children[i].toNode());\n }\n\n return node;\n};\n\n/**\n * Converts the math node into an HTML markup string.\n */\nMathNode.prototype.toMarkup = function() {\n var markup = \"<\" + this.type;\n\n // Add the attributes\n for (var attr in this.attributes) {\n if (Object.prototype.hasOwnProperty.call(this.attributes, attr)) {\n markup += \" \" + attr + \"=\\\"\";\n markup += utils.escape(this.attributes[attr]);\n markup += \"\\\"\";\n }\n }\n\n markup += \">\";\n\n for (var i = 0; i < this.children.length; i++) {\n markup += this.children[i].toMarkup();\n }\n\n markup += \"\";\n\n return markup;\n};\n\n/**\n * This node represents a piece of text.\n */\nfunction TextNode(text) {\n this.text = text;\n}\n\n/**\n * Converts the text node into a DOM text node.\n */\nTextNode.prototype.toNode = function() {\n return document.createTextNode(this.text);\n};\n\n/**\n * Converts the text node into HTML markup (which is just the text itself).\n */\nTextNode.prototype.toMarkup = function() {\n return utils.escape(this.text);\n};\n\nmodule.exports = {\n MathNode: MathNode,\n TextNode: TextNode\n};\n","/**\n * This file converts a parse tree into a cooresponding MathML tree. The main\n * entry point is the `buildMathML` function, which takes a parse tree from the\n * parser.\n */\n\nvar buildCommon = require(\"./buildCommon\");\nvar fontMetrics = require(\"./fontMetrics\");\nvar mathMLTree = require(\"./mathMLTree\");\nvar ParseError = require(\"./ParseError\");\nvar symbols = require(\"./symbols\");\nvar utils = require(\"./utils\");\n\nvar makeSpan = buildCommon.makeSpan;\nvar fontMap = buildCommon.fontMap;\n\n/**\n * Takes a symbol and converts it into a MathML text node after performing\n * optional replacement from symbols.js.\n */\nvar makeText = function(text, mode) {\n if (symbols[mode][text] && symbols[mode][text].replace) {\n text = symbols[mode][text].replace;\n }\n\n return new mathMLTree.TextNode(text);\n};\n\n/**\n * Returns the math variant as a string or null if none is required.\n */\nvar getVariant = function(group, options) {\n var font = options.font;\n if (!font) {\n return null;\n }\n\n var mode = group.mode;\n if (font === \"mathit\") {\n return \"italic\";\n }\n\n var value = group.value;\n if (utils.contains([\"\\\\imath\", \"\\\\jmath\"], value)) {\n return null;\n }\n\n if (symbols[mode][value] && symbols[mode][value].replace) {\n value = symbols[mode][value].replace;\n }\n\n var fontName = fontMap[font].fontName;\n if (fontMetrics.getCharacterMetrics(value, fontName)) {\n return fontMap[options.font].variant;\n }\n\n return null;\n};\n\n/**\n * Functions for handling the different types of groups found in the parse\n * tree. Each function should take a parse group and return a MathML node.\n */\nvar groupTypes = {};\n\ngroupTypes.mathord = function(group, options) {\n var node = new mathMLTree.MathNode(\n \"mi\",\n [makeText(group.value, group.mode)]);\n\n var variant = getVariant(group, options);\n if (variant) {\n node.setAttribute(\"mathvariant\", variant);\n }\n return node;\n};\n\ngroupTypes.textord = function(group, options) {\n var text = makeText(group.value, group.mode);\n\n var variant = getVariant(group, options) || \"normal\";\n\n var node;\n if (/[0-9]/.test(group.value)) {\n // TODO(kevinb) merge adjacent nodes\n // do it as a post processing step\n node = new mathMLTree.MathNode(\"mn\", [text]);\n if (options.font) {\n node.setAttribute(\"mathvariant\", variant);\n }\n } else {\n node = new mathMLTree.MathNode(\"mi\", [text]);\n node.setAttribute(\"mathvariant\", variant);\n }\n\n return node;\n};\n\ngroupTypes.bin = function(group) {\n var node = new mathMLTree.MathNode(\n \"mo\", [makeText(group.value, group.mode)]);\n\n return node;\n};\n\ngroupTypes.rel = function(group) {\n var node = new mathMLTree.MathNode(\n \"mo\", [makeText(group.value, group.mode)]);\n\n return node;\n};\n\ngroupTypes.open = function(group) {\n var node = new mathMLTree.MathNode(\n \"mo\", [makeText(group.value, group.mode)]);\n\n return node;\n};\n\ngroupTypes.close = function(group) {\n var node = new mathMLTree.MathNode(\n \"mo\", [makeText(group.value, group.mode)]);\n\n return node;\n};\n\ngroupTypes.inner = function(group) {\n var node = new mathMLTree.MathNode(\n \"mo\", [makeText(group.value, group.mode)]);\n\n return node;\n};\n\ngroupTypes.punct = function(group) {\n var node = new mathMLTree.MathNode(\n \"mo\", [makeText(group.value, group.mode)]);\n\n node.setAttribute(\"separator\", \"true\");\n\n return node;\n};\n\ngroupTypes.ordgroup = function(group, options) {\n var inner = buildExpression(group.value, options);\n\n var node = new mathMLTree.MathNode(\"mrow\", inner);\n\n return node;\n};\n\ngroupTypes.text = function(group, options) {\n var inner = buildExpression(group.value.body, options);\n\n var node = new mathMLTree.MathNode(\"mtext\", inner);\n\n return node;\n};\n\ngroupTypes.color = function(group, options) {\n var inner = buildExpression(group.value.value, options);\n\n var node = new mathMLTree.MathNode(\"mstyle\", inner);\n\n node.setAttribute(\"mathcolor\", group.value.color);\n\n return node;\n};\n\ngroupTypes.supsub = function(group, options) {\n var children = [buildGroup(group.value.base, options)];\n\n if (group.value.sub) {\n children.push(buildGroup(group.value.sub, options));\n }\n\n if (group.value.sup) {\n children.push(buildGroup(group.value.sup, options));\n }\n\n var nodeType;\n if (!group.value.sub) {\n nodeType = \"msup\";\n } else if (!group.value.sup) {\n nodeType = \"msub\";\n } else {\n nodeType = \"msubsup\";\n }\n\n var node = new mathMLTree.MathNode(nodeType, children);\n\n return node;\n};\n\ngroupTypes.genfrac = function(group, options) {\n var node = new mathMLTree.MathNode(\n \"mfrac\",\n [buildGroup(group.value.numer, options),\n buildGroup(group.value.denom, options)]);\n\n if (!group.value.hasBarLine) {\n node.setAttribute(\"linethickness\", \"0px\");\n }\n\n if (group.value.leftDelim != null || group.value.rightDelim != null) {\n var withDelims = [];\n\n if (group.value.leftDelim != null) {\n var leftOp = new mathMLTree.MathNode(\n \"mo\", [new mathMLTree.TextNode(group.value.leftDelim)]);\n\n leftOp.setAttribute(\"fence\", \"true\");\n\n withDelims.push(leftOp);\n }\n\n withDelims.push(node);\n\n if (group.value.rightDelim != null) {\n var rightOp = new mathMLTree.MathNode(\n \"mo\", [new mathMLTree.TextNode(group.value.rightDelim)]);\n\n rightOp.setAttribute(\"fence\", \"true\");\n\n withDelims.push(rightOp);\n }\n\n var outerNode = new mathMLTree.MathNode(\"mrow\", withDelims);\n\n return outerNode;\n }\n\n return node;\n};\n\ngroupTypes.array = function(group, options) {\n return new mathMLTree.MathNode(\n \"mtable\", group.value.body.map(function(row) {\n return new mathMLTree.MathNode(\n \"mtr\", row.map(function(cell) {\n return new mathMLTree.MathNode(\n \"mtd\", [buildGroup(cell, options)]);\n }));\n }));\n};\n\ngroupTypes.sqrt = function(group, options) {\n var node;\n if (group.value.index) {\n node = new mathMLTree.MathNode(\n \"mroot\", [\n buildGroup(group.value.body, options),\n buildGroup(group.value.index, options)\n ]);\n } else {\n node = new mathMLTree.MathNode(\n \"msqrt\", [buildGroup(group.value.body, options)]);\n }\n\n return node;\n};\n\ngroupTypes.leftright = function(group, options) {\n var inner = buildExpression(group.value.body, options);\n\n if (group.value.left !== \".\") {\n var leftNode = new mathMLTree.MathNode(\n \"mo\", [makeText(group.value.left, group.mode)]);\n\n leftNode.setAttribute(\"fence\", \"true\");\n\n inner.unshift(leftNode);\n }\n\n if (group.value.right !== \".\") {\n var rightNode = new mathMLTree.MathNode(\n \"mo\", [makeText(group.value.right, group.mode)]);\n\n rightNode.setAttribute(\"fence\", \"true\");\n\n inner.push(rightNode);\n }\n\n var outerNode = new mathMLTree.MathNode(\"mrow\", inner);\n\n return outerNode;\n};\n\ngroupTypes.middle = function(group, options) {\n var middleNode = new mathMLTree.MathNode(\n \"mo\", [makeText(group.value.middle, group.mode)]);\n middleNode.setAttribute(\"fence\", \"true\");\n return middleNode;\n};\n\ngroupTypes.accent = function(group, options) {\n var accentNode = new mathMLTree.MathNode(\n \"mo\", [makeText(group.value.accent, group.mode)]);\n\n var node = new mathMLTree.MathNode(\n \"mover\",\n [buildGroup(group.value.base, options),\n accentNode]);\n\n node.setAttribute(\"accent\", \"true\");\n\n return node;\n};\n\ngroupTypes.spacing = function(group) {\n var node;\n\n if (group.value === \"\\\\ \" || group.value === \"\\\\space\" ||\n group.value === \" \" || group.value === \"~\") {\n node = new mathMLTree.MathNode(\n \"mtext\", [new mathMLTree.TextNode(\"\\u00a0\")]);\n } else {\n node = new mathMLTree.MathNode(\"mspace\");\n\n node.setAttribute(\n \"width\", buildCommon.spacingFunctions[group.value].size);\n }\n\n return node;\n};\n\ngroupTypes.op = function(group, options) {\n var node;\n\n // TODO(emily): handle big operators using the `largeop` attribute\n\n if (group.value.symbol) {\n // This is a symbol. Just add the symbol.\n node = new mathMLTree.MathNode(\n \"mo\", [makeText(group.value.body, group.mode)]);\n } else if (group.value.value) {\n // This is an operator with children. Add them.\n node = new mathMLTree.MathNode(\n \"mo\", buildExpression(group.value.value, options));\n } else {\n // This is a text operator. Add all of the characters from the\n // operator's name.\n // TODO(emily): Add a space in the middle of some of these\n // operators, like \\limsup.\n node = new mathMLTree.MathNode(\n \"mi\", [new mathMLTree.TextNode(group.value.body.slice(1))]);\n }\n\n return node;\n};\n\ngroupTypes.mod = function(group, options) {\n var inner = [];\n\n if (group.value.modType === \"pod\" || group.value.modType === \"pmod\") {\n inner.push(new mathMLTree.MathNode(\n \"mo\", [makeText(\"(\", group.mode)]));\n }\n if (group.value.modType !== \"pod\") {\n inner.push(new mathMLTree.MathNode(\n \"mo\", [makeText(\"mod\", group.mode)]));\n }\n if (group.value.value) {\n var space = new mathMLTree.MathNode(\"mspace\");\n space.setAttribute(\"width\", \"0.333333em\");\n inner.push(space);\n inner = inner.concat(buildExpression(group.value.value, options));\n }\n if (group.value.modType === \"pod\" || group.value.modType === \"pmod\") {\n inner.push(new mathMLTree.MathNode(\n \"mo\", [makeText(\")\", group.mode)]));\n }\n\n return new mathMLTree.MathNode(\"mo\", inner);\n};\n\ngroupTypes.katex = function(group) {\n var node = new mathMLTree.MathNode(\n \"mtext\", [new mathMLTree.TextNode(\"KaTeX\")]);\n\n return node;\n};\n\ngroupTypes.font = function(group, options) {\n var font = group.value.font;\n return buildGroup(group.value.body, options.withFont(font));\n};\n\ngroupTypes.delimsizing = function(group) {\n var children = [];\n\n if (group.value.value !== \".\") {\n children.push(makeText(group.value.value, group.mode));\n }\n\n var node = new mathMLTree.MathNode(\"mo\", children);\n\n if (group.value.mclass === \"mopen\" ||\n group.value.mclass === \"mclose\") {\n // Only some of the delimsizing functions act as fences, and they\n // return \"mopen\" or \"mclose\" mclass.\n node.setAttribute(\"fence\", \"true\");\n } else {\n // Explicitly disable fencing if it's not a fence, to override the\n // defaults.\n node.setAttribute(\"fence\", \"false\");\n }\n\n return node;\n};\n\ngroupTypes.styling = function(group, options) {\n var inner = buildExpression(group.value.value, options);\n\n var node = new mathMLTree.MathNode(\"mstyle\", inner);\n\n var styleAttributes = {\n \"display\": [\"0\", \"true\"],\n \"text\": [\"0\", \"false\"],\n \"script\": [\"1\", \"false\"],\n \"scriptscript\": [\"2\", \"false\"]\n };\n\n var attr = styleAttributes[group.value.style];\n\n node.setAttribute(\"scriptlevel\", attr[0]);\n node.setAttribute(\"displaystyle\", attr[1]);\n\n return node;\n};\n\ngroupTypes.sizing = function(group, options) {\n var inner = buildExpression(group.value.value, options);\n\n var node = new mathMLTree.MathNode(\"mstyle\", inner);\n\n // TODO(emily): This doesn't produce the correct size for nested size\n // changes, because we don't keep state of what style we're currently\n // in, so we can't reset the size to normal before changing it. Now\n // that we're passing an options parameter we should be able to fix\n // this.\n node.setAttribute(\n \"mathsize\", buildCommon.sizingMultiplier[group.value.size] + \"em\");\n\n return node;\n};\n\ngroupTypes.overline = function(group, options) {\n var operator = new mathMLTree.MathNode(\n \"mo\", [new mathMLTree.TextNode(\"\\u203e\")]);\n operator.setAttribute(\"stretchy\", \"true\");\n\n var node = new mathMLTree.MathNode(\n \"mover\",\n [buildGroup(group.value.body, options),\n operator]);\n node.setAttribute(\"accent\", \"true\");\n\n return node;\n};\n\ngroupTypes.underline = function(group, options) {\n var operator = new mathMLTree.MathNode(\n \"mo\", [new mathMLTree.TextNode(\"\\u203e\")]);\n operator.setAttribute(\"stretchy\", \"true\");\n\n var node = new mathMLTree.MathNode(\n \"munder\",\n [buildGroup(group.value.body, options),\n operator]);\n node.setAttribute(\"accentunder\", \"true\");\n\n return node;\n};\n\ngroupTypes.rule = function(group) {\n // TODO(emily): Figure out if there's an actual way to draw black boxes\n // in MathML.\n var node = new mathMLTree.MathNode(\"mrow\");\n\n return node;\n};\n\ngroupTypes.kern = function(group) {\n // TODO(kevin): Figure out if there's a way to add space in MathML\n var node = new mathMLTree.MathNode(\"mrow\");\n\n return node;\n};\n\ngroupTypes.llap = function(group, options) {\n var node = new mathMLTree.MathNode(\n \"mpadded\", [buildGroup(group.value.body, options)]);\n\n node.setAttribute(\"lspace\", \"-1width\");\n node.setAttribute(\"width\", \"0px\");\n\n return node;\n};\n\ngroupTypes.rlap = function(group, options) {\n var node = new mathMLTree.MathNode(\n \"mpadded\", [buildGroup(group.value.body, options)]);\n\n node.setAttribute(\"width\", \"0px\");\n\n return node;\n};\n\ngroupTypes.phantom = function(group, options) {\n var inner = buildExpression(group.value.value, options);\n return new mathMLTree.MathNode(\"mphantom\", inner);\n};\n\ngroupTypes.mclass = function(group, options) {\n var inner = buildExpression(group.value.value, options);\n return new mathMLTree.MathNode(\"mstyle\", inner);\n};\n\n/**\n * Takes a list of nodes, builds them, and returns a list of the generated\n * MathML nodes. A little simpler than the HTML version because we don't do any\n * previous-node handling.\n */\nvar buildExpression = function(expression, options) {\n var groups = [];\n for (var i = 0; i < expression.length; i++) {\n var group = expression[i];\n groups.push(buildGroup(group, options));\n }\n return groups;\n};\n\n/**\n * Takes a group from the parser and calls the appropriate groupTypes function\n * on it to produce a MathML node.\n */\nvar buildGroup = function(group, options) {\n if (!group) {\n return new mathMLTree.MathNode(\"mrow\");\n }\n\n if (groupTypes[group.type]) {\n // Call the groupTypes function\n return groupTypes[group.type](group, options);\n } else {\n throw new ParseError(\n \"Got group of unknown type: '\" + group.type + \"'\");\n }\n};\n\n/**\n * Takes a full parse tree and settings and builds a MathML representation of\n * it. In particular, we put the elements from building the parse tree into a\n * tag so we can also include that TeX source as an annotation.\n *\n * Note that we actually return a domTree element with a `` inside it so\n * we can do appropriate styling.\n */\nvar buildMathML = function(tree, texExpression, options) {\n var expression = buildExpression(tree, options);\n\n // Wrap up the expression in an mrow so it is presented in the semantics\n // tag correctly.\n var wrapper = new mathMLTree.MathNode(\"mrow\", expression);\n\n // Build a TeX annotation of the source\n var annotation = new mathMLTree.MathNode(\n \"annotation\", [new mathMLTree.TextNode(texExpression)]);\n\n annotation.setAttribute(\"encoding\", \"application/x-tex\");\n\n var semantics = new mathMLTree.MathNode(\n \"semantics\", [wrapper, annotation]);\n\n var math = new mathMLTree.MathNode(\"math\", [semantics]);\n\n // You can't style nodes, so we wrap the node in a span.\n return makeSpan([\"katex-mathml\"], [math]);\n};\n\nmodule.exports = buildMathML;\n","/**\n * This file contains information about the options that the Parser carries\n * around with it while parsing. Data is held in an `Options` object, and when\n * recursing, a new `Options` object can be created with the `.with*` and\n * `.reset` functions.\n */\n\n/**\n * This is the main options class. It contains the style, size, color, and font\n * of the current parse level. It also contains the style and size of the parent\n * parse level, so size changes can be handled efficiently.\n *\n * Each of the `.with*` and `.reset` functions passes its current style and size\n * as the parentStyle and parentSize of the new options class, so parent\n * handling is taken care of automatically.\n */\nfunction Options(data) {\n this.style = data.style;\n this.color = data.color;\n this.size = data.size;\n this.phantom = data.phantom;\n this.font = data.font;\n\n if (data.parentStyle === undefined) {\n this.parentStyle = data.style;\n } else {\n this.parentStyle = data.parentStyle;\n }\n\n if (data.parentSize === undefined) {\n this.parentSize = data.size;\n } else {\n this.parentSize = data.parentSize;\n }\n}\n\n/**\n * Returns a new options object with the same properties as \"this\". Properties\n * from \"extension\" will be copied to the new options object.\n */\nOptions.prototype.extend = function(extension) {\n var data = {\n style: this.style,\n size: this.size,\n color: this.color,\n parentStyle: this.style,\n parentSize: this.size,\n phantom: this.phantom,\n font: this.font\n };\n\n for (var key in extension) {\n if (extension.hasOwnProperty(key)) {\n data[key] = extension[key];\n }\n }\n\n return new Options(data);\n};\n\n/**\n * Create a new options object with the given style.\n */\nOptions.prototype.withStyle = function(style) {\n return this.extend({\n style: style\n });\n};\n\n/**\n * Create a new options object with the given size.\n */\nOptions.prototype.withSize = function(size) {\n return this.extend({\n size: size\n });\n};\n\n/**\n * Create a new options object with the given color.\n */\nOptions.prototype.withColor = function(color) {\n return this.extend({\n color: color\n });\n};\n\n/**\n * Create a new options object with \"phantom\" set to true.\n */\nOptions.prototype.withPhantom = function() {\n return this.extend({\n phantom: true\n });\n};\n\n/**\n * Create a new options objects with the give font.\n */\nOptions.prototype.withFont = function(font) {\n return this.extend({\n font: font || this.font\n });\n};\n\n/**\n * Create a new options object with the same style, size, and color. This is\n * used so that parent style and size changes are handled correctly.\n */\nOptions.prototype.reset = function() {\n return this.extend({});\n};\n\n/**\n * A map of color names to CSS colors.\n * TODO(emily): Remove this when we have real macros\n */\nvar colorMap = {\n \"katex-blue\": \"#6495ed\",\n \"katex-orange\": \"#ffa500\",\n \"katex-pink\": \"#ff00af\",\n \"katex-red\": \"#df0030\",\n \"katex-green\": \"#28ae7b\",\n \"katex-gray\": \"gray\",\n \"katex-purple\": \"#9d38bd\",\n \"katex-blueA\": \"#ccfaff\",\n \"katex-blueB\": \"#80f6ff\",\n \"katex-blueC\": \"#63d9ea\",\n \"katex-blueD\": \"#11accd\",\n \"katex-blueE\": \"#0c7f99\",\n \"katex-tealA\": \"#94fff5\",\n \"katex-tealB\": \"#26edd5\",\n \"katex-tealC\": \"#01d1c1\",\n \"katex-tealD\": \"#01a995\",\n \"katex-tealE\": \"#208170\",\n \"katex-greenA\": \"#b6ffb0\",\n \"katex-greenB\": \"#8af281\",\n \"katex-greenC\": \"#74cf70\",\n \"katex-greenD\": \"#1fab54\",\n \"katex-greenE\": \"#0d923f\",\n \"katex-goldA\": \"#ffd0a9\",\n \"katex-goldB\": \"#ffbb71\",\n \"katex-goldC\": \"#ff9c39\",\n \"katex-goldD\": \"#e07d10\",\n \"katex-goldE\": \"#a75a05\",\n \"katex-redA\": \"#fca9a9\",\n \"katex-redB\": \"#ff8482\",\n \"katex-redC\": \"#f9685d\",\n \"katex-redD\": \"#e84d39\",\n \"katex-redE\": \"#bc2612\",\n \"katex-maroonA\": \"#ffbde0\",\n \"katex-maroonB\": \"#ff92c6\",\n \"katex-maroonC\": \"#ed5fa6\",\n \"katex-maroonD\": \"#ca337c\",\n \"katex-maroonE\": \"#9e034e\",\n \"katex-purpleA\": \"#ddd7ff\",\n \"katex-purpleB\": \"#c6b9fc\",\n \"katex-purpleC\": \"#aa87ff\",\n \"katex-purpleD\": \"#7854ab\",\n \"katex-purpleE\": \"#543b78\",\n \"katex-mintA\": \"#f5f9e8\",\n \"katex-mintB\": \"#edf2df\",\n \"katex-mintC\": \"#e0e5cc\",\n \"katex-grayA\": \"#f6f7f7\",\n \"katex-grayB\": \"#f0f1f2\",\n \"katex-grayC\": \"#e3e5e6\",\n \"katex-grayD\": \"#d6d8da\",\n \"katex-grayE\": \"#babec2\",\n \"katex-grayF\": \"#888d93\",\n \"katex-grayG\": \"#626569\",\n \"katex-grayH\": \"#3b3e40\",\n \"katex-grayI\": \"#21242c\",\n \"katex-kaBlue\": \"#314453\",\n \"katex-kaGreen\": \"#71B307\"\n};\n\n/**\n * Gets the CSS color of the current options object, accounting for the\n * `colorMap`.\n */\nOptions.prototype.getColor = function() {\n if (this.phantom) {\n return \"transparent\";\n } else {\n return colorMap[this.color] || this.color;\n }\n};\n\nmodule.exports = Options;\n","var buildHTML = require(\"./buildHTML\");\nvar buildMathML = require(\"./buildMathML\");\nvar buildCommon = require(\"./buildCommon\");\nvar Options = require(\"./Options\");\nvar Settings = require(\"./Settings\");\nvar Style = require(\"./Style\");\n\nvar makeSpan = buildCommon.makeSpan;\n\nvar buildTree = function(tree, expression, settings) {\n settings = settings || new Settings({});\n\n var startStyle = Style.TEXT;\n if (settings.displayMode) {\n startStyle = Style.DISPLAY;\n }\n\n // Setup the default options\n var options = new Options({\n style: startStyle,\n size: \"size5\"\n });\n\n // `buildHTML` sometimes messes with the parse tree (like turning bins ->\n // ords), so we build the MathML version first.\n var mathMLNode = buildMathML(tree, expression, options);\n var htmlNode = buildHTML(tree, options);\n\n var katexNode = makeSpan([\"katex\"], [\n mathMLNode, htmlNode\n ]);\n\n if (settings.displayMode) {\n return makeSpan([\"katex-display\"], [katexNode]);\n } else {\n return katexNode;\n }\n};\n\nmodule.exports = buildTree;\n","/**\n * The resulting parse tree nodes of the parse tree.\n *\n * It is possible to provide position information, so that a ParseNode can\n * fulfil a role similar to a Token in error reporting.\n * For details on the corresponding properties see Token constructor.\n * Providing such information can lead to better error reporting.\n *\n * @param {string} type type of node, like e.g. \"ordgroup\"\n * @param {?object} value type-specific representation of the node\n * @param {string} mode parse mode in action for this node,\n * \"math\" or \"text\"\n * @param {Token=} firstToken first token of the input for this node,\n * will omit position information if unset\n * @param {Token=} lastToken last token of the input for this node,\n * will default to firstToken if unset\n */\nfunction ParseNode(type, value, mode, firstToken, lastToken) {\n this.type = type;\n this.value = value;\n this.mode = mode;\n if (firstToken && (!lastToken || lastToken.lexer === firstToken.lexer)) {\n this.lexer = firstToken.lexer;\n this.start = firstToken.start;\n this.end = (lastToken || firstToken).end;\n }\n}\n\nmodule.exports = {\n ParseNode: ParseNode\n};\n\n","var utils = require(\"./utils\");\nvar ParseError = require(\"./ParseError\");\nvar parseData = require(\"./parseData\");\nvar ParseNode = parseData.ParseNode;\n\n/* This file contains a list of functions that we parse, identified by\n * the calls to defineFunction.\n *\n * The first argument to defineFunction is a single name or a list of names.\n * All functions named in such a list will share a single implementation.\n *\n * Each declared function can have associated properties, which\n * include the following:\n *\n * - numArgs: The number of arguments the function takes.\n * If this is the only property, it can be passed as a number\n * instead of an element of a properties object.\n * - argTypes: (optional) An array corresponding to each argument of the\n * function, giving the type of argument that should be parsed. Its\n * length should be equal to `numArgs + numOptionalArgs`. Valid\n * types:\n * - \"size\": A size-like thing, such as \"1em\" or \"5ex\"\n * - \"color\": An html color, like \"#abc\" or \"blue\"\n * - \"original\": The same type as the environment that the\n * function being parsed is in (e.g. used for the\n * bodies of functions like \\color where the first\n * argument is special and the second argument is\n * parsed normally)\n * Other possible types (probably shouldn't be used)\n * - \"text\": Text-like (e.g. \\text)\n * - \"math\": Normal math\n * If undefined, this will be treated as an appropriate length\n * array of \"original\" strings\n * - greediness: (optional) The greediness of the function to use ungrouped\n * arguments.\n *\n * E.g. if you have an expression\n * \\sqrt \\frac 1 2\n * since \\frac has greediness=2 vs \\sqrt's greediness=1, \\frac\n * will use the two arguments '1' and '2' as its two arguments,\n * then that whole function will be used as the argument to\n * \\sqrt. On the other hand, the expressions\n * \\frac \\frac 1 2 3\n * and\n * \\frac \\sqrt 1 2\n * will fail because \\frac and \\frac have equal greediness\n * and \\sqrt has a lower greediness than \\frac respectively. To\n * make these parse, we would have to change them to:\n * \\frac {\\frac 1 2} 3\n * and\n * \\frac {\\sqrt 1} 2\n *\n * The default value is `1`\n * - allowedInText: (optional) Whether or not the function is allowed inside\n * text mode (default false)\n * - numOptionalArgs: (optional) The number of optional arguments the function\n * should parse. If the optional arguments aren't found,\n * `null` will be passed to the handler in their place.\n * (default 0)\n * - infix: (optional) Must be true if the function is an infix operator.\n *\n * The last argument is that implementation, the handler for the function(s).\n * It is called to handle these functions and their arguments.\n * It receives two arguments:\n * - context contains information and references provided by the parser\n * - args is an array of arguments obtained from TeX input\n * The context contains the following properties:\n * - funcName: the text (i.e. name) of the function, including \\\n * - parser: the parser object\n * - lexer: the lexer object\n * - positions: the positions in the overall string of the function\n * and the arguments.\n * The latter three should only be used to produce error messages.\n *\n * The function should return an object with the following keys:\n * - type: The type of element that this is. This is then used in\n * buildHTML/buildMathML to determine which function\n * should be called to build this node into a DOM node\n * Any other data can be added to the object, which will be passed\n * in to the function in buildHTML/buildMathML as `group.value`.\n */\n\nfunction defineFunction(names, props, handler) {\n if (typeof names === \"string\") {\n names = [names];\n }\n if (typeof props === \"number\") {\n props = { numArgs: props };\n }\n // Set default values of functions\n var data = {\n numArgs: props.numArgs,\n argTypes: props.argTypes,\n greediness: (props.greediness === undefined) ? 1 : props.greediness,\n allowedInText: !!props.allowedInText,\n numOptionalArgs: props.numOptionalArgs || 0,\n infix: !!props.infix,\n handler: handler\n };\n for (var i = 0; i < names.length; ++i) {\n module.exports[names[i]] = data;\n }\n}\n\n// Since the corresponding buildHTML/buildMathML function expects a\n// list of elements, we normalize for different kinds of arguments\nvar ordargument = function(arg) {\n if (arg.type === \"ordgroup\") {\n return arg.value;\n } else {\n return [arg];\n }\n};\n\n// A normal square root\ndefineFunction(\"\\\\sqrt\", {\n numArgs: 1,\n numOptionalArgs: 1\n}, function(context, args) {\n var index = args[0];\n var body = args[1];\n return {\n type: \"sqrt\",\n body: body,\n index: index\n };\n});\n\n// Non-mathy text, possibly in a font\nvar textFunctionStyles = {\n \"\\\\text\": undefined, \"\\\\textrm\": \"mathrm\", \"\\\\textsf\": \"mathsf\",\n \"\\\\texttt\": \"mathtt\", \"\\\\textnormal\": \"mathrm\", \"\\\\textbf\": \"mathbf\",\n \"\\\\textit\": \"textit\"\n};\n\ndefineFunction([\n \"\\\\text\", \"\\\\textrm\", \"\\\\textsf\", \"\\\\texttt\", \"\\\\textnormal\",\n \"\\\\textbf\", \"\\\\textit\"\n], {\n numArgs: 1,\n argTypes: [\"text\"],\n greediness: 2,\n allowedInText: true\n}, function(context, args) {\n var body = args[0];\n return {\n type: \"text\",\n body: ordargument(body),\n style: textFunctionStyles[context.funcName]\n };\n});\n\n// A two-argument custom color\ndefineFunction(\"\\\\color\", {\n numArgs: 2,\n allowedInText: true,\n greediness: 3,\n argTypes: [\"color\", \"original\"]\n}, function(context, args) {\n var color = args[0];\n var body = args[1];\n return {\n type: \"color\",\n color: color.value,\n value: ordargument(body)\n };\n});\n\n// An overline\ndefineFunction(\"\\\\overline\", {\n numArgs: 1\n}, function(context, args) {\n var body = args[0];\n return {\n type: \"overline\",\n body: body\n };\n});\n\n// An underline\ndefineFunction(\"\\\\underline\", {\n numArgs: 1\n}, function(context, args) {\n var body = args[0];\n return {\n type: \"underline\",\n body: body\n };\n});\n\n// A box of the width and height\ndefineFunction(\"\\\\rule\", {\n numArgs: 2,\n numOptionalArgs: 1,\n argTypes: [\"size\", \"size\", \"size\"]\n}, function(context, args) {\n var shift = args[0];\n var width = args[1];\n var height = args[2];\n return {\n type: \"rule\",\n shift: shift && shift.value,\n width: width.value,\n height: height.value\n };\n});\n\n// TODO: In TeX, \\mkern only accepts mu-units, and \\kern does not accept\n// mu-units. In current KaTeX we relax this; both commands accept any unit.\ndefineFunction([\"\\\\kern\", \"\\\\mkern\"], {\n numArgs: 1,\n argTypes: [\"size\"]\n}, function(context, args) {\n return {\n type: \"kern\",\n dimension: args[0].value\n };\n});\n\n// A KaTeX logo\ndefineFunction(\"\\\\KaTeX\", {\n numArgs: 0\n}, function(context) {\n return {\n type: \"katex\"\n };\n});\n\ndefineFunction(\"\\\\phantom\", {\n numArgs: 1\n}, function(context, args) {\n var body = args[0];\n return {\n type: \"phantom\",\n value: ordargument(body)\n };\n});\n\n// Math class commands except \\mathop\ndefineFunction([\n \"\\\\mathord\", \"\\\\mathbin\", \"\\\\mathrel\", \"\\\\mathopen\",\n \"\\\\mathclose\", \"\\\\mathpunct\", \"\\\\mathinner\"\n], {\n numArgs: 1\n}, function(context, args) {\n var body = args[0];\n return {\n type: \"mclass\",\n mclass: \"m\" + context.funcName.substr(5),\n value: ordargument(body)\n };\n});\n\n// Build a relation by placing one symbol on top of another\ndefineFunction(\"\\\\stackrel\", {\n numArgs: 2\n}, function(context, args) {\n var top = args[0];\n var bottom = args[1];\n\n var bottomop = new ParseNode(\"op\", {\n type: \"op\",\n limits: true,\n alwaysHandleSupSub: true,\n symbol: false,\n value: ordargument(bottom)\n }, bottom.mode);\n\n var supsub = new ParseNode(\"supsub\", {\n base: bottomop,\n sup: top,\n sub: null\n }, top.mode);\n\n return {\n type: \"mclass\",\n mclass: \"mrel\",\n value: [supsub]\n };\n});\n\n// \\mod-type functions\ndefineFunction(\"\\\\bmod\", {\n numArgs: 0\n}, function(context, args) {\n return {\n type: \"mod\",\n modType: \"bmod\",\n value: null\n };\n});\n\ndefineFunction([\"\\\\pod\", \"\\\\pmod\", \"\\\\mod\"], {\n numArgs: 1\n}, function(context, args) {\n var body = args[0];\n return {\n type: \"mod\",\n modType: context.funcName.substr(1),\n value: ordargument(body)\n };\n});\n\n// Extra data needed for the delimiter handler down below\nvar delimiterSizes = {\n \"\\\\bigl\" : {mclass: \"mopen\", size: 1},\n \"\\\\Bigl\" : {mclass: \"mopen\", size: 2},\n \"\\\\biggl\": {mclass: \"mopen\", size: 3},\n \"\\\\Biggl\": {mclass: \"mopen\", size: 4},\n \"\\\\bigr\" : {mclass: \"mclose\", size: 1},\n \"\\\\Bigr\" : {mclass: \"mclose\", size: 2},\n \"\\\\biggr\": {mclass: \"mclose\", size: 3},\n \"\\\\Biggr\": {mclass: \"mclose\", size: 4},\n \"\\\\bigm\" : {mclass: \"mrel\", size: 1},\n \"\\\\Bigm\" : {mclass: \"mrel\", size: 2},\n \"\\\\biggm\": {mclass: \"mrel\", size: 3},\n \"\\\\Biggm\": {mclass: \"mrel\", size: 4},\n \"\\\\big\" : {mclass: \"mord\", size: 1},\n \"\\\\Big\" : {mclass: \"mord\", size: 2},\n \"\\\\bigg\" : {mclass: \"mord\", size: 3},\n \"\\\\Bigg\" : {mclass: \"mord\", size: 4}\n};\n\nvar delimiters = [\n \"(\", \")\", \"[\", \"\\\\lbrack\", \"]\", \"\\\\rbrack\",\n \"\\\\{\", \"\\\\lbrace\", \"\\\\}\", \"\\\\rbrace\",\n \"\\\\lfloor\", \"\\\\rfloor\", \"\\\\lceil\", \"\\\\rceil\",\n \"<\", \">\", \"\\\\langle\", \"\\\\rangle\", \"\\\\lt\", \"\\\\gt\",\n \"\\\\lvert\", \"\\\\rvert\", \"\\\\lVert\", \"\\\\rVert\",\n \"\\\\lgroup\", \"\\\\rgroup\", \"\\\\lmoustache\", \"\\\\rmoustache\",\n \"/\", \"\\\\backslash\",\n \"|\", \"\\\\vert\", \"\\\\|\", \"\\\\Vert\",\n \"\\\\uparrow\", \"\\\\Uparrow\",\n \"\\\\downarrow\", \"\\\\Downarrow\",\n \"\\\\updownarrow\", \"\\\\Updownarrow\",\n \".\"\n];\n\nvar fontAliases = {\n \"\\\\Bbb\": \"\\\\mathbb\",\n \"\\\\bold\": \"\\\\mathbf\",\n \"\\\\frak\": \"\\\\mathfrak\"\n};\n\n// Single-argument color functions\ndefineFunction([\n \"\\\\blue\", \"\\\\orange\", \"\\\\pink\", \"\\\\red\",\n \"\\\\green\", \"\\\\gray\", \"\\\\purple\",\n \"\\\\blueA\", \"\\\\blueB\", \"\\\\blueC\", \"\\\\blueD\", \"\\\\blueE\",\n \"\\\\tealA\", \"\\\\tealB\", \"\\\\tealC\", \"\\\\tealD\", \"\\\\tealE\",\n \"\\\\greenA\", \"\\\\greenB\", \"\\\\greenC\", \"\\\\greenD\", \"\\\\greenE\",\n \"\\\\goldA\", \"\\\\goldB\", \"\\\\goldC\", \"\\\\goldD\", \"\\\\goldE\",\n \"\\\\redA\", \"\\\\redB\", \"\\\\redC\", \"\\\\redD\", \"\\\\redE\",\n \"\\\\maroonA\", \"\\\\maroonB\", \"\\\\maroonC\", \"\\\\maroonD\", \"\\\\maroonE\",\n \"\\\\purpleA\", \"\\\\purpleB\", \"\\\\purpleC\", \"\\\\purpleD\", \"\\\\purpleE\",\n \"\\\\mintA\", \"\\\\mintB\", \"\\\\mintC\",\n \"\\\\grayA\", \"\\\\grayB\", \"\\\\grayC\", \"\\\\grayD\", \"\\\\grayE\",\n \"\\\\grayF\", \"\\\\grayG\", \"\\\\grayH\", \"\\\\grayI\",\n \"\\\\kaBlue\", \"\\\\kaGreen\"\n], {\n numArgs: 1,\n allowedInText: true,\n greediness: 3\n}, function(context, args) {\n var body = args[0];\n return {\n type: \"color\",\n color: \"katex-\" + context.funcName.slice(1),\n value: ordargument(body)\n };\n});\n\n// There are 2 flags for operators; whether they produce limits in\n// displaystyle, and whether they are symbols and should grow in\n// displaystyle. These four groups cover the four possible choices.\n\n// No limits, not symbols\ndefineFunction([\n \"\\\\arcsin\", \"\\\\arccos\", \"\\\\arctan\", \"\\\\arg\", \"\\\\cos\", \"\\\\cosh\",\n \"\\\\cot\", \"\\\\coth\", \"\\\\csc\", \"\\\\deg\", \"\\\\dim\", \"\\\\exp\", \"\\\\hom\",\n \"\\\\ker\", \"\\\\lg\", \"\\\\ln\", \"\\\\log\", \"\\\\sec\", \"\\\\sin\", \"\\\\sinh\",\n \"\\\\tan\", \"\\\\tanh\"\n], {\n numArgs: 0\n}, function(context) {\n return {\n type: \"op\",\n limits: false,\n symbol: false,\n body: context.funcName\n };\n});\n\n// Limits, not symbols\ndefineFunction([\n \"\\\\det\", \"\\\\gcd\", \"\\\\inf\", \"\\\\lim\", \"\\\\liminf\", \"\\\\limsup\", \"\\\\max\",\n \"\\\\min\", \"\\\\Pr\", \"\\\\sup\"\n], {\n numArgs: 0\n}, function(context) {\n return {\n type: \"op\",\n limits: true,\n symbol: false,\n body: context.funcName\n };\n});\n\n// No limits, symbols\ndefineFunction([\n \"\\\\int\", \"\\\\iint\", \"\\\\iiint\", \"\\\\oint\"\n], {\n numArgs: 0\n}, function(context) {\n return {\n type: \"op\",\n limits: false,\n symbol: true,\n body: context.funcName\n };\n});\n\n// Limits, symbols\ndefineFunction([\n \"\\\\coprod\", \"\\\\bigvee\", \"\\\\bigwedge\", \"\\\\biguplus\", \"\\\\bigcap\",\n \"\\\\bigcup\", \"\\\\intop\", \"\\\\prod\", \"\\\\sum\", \"\\\\bigotimes\",\n \"\\\\bigoplus\", \"\\\\bigodot\", \"\\\\bigsqcup\", \"\\\\smallint\"\n], {\n numArgs: 0\n}, function(context) {\n return {\n type: \"op\",\n limits: true,\n symbol: true,\n body: context.funcName\n };\n});\n\n// \\mathop class command\ndefineFunction(\"\\\\mathop\", {\n numArgs: 1\n}, function(context, args) {\n var body = args[0];\n return {\n type: \"op\",\n limits: false,\n symbol: false,\n value: ordargument(body)\n };\n});\n\n// Fractions\ndefineFunction([\n \"\\\\dfrac\", \"\\\\frac\", \"\\\\tfrac\",\n \"\\\\dbinom\", \"\\\\binom\", \"\\\\tbinom\",\n \"\\\\\\\\atopfrac\" // can’t be entered directly\n], {\n numArgs: 2,\n greediness: 2\n}, function(context, args) {\n var numer = args[0];\n var denom = args[1];\n var hasBarLine;\n var leftDelim = null;\n var rightDelim = null;\n var size = \"auto\";\n\n switch (context.funcName) {\n case \"\\\\dfrac\":\n case \"\\\\frac\":\n case \"\\\\tfrac\":\n hasBarLine = true;\n break;\n case \"\\\\\\\\atopfrac\":\n hasBarLine = false;\n break;\n case \"\\\\dbinom\":\n case \"\\\\binom\":\n case \"\\\\tbinom\":\n hasBarLine = false;\n leftDelim = \"(\";\n rightDelim = \")\";\n break;\n default:\n throw new Error(\"Unrecognized genfrac command\");\n }\n\n switch (context.funcName) {\n case \"\\\\dfrac\":\n case \"\\\\dbinom\":\n size = \"display\";\n break;\n case \"\\\\tfrac\":\n case \"\\\\tbinom\":\n size = \"text\";\n break;\n }\n\n return {\n type: \"genfrac\",\n numer: numer,\n denom: denom,\n hasBarLine: hasBarLine,\n leftDelim: leftDelim,\n rightDelim: rightDelim,\n size: size\n };\n});\n\n// Left and right overlap functions\ndefineFunction([\"\\\\llap\", \"\\\\rlap\"], {\n numArgs: 1,\n allowedInText: true\n}, function(context, args) {\n var body = args[0];\n return {\n type: context.funcName.slice(1),\n body: body\n };\n});\n\n// Delimiter functions\nvar checkDelimiter = function(delim, context) {\n if (utils.contains(delimiters, delim.value)) {\n return delim;\n } else {\n throw new ParseError(\n \"Invalid delimiter: '\" + delim.value + \"' after '\" +\n context.funcName + \"'\", delim);\n }\n};\n\ndefineFunction([\n \"\\\\bigl\", \"\\\\Bigl\", \"\\\\biggl\", \"\\\\Biggl\",\n \"\\\\bigr\", \"\\\\Bigr\", \"\\\\biggr\", \"\\\\Biggr\",\n \"\\\\bigm\", \"\\\\Bigm\", \"\\\\biggm\", \"\\\\Biggm\",\n \"\\\\big\", \"\\\\Big\", \"\\\\bigg\", \"\\\\Bigg\"\n], {\n numArgs: 1\n}, function(context, args) {\n var delim = checkDelimiter(args[0], context);\n\n return {\n type: \"delimsizing\",\n size: delimiterSizes[context.funcName].size,\n mclass: delimiterSizes[context.funcName].mclass,\n value: delim.value\n };\n});\n\ndefineFunction([\n \"\\\\left\", \"\\\\right\"\n], {\n numArgs: 1\n}, function(context, args) {\n var delim = checkDelimiter(args[0], context);\n\n // \\left and \\right are caught somewhere in Parser.js, which is\n // why this data doesn't match what is in buildHTML.\n return {\n type: \"leftright\",\n value: delim.value\n };\n});\n\ndefineFunction(\"\\\\middle\", {\n numArgs: 1\n}, function(context, args) {\n var delim = checkDelimiter(args[0], context);\n if (!context.parser.leftrightDepth) {\n throw new ParseError(\"\\\\middle without preceding \\\\left\", delim);\n }\n\n return {\n type: \"middle\",\n value: delim.value\n };\n});\n\n// Sizing functions (handled in Parser.js explicitly, hence no handler)\ndefineFunction([\n \"\\\\tiny\", \"\\\\scriptsize\", \"\\\\footnotesize\", \"\\\\small\",\n \"\\\\normalsize\", \"\\\\large\", \"\\\\Large\", \"\\\\LARGE\", \"\\\\huge\", \"\\\\Huge\"\n], 0, null);\n\n// Style changing functions (handled in Parser.js explicitly, hence no\n// handler)\ndefineFunction([\n \"\\\\displaystyle\", \"\\\\textstyle\", \"\\\\scriptstyle\",\n \"\\\\scriptscriptstyle\"\n], 0, null);\n\ndefineFunction([\n // styles\n \"\\\\mathrm\", \"\\\\mathit\", \"\\\\mathbf\",\n\n // families\n \"\\\\mathbb\", \"\\\\mathcal\", \"\\\\mathfrak\", \"\\\\mathscr\", \"\\\\mathsf\",\n \"\\\\mathtt\",\n\n // aliases\n \"\\\\Bbb\", \"\\\\bold\", \"\\\\frak\"\n], {\n numArgs: 1,\n greediness: 2\n}, function(context, args) {\n var body = args[0];\n var func = context.funcName;\n if (func in fontAliases) {\n func = fontAliases[func];\n }\n return {\n type: \"font\",\n font: func.slice(1),\n body: body\n };\n});\n\n// Accents\ndefineFunction([\n \"\\\\acute\", \"\\\\grave\", \"\\\\ddot\", \"\\\\tilde\", \"\\\\bar\", \"\\\\breve\",\n \"\\\\check\", \"\\\\hat\", \"\\\\vec\", \"\\\\dot\"\n // We don't support expanding accents yet\n // \"\\\\widetilde\", \"\\\\widehat\"\n], {\n numArgs: 1\n}, function(context, args) {\n var base = args[0];\n return {\n type: \"accent\",\n accent: context.funcName,\n base: base\n };\n});\n\n// Infix generalized fractions\ndefineFunction([\"\\\\over\", \"\\\\choose\", \"\\\\atop\"], {\n numArgs: 0,\n infix: true\n}, function(context) {\n var replaceWith;\n switch (context.funcName) {\n case \"\\\\over\":\n replaceWith = \"\\\\frac\";\n break;\n case \"\\\\choose\":\n replaceWith = \"\\\\binom\";\n break;\n case \"\\\\atop\":\n replaceWith = \"\\\\\\\\atopfrac\";\n break;\n default:\n throw new Error(\"Unrecognized infix genfrac command\");\n }\n return {\n type: \"infix\",\n replaceWith: replaceWith,\n token: context.token\n };\n});\n\n// Row breaks for aligned data\ndefineFunction([\"\\\\\\\\\", \"\\\\cr\"], {\n numArgs: 0,\n numOptionalArgs: 1,\n argTypes: [\"size\"]\n}, function(context, args) {\n var size = args[0];\n return {\n type: \"cr\",\n size: size\n };\n});\n\n// Environment delimiters\ndefineFunction([\"\\\\begin\", \"\\\\end\"], {\n numArgs: 1,\n argTypes: [\"text\"]\n}, function(context, args) {\n var nameGroup = args[0];\n if (nameGroup.type !== \"ordgroup\") {\n throw new ParseError(\"Invalid environment name\", nameGroup);\n }\n var name = \"\";\n for (var i = 0; i < nameGroup.value.length; ++i) {\n name += nameGroup.value[i].value;\n }\n return {\n type: \"environment\",\n name: name,\n nameGroup: nameGroup\n };\n});\n","/* eslint no-constant-condition:0 */\nvar parseData = require(\"./parseData\");\nvar ParseError = require(\"./ParseError\");\nvar Style = require(\"./Style\");\n\nvar ParseNode = parseData.ParseNode;\n\n/**\n * Parse the body of the environment, with rows delimited by \\\\ and\n * columns delimited by &, and create a nested list in row-major order\n * with one group per cell.\n */\nfunction parseArray(parser, result) {\n var row = [];\n var body = [row];\n var rowGaps = [];\n while (true) {\n var cell = parser.parseExpression(false, null);\n row.push(new ParseNode(\"ordgroup\", cell, parser.mode));\n var next = parser.nextToken.text;\n if (next === \"&\") {\n parser.consume();\n } else if (next === \"\\\\end\") {\n break;\n } else if (next === \"\\\\\\\\\" || next === \"\\\\cr\") {\n var cr = parser.parseFunction();\n rowGaps.push(cr.value.size);\n row = [];\n body.push(row);\n } else {\n throw new ParseError(\"Expected & or \\\\\\\\ or \\\\end\",\n parser.nextToken);\n }\n }\n result.body = body;\n result.rowGaps = rowGaps;\n return new ParseNode(result.type, result, parser.mode);\n}\n\n/*\n * An environment definition is very similar to a function definition:\n * it is declared with a name or a list of names, a set of properties\n * and a handler containing the actual implementation.\n *\n * The properties include:\n * - numArgs: The number of arguments after the \\begin{name} function.\n * - argTypes: (optional) Just like for a function\n * - allowedInText: (optional) Whether or not the environment is allowed inside\n * text mode (default false) (not enforced yet)\n * - numOptionalArgs: (optional) Just like for a function\n * A bare number instead of that object indicates the numArgs value.\n *\n * The handler function will receive two arguments\n * - context: information and references provided by the parser\n * - args: an array of arguments passed to \\begin{name}\n * The context contains the following properties:\n * - envName: the name of the environment, one of the listed names.\n * - parser: the parser object\n * - lexer: the lexer object\n * - positions: the positions associated with these arguments from args.\n * The handler must return a ParseResult.\n */\n\nfunction defineEnvironment(names, props, handler) {\n if (typeof names === \"string\") {\n names = [names];\n }\n if (typeof props === \"number\") {\n props = { numArgs: props };\n }\n // Set default values of environments\n var data = {\n numArgs: props.numArgs || 0,\n argTypes: props.argTypes,\n greediness: 1,\n allowedInText: !!props.allowedInText,\n numOptionalArgs: props.numOptionalArgs || 0,\n handler: handler\n };\n for (var i = 0; i < names.length; ++i) {\n module.exports[names[i]] = data;\n }\n}\n\n// Arrays are part of LaTeX, defined in lttab.dtx so its documentation\n// is part of the source2e.pdf file of LaTeX2e source documentation.\ndefineEnvironment(\"array\", {\n numArgs: 1\n}, function(context, args) {\n var colalign = args[0];\n colalign = colalign.value.map ? colalign.value : [colalign];\n var cols = colalign.map(function(node) {\n var ca = node.value;\n if (\"lcr\".indexOf(ca) !== -1) {\n return {\n type: \"align\",\n align: ca\n };\n } else if (ca === \"|\") {\n return {\n type: \"separator\",\n separator: \"|\"\n };\n }\n throw new ParseError(\n \"Unknown column alignment: \" + node.value,\n node);\n });\n var res = {\n type: \"array\",\n cols: cols,\n hskipBeforeAndAfter: true // \\@preamble in lttab.dtx\n };\n res = parseArray(context.parser, res);\n return res;\n});\n\n// The matrix environments of amsmath builds on the array environment\n// of LaTeX, which is discussed above.\ndefineEnvironment([\n \"matrix\",\n \"pmatrix\",\n \"bmatrix\",\n \"Bmatrix\",\n \"vmatrix\",\n \"Vmatrix\"\n], {\n}, function(context) {\n var delimiters = {\n \"matrix\": null,\n \"pmatrix\": [\"(\", \")\"],\n \"bmatrix\": [\"[\", \"]\"],\n \"Bmatrix\": [\"\\\\{\", \"\\\\}\"],\n \"vmatrix\": [\"|\", \"|\"],\n \"Vmatrix\": [\"\\\\Vert\", \"\\\\Vert\"]\n }[context.envName];\n var res = {\n type: \"array\",\n hskipBeforeAndAfter: false // \\hskip -\\arraycolsep in amsmath\n };\n res = parseArray(context.parser, res);\n if (delimiters) {\n res = new ParseNode(\"leftright\", {\n body: [res],\n left: delimiters[0],\n right: delimiters[1]\n }, context.mode);\n }\n return res;\n});\n\n// A cases environment (in amsmath.sty) is almost equivalent to\n// \\def\\arraystretch{1.2}%\n// \\left\\{\\begin{array}{@{}l@{\\quad}l@{}} … \\end{array}\\right.\ndefineEnvironment(\"cases\", {\n}, function(context) {\n var res = {\n type: \"array\",\n arraystretch: 1.2,\n cols: [{\n type: \"align\",\n align: \"l\",\n pregap: 0,\n // TODO(kevinb) get the current style.\n // For now we use the metrics for TEXT style which is what we were\n // doing before. Before attempting to get the current style we\n // should look at TeX's behavior especially for \\over and matrices.\n postgap: Style.TEXT.metrics.quad\n }, {\n type: \"align\",\n align: \"l\",\n pregap: 0,\n postgap: 0\n }]\n };\n res = parseArray(context.parser, res);\n res = new ParseNode(\"leftright\", {\n body: [res],\n left: \"\\\\{\",\n right: \".\"\n }, context.mode);\n return res;\n});\n\n// An aligned environment is like the align* environment\n// except it operates within math mode.\n// Note that we assume \\nomallineskiplimit to be zero,\n// so that \\strut@ is the same as \\strut.\ndefineEnvironment(\"aligned\", {\n}, function(context) {\n var res = {\n type: \"array\",\n cols: []\n };\n res = parseArray(context.parser, res);\n var emptyGroup = new ParseNode(\"ordgroup\", [], context.mode);\n var numCols = 0;\n res.value.body.forEach(function(row) {\n var i;\n for (i = 1; i < row.length; i += 2) {\n row[i].value.unshift(emptyGroup);\n }\n if (numCols < row.length) {\n numCols = row.length;\n }\n });\n for (var i = 0; i < numCols; ++i) {\n var align = \"r\";\n var pregap = 0;\n if (i % 2 === 1) {\n align = \"l\";\n } else if (i > 0) {\n pregap = 2; // one \\qquad between columns\n }\n res.value.cols[i] = {\n type: \"align\",\n align: align,\n pregap: pregap,\n postgap: 0\n };\n }\n return res;\n});\n","/** @flow */\n\n\"use strict\";\n\nfunction getRelocatable(re) {\n // In the future, this could use a WeakMap instead of an expando.\n if (!re.__matchAtRelocatable) {\n // Disjunctions are the lowest-precedence operator, so we can make any\n // pattern match the empty string by appending `|()` to it:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-patterns\n var source = re.source + \"|()\";\n\n // We always make the new regex global.\n var flags = \"g\" + (re.ignoreCase ? \"i\" : \"\") + (re.multiline ? \"m\" : \"\") + (re.unicode ? \"u\" : \"\")\n // sticky (/.../y) doesn't make sense in conjunction with our relocation\n // logic, so we ignore it here.\n ;\n\n re.__matchAtRelocatable = new RegExp(source, flags);\n }\n return re.__matchAtRelocatable;\n}\n\nfunction matchAt(re, str, pos) {\n if (re.global || re.sticky) {\n throw new Error(\"matchAt(...): Only non-global regexes are supported\");\n }\n var reloc = getRelocatable(re);\n reloc.lastIndex = pos;\n var match = reloc.exec(str);\n // Last capturing group is our sentinel that indicates whether the regex\n // matched at the given location.\n if (match[match.length - 1] == null) {\n // Original regex matched.\n match.length = match.length - 1;\n return match;\n } else {\n return null;\n }\n}\n\nmodule.exports = matchAt;","/**\n * The Lexer class handles tokenizing the input in various ways. Since our\n * parser expects us to be able to backtrack, the lexer allows lexing from any\n * given starting point.\n *\n * Its main exposed function is the `lex` function, which takes a position to\n * lex from and a type of token to lex. It defers to the appropriate `_innerLex`\n * function.\n *\n * The various `_innerLex` functions perform the actual lexing of different\n * kinds.\n */\n\nvar matchAt = require(\"match-at\");\n\nvar ParseError = require(\"./ParseError\");\n\n// The main lexer class\nfunction Lexer(input) {\n this.input = input;\n this.pos = 0;\n}\n\n/**\n * The resulting token returned from `lex`.\n *\n * It consists of the token text plus some position information.\n * The position information is essentially a range in an input string,\n * but instead of referencing the bare input string, we refer to the lexer.\n * That way it is possible to attach extra metadata to the input string,\n * like for example a file name or similar.\n *\n * The position information (all three parameters) is optional,\n * so it is OK to construct synthetic tokens if appropriate.\n * Not providing available position information may lead to\n * degraded error reporting, though.\n *\n * @param {string} text the text of this token\n * @param {number=} start the start offset, zero-based inclusive\n * @param {number=} end the end offset, zero-based exclusive\n * @param {Lexer=} lexer the lexer which in turn holds the input string\n */\nfunction Token(text, start, end, lexer) {\n this.text = text;\n this.start = start;\n this.end = end;\n this.lexer = lexer;\n}\n\n/**\n * Given a pair of tokens (this and endToken), compute a “Token” encompassing\n * the whole input range enclosed by these two.\n *\n * @param {Token} endToken last token of the range, inclusive\n * @param {string} text the text of the newly constructed token\n */\nToken.prototype.range = function(endToken, text) {\n if (endToken.lexer !== this.lexer) {\n return new Token(text); // sorry, no position information available\n }\n return new Token(text, this.start, endToken.end, this.lexer);\n};\n\n/* The following tokenRegex\n * - matches typical whitespace (but not NBSP etc.) using its first group\n * - does not match any control character \\x00-\\x1f except whitespace\n * - does not match a bare backslash\n * - matches any ASCII character except those just mentioned\n * - does not match the BMP private use area \\uE000-\\uF8FF\n * - does not match bare surrogate code units\n * - matches any BMP character except for those just described\n * - matches any valid Unicode surrogate pair\n * - matches a backslash followed by one or more letters\n * - matches a backslash followed by any BMP character, including newline\n * Just because the Lexer matches something doesn't mean it's valid input:\n * If there is no matching function or symbol definition, the Parser will\n * still reject the input.\n */\nvar tokenRegex = new RegExp(\n \"([ \\r\\n\\t]+)|\" + // whitespace\n \"([!-\\\\[\\\\]-\\u2027\\u202A-\\uD7FF\\uF900-\\uFFFF]\" + // single codepoint\n \"|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]\" + // surrogate pair\n \"|\\\\\\\\(?:[a-zA-Z]+|[^\\uD800-\\uDFFF])\" + // function name\n \")\"\n);\n\n/**\n * This function lexes a single token.\n */\nLexer.prototype.lex = function() {\n var input = this.input;\n var pos = this.pos;\n if (pos === input.length) {\n return new Token(\"EOF\", pos, pos, this);\n }\n var match = matchAt(tokenRegex, input, pos);\n if (match === null) {\n throw new ParseError(\n \"Unexpected character: '\" + input[pos] + \"'\",\n new Token(input[pos], pos, pos + 1, this));\n }\n var text = match[2] || \" \";\n var start = this.pos;\n this.pos += match[0].length;\n var end = this.pos;\n return new Token(text, start, end, this);\n};\n\nmodule.exports = Lexer;\n","/**\n * This file contains the “gullet” where macros are expanded\n * until only non-macro tokens remain.\n */\n\nvar Lexer = require(\"./Lexer\");\n\nfunction MacroExpander(input, macros) {\n this.lexer = new Lexer(input);\n this.macros = macros;\n this.stack = []; // contains tokens in REVERSE order\n this.discardedWhiteSpace = [];\n}\n\n/**\n * Recursively expand first token, then return first non-expandable token.\n */\nMacroExpander.prototype.nextToken = function() {\n for (;;) {\n if (this.stack.length === 0) {\n this.stack.push(this.lexer.lex());\n }\n var topToken = this.stack.pop();\n var name = topToken.text;\n if (!(name.charAt(0) === \"\\\\\" && this.macros.hasOwnProperty(name))) {\n return topToken;\n }\n var expansion = this.macros[name];\n if (typeof expansion === \"string\") {\n var bodyLexer = new Lexer(expansion);\n expansion = [];\n var tok = bodyLexer.lex();\n while (tok.text !== \"EOF\") {\n expansion.push(tok);\n tok = bodyLexer.lex();\n }\n expansion.reverse(); // to fit in with stack using push and pop\n this.macros[name] = expansion;\n }\n this.stack = this.stack.concat(expansion);\n }\n};\n\nMacroExpander.prototype.get = function(ignoreSpace) {\n this.discardedWhiteSpace = [];\n var token = this.nextToken();\n if (ignoreSpace) {\n while (token.text === \" \") {\n this.discardedWhiteSpace.push(token);\n token = this.nextToken();\n }\n }\n return token;\n};\n\n/**\n * Undo the effect of the preceding call to the get method.\n * A call to this method MUST be immediately preceded and immediately followed\n * by a call to get. Only used during mode switching, i.e. after one token\n * was got in the old mode but should get got again in a new mode\n * with possibly different whitespace handling.\n */\nMacroExpander.prototype.unget = function(token) {\n this.stack.push(token);\n while (this.discardedWhiteSpace.length !== 0) {\n this.stack.push(this.discardedWhiteSpace.pop());\n }\n};\n\nmodule.exports = MacroExpander;\n","/* eslint no-constant-condition:0 */\nvar functions = require(\"./functions\");\nvar environments = require(\"./environments\");\nvar MacroExpander = require(\"./MacroExpander\");\nvar symbols = require(\"./symbols\");\nvar utils = require(\"./utils\");\nvar cjkRegex = require(\"./unicodeRegexes\").cjkRegex;\n\nvar parseData = require(\"./parseData\");\nvar ParseError = require(\"./ParseError\");\n\n/**\n * This file contains the parser used to parse out a TeX expression from the\n * input. Since TeX isn't context-free, standard parsers don't work particularly\n * well.\n *\n * The strategy of this parser is as such:\n *\n * The main functions (the `.parse...` ones) take a position in the current\n * parse string to parse tokens from. The lexer (found in Lexer.js, stored at\n * this.lexer) also supports pulling out tokens at arbitrary places. When\n * individual tokens are needed at a position, the lexer is called to pull out a\n * token, which is then used.\n *\n * The parser has a property called \"mode\" indicating the mode that\n * the parser is currently in. Currently it has to be one of \"math\" or\n * \"text\", which denotes whether the current environment is a math-y\n * one or a text-y one (e.g. inside \\text). Currently, this serves to\n * limit the functions which can be used in text mode.\n *\n * The main functions then return an object which contains the useful data that\n * was parsed at its given point, and a new position at the end of the parsed\n * data. The main functions can call each other and continue the parsing by\n * using the returned position as a new starting point.\n *\n * There are also extra `.handle...` functions, which pull out some reused\n * functionality into self-contained functions.\n *\n * The earlier functions return ParseNodes.\n * The later functions (which are called deeper in the parse) sometimes return\n * ParseFuncOrArgument, which contain a ParseNode as well as some data about\n * whether the parsed object is a function which is missing some arguments, or a\n * standalone object which can be used as an argument to another function.\n */\n\n/**\n * Main Parser class\n */\nfunction Parser(input, settings) {\n // Create a new macro expander (gullet) and (indirectly via that) also a\n // new lexer (mouth) for this parser (stomach, in the language of TeX)\n this.gullet = new MacroExpander(input, settings.macros);\n // Store the settings for use in parsing\n this.settings = settings;\n // Count leftright depth (for \\middle errors)\n this.leftrightDepth = 0;\n}\n\nvar ParseNode = parseData.ParseNode;\n\n/**\n * An initial function (without its arguments), or an argument to a function.\n * The `result` argument should be a ParseNode.\n */\nfunction ParseFuncOrArgument(result, isFunction, token) {\n this.result = result;\n // Is this a function (i.e. is it something defined in functions.js)?\n this.isFunction = isFunction;\n this.token = token;\n}\n\n/**\n * Checks a result to make sure it has the right type, and throws an\n * appropriate error otherwise.\n *\n * @param {boolean=} consume whether to consume the expected token,\n * defaults to true\n */\nParser.prototype.expect = function(text, consume) {\n if (this.nextToken.text !== text) {\n throw new ParseError(\n \"Expected '\" + text + \"', got '\" + this.nextToken.text + \"'\",\n this.nextToken\n );\n }\n if (consume !== false) {\n this.consume();\n }\n};\n\n/**\n * Considers the current look ahead token as consumed,\n * and fetches the one after that as the new look ahead.\n */\nParser.prototype.consume = function() {\n this.nextToken = this.gullet.get(this.mode === \"math\");\n};\n\nParser.prototype.switchMode = function(newMode) {\n this.gullet.unget(this.nextToken);\n this.mode = newMode;\n this.consume();\n};\n\n/**\n * Main parsing function, which parses an entire input.\n *\n * @return {?Array.}\n */\nParser.prototype.parse = function() {\n // Try to parse the input\n this.mode = \"math\";\n this.consume();\n var parse = this.parseInput();\n return parse;\n};\n\n/**\n * Parses an entire input tree.\n */\nParser.prototype.parseInput = function() {\n // Parse an expression\n var expression = this.parseExpression(false);\n // If we succeeded, make sure there's an EOF at the end\n this.expect(\"EOF\", false);\n return expression;\n};\n\nvar endOfExpression = [\"}\", \"\\\\end\", \"\\\\right\", \"&\", \"\\\\\\\\\", \"\\\\cr\"];\n\n/**\n * Parses an \"expression\", which is a list of atoms.\n *\n * @param {boolean} breakOnInfix Should the parsing stop when we hit infix\n * nodes? This happens when functions have higher precendence\n * than infix nodes in implicit parses.\n *\n * @param {?string} breakOnTokenText The text of the token that the expression\n * should end with, or `null` if something else should end the\n * expression.\n *\n * @return {ParseNode}\n */\nParser.prototype.parseExpression = function(breakOnInfix, breakOnTokenText) {\n var body = [];\n // Keep adding atoms to the body until we can't parse any more atoms (either\n // we reached the end, a }, or a \\right)\n while (true) {\n var lex = this.nextToken;\n if (endOfExpression.indexOf(lex.text) !== -1) {\n break;\n }\n if (breakOnTokenText && lex.text === breakOnTokenText) {\n break;\n }\n if (breakOnInfix && functions[lex.text] && functions[lex.text].infix) {\n break;\n }\n var atom = this.parseAtom();\n if (!atom) {\n if (!this.settings.throwOnError && lex.text[0] === \"\\\\\") {\n var errorNode = this.handleUnsupportedCmd();\n body.push(errorNode);\n continue;\n }\n\n break;\n }\n body.push(atom);\n }\n return this.handleInfixNodes(body);\n};\n\n/**\n * Rewrites infix operators such as \\over with corresponding commands such\n * as \\frac.\n *\n * There can only be one infix operator per group. If there's more than one\n * then the expression is ambiguous. This can be resolved by adding {}.\n *\n * @returns {Array}\n */\nParser.prototype.handleInfixNodes = function(body) {\n var overIndex = -1;\n var funcName;\n\n for (var i = 0; i < body.length; i++) {\n var node = body[i];\n if (node.type === \"infix\") {\n if (overIndex !== -1) {\n throw new ParseError(\n \"only one infix operator per group\",\n node.value.token);\n }\n overIndex = i;\n funcName = node.value.replaceWith;\n }\n }\n\n if (overIndex !== -1) {\n var numerNode;\n var denomNode;\n\n var numerBody = body.slice(0, overIndex);\n var denomBody = body.slice(overIndex + 1);\n\n if (numerBody.length === 1 && numerBody[0].type === \"ordgroup\") {\n numerNode = numerBody[0];\n } else {\n numerNode = new ParseNode(\"ordgroup\", numerBody, this.mode);\n }\n\n if (denomBody.length === 1 && denomBody[0].type === \"ordgroup\") {\n denomNode = denomBody[0];\n } else {\n denomNode = new ParseNode(\"ordgroup\", denomBody, this.mode);\n }\n\n var value = this.callFunction(\n funcName, [numerNode, denomNode], null);\n return [new ParseNode(value.type, value, this.mode)];\n } else {\n return body;\n }\n};\n\n// The greediness of a superscript or subscript\nvar SUPSUB_GREEDINESS = 1;\n\n/**\n * Handle a subscript or superscript with nice errors.\n */\nParser.prototype.handleSupSubscript = function(name) {\n var symbolToken = this.nextToken;\n var symbol = symbolToken.text;\n this.consume();\n var group = this.parseGroup();\n\n if (!group) {\n if (!this.settings.throwOnError && this.nextToken.text[0] === \"\\\\\") {\n return this.handleUnsupportedCmd();\n } else {\n throw new ParseError(\n \"Expected group after '\" + symbol + \"'\",\n symbolToken\n );\n }\n } else if (group.isFunction) {\n // ^ and _ have a greediness, so handle interactions with functions'\n // greediness\n var funcGreediness = functions[group.result].greediness;\n if (funcGreediness > SUPSUB_GREEDINESS) {\n return this.parseFunction(group);\n } else {\n throw new ParseError(\n \"Got function '\" + group.result + \"' with no arguments \" +\n \"as \" + name, symbolToken);\n }\n } else {\n return group.result;\n }\n};\n\n/**\n * Converts the textual input of an unsupported command into a text node\n * contained within a color node whose color is determined by errorColor\n */\nParser.prototype.handleUnsupportedCmd = function() {\n var text = this.nextToken.text;\n var textordArray = [];\n\n for (var i = 0; i < text.length; i++) {\n textordArray.push(new ParseNode(\"textord\", text[i], \"text\"));\n }\n\n var textNode = new ParseNode(\n \"text\",\n {\n body: textordArray,\n type: \"text\"\n },\n this.mode);\n\n var colorNode = new ParseNode(\n \"color\",\n {\n color: this.settings.errorColor,\n value: [textNode],\n type: \"color\"\n },\n this.mode);\n\n this.consume();\n return colorNode;\n};\n\n/**\n * Parses a group with optional super/subscripts.\n *\n * @return {?ParseNode}\n */\nParser.prototype.parseAtom = function() {\n // The body of an atom is an implicit group, so that things like\n // \\left(x\\right)^2 work correctly.\n var base = this.parseImplicitGroup();\n\n // In text mode, we don't have superscripts or subscripts\n if (this.mode === \"text\") {\n return base;\n }\n\n // Note that base may be empty (i.e. null) at this point.\n\n var superscript;\n var subscript;\n while (true) {\n // Lex the first token\n var lex = this.nextToken;\n\n if (lex.text === \"\\\\limits\" || lex.text === \"\\\\nolimits\") {\n // We got a limit control\n if (!base || base.type !== \"op\") {\n throw new ParseError(\n \"Limit controls must follow a math operator\",\n lex);\n } else {\n var limits = lex.text === \"\\\\limits\";\n base.value.limits = limits;\n base.value.alwaysHandleSupSub = true;\n }\n this.consume();\n } else if (lex.text === \"^\") {\n // We got a superscript start\n if (superscript) {\n throw new ParseError(\"Double superscript\", lex);\n }\n superscript = this.handleSupSubscript(\"superscript\");\n } else if (lex.text === \"_\") {\n // We got a subscript start\n if (subscript) {\n throw new ParseError(\"Double subscript\", lex);\n }\n subscript = this.handleSupSubscript(\"subscript\");\n } else if (lex.text === \"'\") {\n // We got a prime\n var prime = new ParseNode(\"textord\", \"\\\\prime\", this.mode);\n\n // Many primes can be grouped together, so we handle this here\n var primes = [prime];\n this.consume();\n // Keep lexing tokens until we get something that's not a prime\n while (this.nextToken.text === \"'\") {\n // For each one, add another prime to the list\n primes.push(prime);\n this.consume();\n }\n // Put them into an ordgroup as the superscript\n superscript = new ParseNode(\"ordgroup\", primes, this.mode);\n } else {\n // If it wasn't ^, _, or ', stop parsing super/subscripts\n break;\n }\n }\n\n if (superscript || subscript) {\n // If we got either a superscript or subscript, create a supsub\n return new ParseNode(\"supsub\", {\n base: base,\n sup: superscript,\n sub: subscript\n }, this.mode);\n } else {\n // Otherwise return the original body\n return base;\n }\n};\n\n// A list of the size-changing functions, for use in parseImplicitGroup\nvar sizeFuncs = [\n \"\\\\tiny\", \"\\\\scriptsize\", \"\\\\footnotesize\", \"\\\\small\", \"\\\\normalsize\",\n \"\\\\large\", \"\\\\Large\", \"\\\\LARGE\", \"\\\\huge\", \"\\\\Huge\"\n];\n\n// A list of the style-changing functions, for use in parseImplicitGroup\nvar styleFuncs = [\n \"\\\\displaystyle\", \"\\\\textstyle\", \"\\\\scriptstyle\", \"\\\\scriptscriptstyle\"\n];\n\n/**\n * Parses an implicit group, which is a group that starts at the end of a\n * specified, and ends right before a higher explicit group ends, or at EOL. It\n * is used for functions that appear to affect the current style, like \\Large or\n * \\textrm, where instead of keeping a style we just pretend that there is an\n * implicit grouping after it until the end of the group. E.g.\n * small text {\\Large large text} small text again\n * It is also used for \\left and \\right to get the correct grouping.\n *\n * @return {?ParseNode}\n */\nParser.prototype.parseImplicitGroup = function() {\n var start = this.parseSymbol();\n\n if (start == null) {\n // If we didn't get anything we handle, fall back to parseFunction\n return this.parseFunction();\n }\n\n var func = start.result;\n var body;\n\n if (func === \"\\\\left\") {\n // If we see a left:\n // Parse the entire left function (including the delimiter)\n var left = this.parseFunction(start);\n // Parse out the implicit body\n ++this.leftrightDepth;\n body = this.parseExpression(false);\n --this.leftrightDepth;\n // Check the next token\n this.expect(\"\\\\right\", false);\n var right = this.parseFunction();\n return new ParseNode(\"leftright\", {\n body: body,\n left: left.value.value,\n right: right.value.value\n }, this.mode);\n } else if (func === \"\\\\begin\") {\n // begin...end is similar to left...right\n var begin = this.parseFunction(start);\n var envName = begin.value.name;\n if (!environments.hasOwnProperty(envName)) {\n throw new ParseError(\n \"No such environment: \" + envName, begin.value.nameGroup);\n }\n // Build the environment object. Arguments and other information will\n // be made available to the begin and end methods using properties.\n var env = environments[envName];\n var args = this.parseArguments(\"\\\\begin{\" + envName + \"}\", env);\n var context = {\n mode: this.mode,\n envName: envName,\n parser: this,\n positions: args.pop()\n };\n var result = env.handler(context, args);\n this.expect(\"\\\\end\", false);\n var endNameToken = this.nextToken;\n var end = this.parseFunction();\n if (end.value.name !== envName) {\n throw new ParseError(\n \"Mismatch: \\\\begin{\" + envName + \"} matched \" +\n \"by \\\\end{\" + end.value.name + \"}\",\n endNameToken);\n }\n result.position = end.position;\n return result;\n } else if (utils.contains(sizeFuncs, func)) {\n // If we see a sizing function, parse out the implict body\n body = this.parseExpression(false);\n return new ParseNode(\"sizing\", {\n // Figure out what size to use based on the list of functions above\n size: \"size\" + (utils.indexOf(sizeFuncs, func) + 1),\n value: body\n }, this.mode);\n } else if (utils.contains(styleFuncs, func)) {\n // If we see a styling function, parse out the implict body\n body = this.parseExpression(true);\n return new ParseNode(\"styling\", {\n // Figure out what style to use by pulling out the style from\n // the function name\n style: func.slice(1, func.length - 5),\n value: body\n }, this.mode);\n } else {\n // Defer to parseFunction if it's not a function we handle\n return this.parseFunction(start);\n }\n};\n\n/**\n * Parses an entire function, including its base and all of its arguments.\n * The base might either have been parsed already, in which case\n * it is provided as an argument, or it's the next group in the input.\n *\n * @param {ParseFuncOrArgument=} baseGroup optional as described above\n * @return {?ParseNode}\n */\nParser.prototype.parseFunction = function(baseGroup) {\n if (!baseGroup) {\n baseGroup = this.parseGroup();\n }\n\n if (baseGroup) {\n if (baseGroup.isFunction) {\n var func = baseGroup.result;\n var funcData = functions[func];\n if (this.mode === \"text\" && !funcData.allowedInText) {\n throw new ParseError(\n \"Can't use function '\" + func + \"' in text mode\",\n baseGroup.token);\n }\n\n var args = this.parseArguments(func, funcData);\n var token = baseGroup.token;\n var result = this.callFunction(func, args, args.pop(), token);\n return new ParseNode(result.type, result, this.mode);\n } else {\n return baseGroup.result;\n }\n } else {\n return null;\n }\n};\n\n/**\n * Call a function handler with a suitable context and arguments.\n */\nParser.prototype.callFunction = function(name, args, positions, token) {\n var context = {\n funcName: name,\n parser: this,\n positions: positions,\n token: token\n };\n return functions[name].handler(context, args);\n};\n\n/**\n * Parses the arguments of a function or environment\n *\n * @param {string} func \"\\name\" or \"\\begin{name}\"\n * @param {{numArgs:number,numOptionalArgs:number|undefined}} funcData\n * @return the array of arguments, with the list of positions as last element\n */\nParser.prototype.parseArguments = function(func, funcData) {\n var totalArgs = funcData.numArgs + funcData.numOptionalArgs;\n if (totalArgs === 0) {\n return [[this.pos]];\n }\n\n var baseGreediness = funcData.greediness;\n var positions = [this.pos];\n var args = [];\n\n for (var i = 0; i < totalArgs; i++) {\n var nextToken = this.nextToken;\n var argType = funcData.argTypes && funcData.argTypes[i];\n var arg;\n if (i < funcData.numOptionalArgs) {\n if (argType) {\n arg = this.parseGroupOfType(argType, true);\n } else {\n arg = this.parseGroup(true);\n }\n if (!arg) {\n args.push(null);\n positions.push(this.pos);\n continue;\n }\n } else {\n if (argType) {\n arg = this.parseGroupOfType(argType);\n } else {\n arg = this.parseGroup();\n }\n if (!arg) {\n if (!this.settings.throwOnError &&\n this.nextToken.text[0] === \"\\\\\") {\n arg = new ParseFuncOrArgument(\n this.handleUnsupportedCmd(this.nextToken.text),\n false);\n } else {\n throw new ParseError(\n \"Expected group after '\" + func + \"'\", nextToken);\n }\n }\n }\n var argNode;\n if (arg.isFunction) {\n var argGreediness =\n functions[arg.result].greediness;\n if (argGreediness > baseGreediness) {\n argNode = this.parseFunction(arg);\n } else {\n throw new ParseError(\n \"Got function '\" + arg.result + \"' as \" +\n \"argument to '\" + func + \"'\", nextToken);\n }\n } else {\n argNode = arg.result;\n }\n args.push(argNode);\n positions.push(this.pos);\n }\n\n args.push(positions);\n\n return args;\n};\n\n\n/**\n * Parses a group when the mode is changing.\n *\n * @return {?ParseFuncOrArgument}\n */\nParser.prototype.parseGroupOfType = function(innerMode, optional) {\n var outerMode = this.mode;\n // Handle `original` argTypes\n if (innerMode === \"original\") {\n innerMode = outerMode;\n }\n\n if (innerMode === \"color\") {\n return this.parseColorGroup(optional);\n }\n if (innerMode === \"size\") {\n return this.parseSizeGroup(optional);\n }\n\n this.switchMode(innerMode);\n if (innerMode === \"text\") {\n // text mode is special because it should ignore the whitespace before\n // it\n while (this.nextToken.text === \" \") {\n this.consume();\n }\n }\n // By the time we get here, innerMode is one of \"text\" or \"math\".\n // We switch the mode of the parser, recurse, then restore the old mode.\n var res = this.parseGroup(optional);\n this.switchMode(outerMode);\n return res;\n};\n\n/**\n * Parses a group, essentially returning the string formed by the\n * brace-enclosed tokens plus some position information.\n *\n * @param {string} modeName Used to describe the mode in error messages\n * @param {boolean=} optional Whether the group is optional or required\n */\nParser.prototype.parseStringGroup = function(modeName, optional) {\n if (optional && this.nextToken.text !== \"[\") {\n return null;\n }\n var outerMode = this.mode;\n this.mode = \"text\";\n this.expect(optional ? \"[\" : \"{\");\n var str = \"\";\n var firstToken = this.nextToken;\n var lastToken = firstToken;\n while (this.nextToken.text !== (optional ? \"]\" : \"}\")) {\n if (this.nextToken.text === \"EOF\") {\n throw new ParseError(\n \"Unexpected end of input in \" + modeName,\n firstToken.range(this.nextToken, str));\n }\n lastToken = this.nextToken;\n str += lastToken.text;\n this.consume();\n }\n this.mode = outerMode;\n this.expect(optional ? \"]\" : \"}\");\n return firstToken.range(lastToken, str);\n};\n\n/**\n * Parses a regex-delimited group: the largest sequence of tokens\n * whose concatenated strings match `regex`. Returns the string\n * formed by the tokens plus some position information.\n *\n * @param {RegExp} regex\n * @param {string} modeName Used to describe the mode in error messages\n */\nParser.prototype.parseRegexGroup = function(regex, modeName) {\n var outerMode = this.mode;\n this.mode = \"text\";\n var firstToken = this.nextToken;\n var lastToken = firstToken;\n var str = \"\";\n while (this.nextToken.text !== \"EOF\"\n && regex.test(str + this.nextToken.text)) {\n lastToken = this.nextToken;\n str += lastToken.text;\n this.consume();\n }\n if (str === \"\") {\n throw new ParseError(\n \"Invalid \" + modeName + \": '\" + firstToken.text + \"'\",\n firstToken);\n }\n this.mode = outerMode;\n return firstToken.range(lastToken, str);\n};\n\n/**\n * Parses a color description.\n */\nParser.prototype.parseColorGroup = function(optional) {\n var res = this.parseStringGroup(\"color\", optional);\n if (!res) {\n return null;\n }\n var match = (/^(#[a-z0-9]+|[a-z]+)$/i).exec(res.text);\n if (!match) {\n throw new ParseError(\"Invalid color: '\" + res.text + \"'\", res);\n }\n return new ParseFuncOrArgument(\n new ParseNode(\"color\", match[0], this.mode),\n false);\n};\n\n/**\n * Parses a size specification, consisting of magnitude and unit.\n */\nParser.prototype.parseSizeGroup = function(optional) {\n var res;\n if (!optional && this.nextToken.text !== \"{\") {\n res = this.parseRegexGroup(\n /^[-+]? *(?:$|\\d+|\\d+\\.\\d*|\\.\\d*) *[a-z]{0,2}$/, \"size\");\n } else {\n res = this.parseStringGroup(\"size\", optional);\n }\n if (!res) {\n return null;\n }\n var match = (/([-+]?) *(\\d+(?:\\.\\d*)?|\\.\\d+) *([a-z]{2})/).exec(res.text);\n if (!match) {\n throw new ParseError(\"Invalid size: '\" + res.text + \"'\", res);\n }\n var data = {\n number: +(match[1] + match[2]), // sign + magnitude, cast to number\n unit: match[3]\n };\n if (data.unit !== \"em\" && data.unit !== \"ex\" && data.unit !== \"mu\") {\n throw new ParseError(\"Invalid unit: '\" + data.unit + \"'\", res);\n }\n return new ParseFuncOrArgument(\n new ParseNode(\"color\", data, this.mode),\n false);\n};\n\n/**\n * If the argument is false or absent, this parses an ordinary group,\n * which is either a single nucleus (like \"x\") or an expression\n * in braces (like \"{x+y}\").\n * If the argument is true, it parses either a bracket-delimited expression\n * (like \"[x+y]\") or returns null to indicate the absence of a\n * bracket-enclosed group.\n *\n * @param {boolean=} optional Whether the group is optional or required\n * @return {?ParseFuncOrArgument}\n */\nParser.prototype.parseGroup = function(optional) {\n var firstToken = this.nextToken;\n // Try to parse an open brace\n if (this.nextToken.text === (optional ? \"[\" : \"{\")) {\n // If we get a brace, parse an expression\n this.consume();\n var expression = this.parseExpression(false, optional ? \"]\" : null);\n var lastToken = this.nextToken;\n // Make sure we get a close brace\n this.expect(optional ? \"]\" : \"}\");\n if (this.mode === \"text\") {\n this.formLigatures(expression);\n }\n return new ParseFuncOrArgument(\n new ParseNode(\"ordgroup\", expression, this.mode,\n firstToken, lastToken),\n false);\n } else {\n // Otherwise, just return a nucleus, or nothing for an optional group\n return optional ? null : this.parseSymbol();\n }\n};\n\n/**\n * Form ligature-like combinations of characters for text mode.\n * This includes inputs like \"--\", \"---\", \"``\" and \"''\".\n * The result will simply replace multiple textord nodes with a single\n * character in each value by a single textord node having multiple\n * characters in its value. The representation is still ASCII source.\n *\n * @param {Array.} group the nodes of this group,\n * list will be moified in place\n */\nParser.prototype.formLigatures = function(group) {\n var i;\n var n = group.length - 1;\n for (i = 0; i < n; ++i) {\n var a = group[i];\n var v = a.value;\n if (v === \"-\" && group[i + 1].value === \"-\") {\n if (i + 1 < n && group[i + 2].value === \"-\") {\n group.splice(i, 3, new ParseNode(\n \"textord\", \"---\", \"text\", a, group[i + 2]));\n n -= 2;\n } else {\n group.splice(i, 2, new ParseNode(\n \"textord\", \"--\", \"text\", a, group[i + 1]));\n n -= 1;\n }\n }\n if ((v === \"'\" || v === \"`\") && group[i + 1].value === v) {\n group.splice(i, 2, new ParseNode(\n \"textord\", v + v, \"text\", a, group[i + 1]));\n n -= 1;\n }\n }\n};\n\n/**\n * Parse a single symbol out of the string. Here, we handle both the functions\n * we have defined, as well as the single character symbols\n *\n * @return {?ParseFuncOrArgument}\n */\nParser.prototype.parseSymbol = function() {\n var nucleus = this.nextToken;\n\n if (functions[nucleus.text]) {\n this.consume();\n // If there exists a function with this name, we return the function and\n // say that it is a function.\n return new ParseFuncOrArgument(\n nucleus.text,\n true, nucleus);\n } else if (symbols[this.mode][nucleus.text]) {\n this.consume();\n // Otherwise if this is a no-argument function, find the type it\n // corresponds to in the symbols map\n return new ParseFuncOrArgument(\n new ParseNode(symbols[this.mode][nucleus.text].group,\n nucleus.text, this.mode, nucleus),\n false, nucleus);\n } else if (this.mode === \"text\" && cjkRegex.test(nucleus.text)) {\n this.consume();\n return new ParseFuncOrArgument(\n new ParseNode(\"textord\", nucleus.text, this.mode, nucleus),\n false, nucleus);\n } else {\n return null;\n }\n};\n\nParser.prototype.ParseNode = ParseNode;\n\nmodule.exports = Parser;\n","/**\n * Provides a single function for parsing an expression using a Parser\n * TODO(emily): Remove this\n */\n\nvar Parser = require(\"./Parser\");\n\n/**\n * Parses an expression using a Parser, then returns the parsed result.\n */\nvar parseTree = function(toParse, settings) {\n if (!(typeof toParse === 'string' || toParse instanceof String)) {\n throw new TypeError('KaTeX can only parse string typed expression');\n }\n var parser = new Parser(toParse, settings);\n\n return parser.parse();\n};\n\nmodule.exports = parseTree;\n","/* eslint no-console:0 */\n/**\n * This is the main entry point for KaTeX. Here, we expose functions for\n * rendering expressions either to DOM nodes or to markup strings.\n *\n * We also expose the ParseError class to check if errors thrown from KaTeX are\n * errors in the expression, or errors in javascript handling.\n */\n\nvar ParseError = require(\"./src/ParseError\");\nvar Settings = require(\"./src/Settings\");\n\nvar buildTree = require(\"./src/buildTree\");\nvar parseTree = require(\"./src/parseTree\");\nvar utils = require(\"./src/utils\");\n\n/**\n * Parse and build an expression, and place that expression in the DOM node\n * given.\n */\nvar render = function(expression, baseNode, options) {\n utils.clearNode(baseNode);\n\n var settings = new Settings(options);\n\n var tree = parseTree(expression, settings);\n var node = buildTree(tree, expression, settings).toNode();\n\n baseNode.appendChild(node);\n};\n\n// KaTeX's styles don't work properly in quirks mode. Print out an error, and\n// disable rendering.\nif (typeof document !== \"undefined\") {\n if (document.compatMode !== \"CSS1Compat\") {\n typeof console !== \"undefined\" && console.warn(\n \"Warning: KaTeX doesn't work in quirks mode. Make sure your \" +\n \"website has a suitable doctype.\");\n\n render = function() {\n throw new ParseError(\"KaTeX doesn't work in quirks mode.\");\n };\n }\n}\n\n/**\n * Parse and build an expression, and return the markup for that.\n */\nvar renderToString = function(expression, options) {\n var settings = new Settings(options);\n\n var tree = parseTree(expression, settings);\n return buildTree(tree, expression, settings).toMarkup();\n};\n\n/**\n * Parse an expression and return the parse tree.\n */\nvar generateParseTree = function(expression, options) {\n var settings = new Settings(options);\n return parseTree(expression, settings);\n};\n\nmodule.exports = {\n render: render,\n renderToString: renderToString,\n /**\n * NOTE: This method is not currently recommended for public use.\n * The internal tree representation is unstable and is very likely\n * to change. Use at your own risk.\n */\n __parse: generateParseTree,\n ParseError: ParseError\n};\n","import katex from \"katex\";\n\nconst html = `\n\n`;\n\nexport default function(dom, data) {\n let equationElements = [].slice.call(dom.querySelectorAll(\"dt-math\"));\n equationElements.forEach(el => {\n let content = el.textContent;\n console.log(content)\n let displayMode = el.hasAttribute(\"block\") ? true : false;\n el.innerHTML = html + katex.renderToString(content, {displayMode: displayMode});\n });\n}","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n */\n\n;(function() {\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^( *[-*_]){3,} *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,\n nptable: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n blockquote: /^( *>[^\\n]+(\\n(?!def)[^\\n]+)*\\n*)+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n table: noop,\n paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,\n text: /^[^\\n]+/\n};\n\nblock.bullet = /(?:[*+-]|\\d+\\.)/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = replace(block.item, 'gm')\n (/bull/g, block.bullet)\n ();\n\nblock.list = replace(block.list)\n (/bull/g, block.bullet)\n ('hr', '\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))')\n ('def', '\\\\n+(?=' + block.def.source + ')')\n ();\n\nblock.blockquote = replace(block.blockquote)\n ('def', block.def)\n ();\n\nblock._tag = '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'\n + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'\n + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|[^\\\\w\\\\s@]*@)\\\\b';\n\nblock.html = replace(block.html)\n ('comment', //)\n ('closed', /<(tag)[\\s\\S]+?<\\/\\1>/)\n ('closing', /])*?>/)\n (/tag/g, block._tag)\n ();\n\nblock.paragraph = replace(block.paragraph)\n ('hr', block.hr)\n ('heading', block.heading)\n ('lheading', block.lheading)\n ('blockquote', block.blockquote)\n ('tag', '<' + block._tag)\n ('def', block.def)\n ();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]*?)\\s*\\1 *(?:\\n+|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = replace(block.paragraph)\n ('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n ();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top, bq) {\n var src = src.replace(/^ +$/gm, '')\n , next\n , loose\n , cap\n , bull\n , b\n , item\n , space\n , i\n , l;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic\n ? cap.replace(/\\n+$/, '')\n : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top, true);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n\n this.tokens.push({\n type: 'list_start',\n ordered: bull.length > 1\n });\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n this.tokens.push({\n type: loose\n ? 'loose_item_start'\n : 'list_item_start'\n });\n\n // Recurse.\n this.token(item, false, bq);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if ((!bq && top) && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.links[cap[1].toLowerCase()] = {\n href: cap[2],\n title: cap[3]\n };\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i]\n .replace(/^ *\\| *| *\\| *$/g, '')\n .split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n autolink: /^<([^ >]+(@|:\\/)[^ >]+)>/,\n url: noop,\n tag: /^|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^\\b_((?:[^_]|__)+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n code: /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n text: /^[\\s\\S]+?(?=[\\\\?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\ninline.link = replace(inline.link)\n ('inside', inline._inside)\n ('href', inline._href)\n ();\n\ninline.reflink = replace(inline.reflink)\n ('inside', inline._inside)\n ();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: replace(inline.escape)('])', '~|])')(),\n url: /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n text: replace(inline.text)\n (']|', '~]|')\n ('|', '|https?://|')\n ()\n});\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: replace(inline.br)('{2,}', '*')(),\n text: replace(inline.gfm.text)('{2,}', '*')()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer;\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new\n Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n var out = ''\n , link\n , text\n , href\n , cap;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += cap[1];\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = cap[1].charAt(6) === ':'\n ? this.mangle(cap[1].substring(7))\n : this.mangle(cap[1]);\n href = this.mangle('mailto:') + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n src = src.substring(cap[0].length);\n text = escape(cap[1]);\n href = text;\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^/i.test(cap[0])) {\n this.inLink = false;\n }\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0]\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out += this.outputLink(cap, {\n href: cap[2],\n title: cap[3]\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2], true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = escape(link.href)\n , title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = ''\n , l = text.length\n , i = 0\n , ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || {};\n}\n\nRenderer.prototype.code = function(code, lang, escaped) {\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '\\n
    ';\n }\n\n return '
    '\n    + (escaped ? code : escape(code, true))\n    + '\\n
    \\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '
    \\n' + quote + '
    \\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw) {\n return ''\n + text\n + '\\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n};\n\nRenderer.prototype.list = function(body, ordered) {\n var type = ordered ? 'ol' : 'ul';\n return '<' + type + '>\\n' + body + '\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '
  • ' + text + '
  • \\n';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '

    ' + text + '

    \\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + '\\n'\n + body\n + '\\n'\n + '
    \\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '\\n' + content + '\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' style=\"text-align:' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.em = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? '
    ' : '
    ';\n};\n\nRenderer.prototype.del = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n if (this.options.sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return '';\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0) {\n return '';\n }\n }\n var out = '';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n var out = '\"'' : '>';\n return out;\n};\n\nRenderer.prototype.text = function(text) {\n return text;\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer;\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options, renderer) {\n var parser = new Parser(options, renderer);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options, this.renderer);\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n this.token.text);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = ''\n , body = ''\n , i\n , row\n , cell\n , flags\n , j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n flags = { header: true, align: this.token.align[i] };\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n var body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n var body = ''\n , ordered = this.token.ordered;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered);\n }\n case 'list_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'loose_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'html': {\n var html = !this.token.pre && !this.options.pedantic\n ? this.inline.output(this.token.text)\n : this.token.text;\n return this.renderer.html(html);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n }\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n return html\n .replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\nfunction unescape(html) {\n\t// explicitly match decimal, hex, and named HTML entities \n return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/g, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction replace(regex, opt) {\n regex = regex.source;\n opt = opt || '';\n return function self(name, val) {\n if (!name) return new RegExp(regex, opt);\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return self;\n };\n}\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1\n , target\n , key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n\n var highlight = opt.highlight\n , tokens\n , pending\n , i = 0;\n\n try {\n tokens = Lexer.lex(src, opt)\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/chjj/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occured:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n sanitizer: null,\n mangle: true,\n smartLists: false,\n silent: false,\n highlight: null,\n langPrefix: 'lang-',\n smartypants: false,\n headerPrefix: '',\n renderer: new Renderer,\n xhtml: false\n};\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.parse = marked;\n\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n this.marked = marked;\n}\n\n}).call(function() {\n return this || (typeof window !== 'undefined' ? window : global);\n}());\n","import marked from 'marked';\n\nmarked.setOptions({\n gfm: true,\n smartypants: true\n});\n\nexport default function(dom, data) {\n let markdownElements = [].slice.call(dom.querySelectorAll('[markdown]'));\n markdownElements.forEach(el => {\n let content = el.innerHTML;\n // Set default indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n\n el.innerHTML = marked(content);\n });\n}\n","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = _self.Prism = {\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/ text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\tbreak tokenloop;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t delNum = 1;\n\n\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t to = match.index + match[0].length,\n\t\t\t\t\t\t k = i,\n\t\t\t\t\t\t p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && p < to; ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t match = match[0].slice(lookbehindLength),\n\t\t\t\t\t to = from + match.length,\n\t\t\t\t\t before = str.slice(0, from),\n\t\t\t\t\t after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (env.type == 'comment') {\n\t\tenv.attributes['spellcheck'] = 'true';\n\t}\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n \t// In worker\n\t_self.addEventListener('message', function(evt) {\n\t\tvar message = JSON.parse(evt.data),\n\t\t lang = message.language,\n\t\t code = message.code,\n\t\t immediateClose = message.immediateClose;\n\n\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\tif (immediateClose) {\n\t\t\t_self.close();\n\t\t}\n\t}, false);\n\n\treturn _self.Prism;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (document.addEventListener && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': //,\n\t'prolog': /<\\?[\\w\\W]+?\\?>/,\n\t'doctype': //i,\n\t'cdata': //i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\w\\W])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:('|\")[\\w\\W]*?(\\1)|[^\\s>]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /[=>\"']/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\w\\W]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^\\{\\}\\s][^\\{\\};]*?(?=\\s*\\{)/,\n\t'string': {\n\t\tpattern: /(\"|')(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'property': /(\\b|\\B)[\\w-]+(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|').*?\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\w\\W]*?\\*\\//,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[a-z0-9_\\.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /(\\.|\\\\)/\n\t\t}\n\t},\n\t'keyword': /\\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(0x[\\dA-Fa-f]+|0b[01]+|0o[0-7]+|\\d*\\.?\\d+([Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*(?=\\()/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*\\*?|\\/|~|\\^|%|\\.{3}/\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[.+?]|\\\\.|[^/\\\\\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\\\\\|\\\\?[^\\\\])*?`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript'\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tif(Array.prototype.forEach) { // Check to prevent error in IE8\n\t\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\t\tvar language, parent = pre;\n\t\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\t\tparent = parent.parentNode;\n\t\t\t\t}\n\n\t\t\t\tif (parent) {\n\t\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t\t}\n\n\t\t\t\tif (!language) {\n\t\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t\t}\n\n\t\t\t\tvar code = document.createElement('code');\n\t\t\t\tcode.className = 'language-' + language;\n\n\t\t\t\tpre.textContent = '';\n\n\t\t\t\tcode.textContent = 'Loading…';\n\n\t\t\t\tpre.appendChild(code);\n\n\t\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\t\txhr.open('GET', src, true);\n\n\t\t\t\txhr.onreadystatechange = function () {\n\t\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\txhr.send(null);\n\t\t\t});\n\t\t}\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\n})();\n","import Prism from \"prismjs\";\n\nexport default function(dom, data) {\n let codeElements = [].slice.call(dom.querySelectorAll(\"dt-code\"));\n codeElements.forEach(el => {\n let content = el.textContent;\n el.innerHTML = \"\";\n let language = el.getAttribute(\"language\");\n let c = dom.createElement(\"code\");\n if (el.getAttribute(\"block\") === \"\") {\n // Let's normalize the tab indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n let p = dom.createElement(\"pre\");\n p.appendChild(c);\n el.appendChild(p);\n } else {\n el.appendChild(c);\n }\n let highlighted = content;\n if (Prism.languages[language]) {\n c.setAttribute(\"class\", \"language-\" + language);\n highlighted = Prism.highlight(content, Prism.languages[language]);\n }\n c.innerHTML = highlighted;\n });\n}\n","export default function(dom, data) {\n\n var textNodes = dom.createTreeWalker(\n dom.body,\n dom.defaultView.NodeFilter.SHOW_TEXT\n );\n while (textNodes.nextNode()) {\n var n = textNodes.currentNode,\n text = n.nodeValue;\n if (text && acceptNode(n)) {\n text = quotes(text);\n text = punctuation(text);\n n.nodeValue = text;\n }\n }\n}\n\nfunction acceptNode(node) {\n var parent = node.parentElement;\n var isMath = (parent && parent.getAttribute && parent.getAttribute(\"class\")) ? parent.getAttribute(\"class\").includes(\"katex\") || parent.getAttribute(\"class\").includes(\"MathJax\") : false;\n return parent &&\n parent.nodeName !== \"SCRIPT\" &&\n parent.nodeName !== \"STYLE\" &&\n parent.nodeName !== \"CODE\" &&\n parent.nodeName !== \"PRE\" &&\n parent.nodeName !== \"SPAN\" &&\n parent.nodeName !== \"DT-HEADER\" &&\n parent.nodeName !== \"DT-BYLINE\" &&\n parent.nodeName !== \"DT-MATH\" &&\n parent.nodeName !== \"DT-CODE\" &&\n parent.nodeName !== \"DT-BIBLIOGRAPHY\" &&\n parent.nodeName !== \"DT-FOOTER\" &&\n parent.nodeType !== 8 && //comment nodes\n !isMath;\n}\n\n\n/*!\n * typeset - Typesetting for the web\n * @version v0.1.6\n * @link https://github.com/davidmerfield/Typeset.js\n * @author David Merfield\n */\n // which has a CC0 license\n // http://creativecommons.org/publicdomain/zero/1.0/\n\n\nfunction punctuation(text){\n\n // Dashes\n text = text.replace(/--/g, '\\u2014');\n text = text.replace(/ \\u2014 /g,\"\\u2009\\u2014\\u2009\"); //this has thin spaces\n\n // The following are temporary commented out because incompatibility\n // with katex\n\n // Elipses\n // text = text.replace(/\\.\\.\\./g,'…');\n\n // Nbsp for punc with spaces\n // var NBSP = \"\\u00a0\";\n // var NBSP_PUNCTUATION_START = /([«¿¡]) /g;\n // var NBSP_PUNCTUATION_END = / ([\\!\\?:;\\.,‽»])/g;\n\n // text = text.replace(NBSP_PUNCTUATION_START, '$1' + NBSP);\n // text = text.replace(NBSP_PUNCTUATION_END, NBSP + '$1');\n\n return text;\n}\n\nfunction quotes(text) {\n\n text = text\n .replace(/(\\W|^)\"([^\\s\\!\\?:;\\.,‽»])/g, '$1\\u201c$2') // beginning \"\n .replace(/(\\u201c[^\"]*)\"([^\"]*$|[^\\u201c\"]*\\u201c)/g, '$1\\u201d$2') // ending \"\n .replace(/([^0-9])\"/g,'$1\\u201d') // remaining \" at end of word\n .replace(/(\\W|^)'(\\S)/g, '$1\\u2018$2') // beginning '\n .replace(/([a-z])'([a-z])/ig, '$1\\u2019$2') // conjunction's possession\n .replace(/((\\u2018[^']*)|[a-z])'([^0-9]|$)/ig, '$1\\u2019$3') // ending '\n .replace(/(\\u2018)([0-9]{2}[^\\u2019]*)(\\u2018([^0-9]|$)|$|\\u2019[a-z])/ig, '\\u2019$2$3') // abbrev. years like '93\n .replace(/(\\B|^)\\u2018(?=([^\\u2019]*\\u2019\\b)*([^\\u2019\\u2018]*\\W[\\u2019\\u2018]\\b|[^\\u2019\\u2018]*$))/ig, '$1\\u2019') // backwards apostrophe\n .replace(/'''/g, '\\u2034') // triple prime\n .replace(/(\"|'')/g, '\\u2033') // double prime\n .replace(/'/g, '\\u2032');\n\n // Allow escaped quotes\n text = text.replace(/\\\\“/, '\\\"');\n text = text.replace(/\\\\”/, '\\\"');\n text = text.replace(/\\\\’/, '\\'');\n text = text.replace(/\\\\‘/, '\\'');\n\n return text;\n}\n\nfunction ligatures(text){\n\n // text = text.replace(/fi/g, 'fi');\n // text = text.replace(/fl/g, 'fl');\n\n return text;\n};\n","import code from './hover-box.txt';\n\nexport default function(dom) {\n let s = dom.createElement(\"script\");\n s.textContent = code;\n dom.querySelector(\"body\").appendChild(s);\n}\n","//import xml from \"xml\";\n\nexport default function(data) {\n\n\n var date = data.publishedDate;\n\n var batch_timestamp = Math.floor(Date.now() / 1000);\n var batch_id = data.authors.length ? data.authors[0].lastName.toLowerCase().slice(0,20) : \"Anonymous\";\n batch_id += \"_\" + date.getFullYear();\n batch_id += \"_\" + data.title.split(\" \")[0].toLowerCase().slice(0,20) + \"_\" + batch_timestamp;\n // generate XML\n var crf_data =\n {doi_batch : [\n\n { _attr: {\n version: \"4.3.7\",\n xmlns: \"http://www.crossref.org/schema/4.3.7\",\n \"xmlns:xsi\": \"http://www.w3.org/2001/XMLSchema-instance\",\n \"xsi:schemaLocation\": \"http://www.crossref.org/schema/4.3.7 http://www.crossref.org/schemas/crossref4.3.7.xsd\",\n }},\n\n { head: [\n {doi_batch_id: batch_id},\n {timestamp: batch_timestamp},\n {depositor: [\n {depositor_name: data.journal.publisherName},\n {email_address: data.journal.publisherEmail},\n ]},\n {registrant: data.journal.publisherName},\n ]},\n\n {body: [\n {journal: [\n\n {journal_metadata: [\n {full_title: data.journal.full_title || data.journal.title},\n {abbrev_title: data.journal.abbrev_title || data.journal.title || data.journal.full_title},\n {issn: data.journal.issn},\n {doi_data: [\n {doi: data.journal.doi},\n {resource: data.journal.url},\n ]},\n ]},\n\n {journal_issue: [\n {publication_date: [\n {month: date.getMonth()+1},\n {year: date.getFullYear()},\n ]},\n {journal_volume: [\n {volume: data.volume},\n ]},\n {issue: data.issue},\n ]},\n\n {journal_article: [\n {titles: [\n {title: data.title},\n ]},\n { contributors:\n data.authors.map((author, ind) => (\n {person_name: [\n { _attr: {\n contributor_role: \"author\",\n sequence: (ind == 0)? \"first\" : \"additional\"\n }},\n {given_name: author.firstName},\n {surname: author.lastName},\n {affiliation: author.affiliation}\n // TODO: ORCID?\n ]}\n ))\n },\n {publication_date: [\n {month: date.getMonth()+1},\n {day: date.getDate()},\n {year: date.getFullYear()}\n ]},\n { publisher_item: [\n {item_number: data.doi}\n ]},\n {doi_data: [\n {doi: data.doi},\n //{timestamp: \"\"},\n {resource: data.url},\n ]},\n {citation_list:\n data.citations.map(key =>\n citation_xml(key, data.bibliography[key]))\n }\n\n ]},\n\n ]},\n ]},\n ]};\n\n return xml(crf_data);\n}\n\nfunction citation_xml(key, ent){\n if (ent == undefined) return {};\n var info = [];\n info.push({_attr: {key: key}});\n if (\"title\" in ent)\n info.push({article_title: ent.title});\n if (\"author\" in ent)\n info.push({author: ent.author.split(\" and \")[0].split(\",\")[0].trim()});\n if (\"journal\" in ent)\n info.push({journal_title: ent.journal});\n if (\"booktitle\" in ent)\n info.push({volume_title: ent.booktitle});\n if (\"volume\" in ent)\n info.push({volume: ent.volume});\n if (\"issue\" in ent)\n info.push({issue: ent.issue});\n if (\"doi\" in ent)\n info.push({doi: ent.doi});\n return {citation: info}\n}\n\nfunction xml(obj) {\n //console.log(typeof(obj), obj)\n if (typeof obj === 'string') return obj;\n if (typeof obj === 'number') return \"\"+obj;\n let keys = Object.keys(obj);\n if (keys.length != 1) console.error(\"can't interpret \", obj, \"as xml\");\n let name = keys[0];\n var full_content = obj[name];\n var attr = {};\n if (Array.isArray(full_content)){\n var content = [];\n for (var i in full_content) {\n var obj = full_content[i];\n var obj_name = Object.keys(obj)[0];\n if (\"_attr\" == obj_name) {\n attr = obj[\"_attr\"];\n } else {\n //console.log(Object.keys(obj)[0])\n content.push(obj);\n }\n }\n } else {\n content = full_content;\n }\n if (content == undefined){\n content = \"undefined\"\n }\n\n let attr_string = \"\";\n for (var k in attr) {\n attr_string += ` ${k}=\\\"${attr[k]}\\\"`\n }\n\n //console.log(typeof content, Array.isArray(content), content instanceof String, content)\n if (Array.isArray(content)){\n content = content.map(xml);\n content = content.join(\"\\n\").split(\"\\n\");\n content = content.map(s => \" \" + s).join(\"\\n\")\n var result = `<${name}${attr_string}>\\n${content}\\n`;\n } else {\n content = xml(content);\n var result = `<${name}${attr_string}>${content}`;\n }\n return result;\n}\n","import logo from \"./distill-logo.svg\";\n\nconst html = `\n\n\n
    \n`\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-header\");\n if(el) {\n el.innerHTML = html;\n } else {\n let header = dom.createElement(\"dt-header\");\n header.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.insertBefore(header, b.firstChild);\n }\n}\n","import logo from \"./distill-logo.svg\";\n\nlet html = `\n\n\n
    \n
    \n \n ${logo}\n Distill\n \n is dedicated to clear explanations of machine learning\n
    \n
    \n About\n Submit\n Prize\n RSS\n Twitter\n
    \n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-footer\");\n if(el) {\n el.innerHTML = html;\n } else {\n let footer = dom.createElement(\"dt-footer\");\n footer.innerHTML = html;\n let b = dom.querySelector(\"body\");\n b.appendChild(footer);\n }\n}\n","import html from \"./components/html\";\nimport styles from \"./components/styles\";\nimport frontMatter from \"./components/front-matter\";\nimport bibliography from \"./components/bibliography\";\nimport expandData from \"./components/data\";\nimport meta from \"./components/meta\";\nimport banner from \"./components/banner\";\nimport byline from \"./components/byline\";\nimport appendix from \"./components/appendix\";\nimport appendixDistill from \"./components/appendix-distill\";\nimport citation from \"./components/citation\";\nimport footnote from \"./components/footnote\";\nimport DTMath from \"./components/dt-math\";\nimport markdown from \"./components/markdown\";\nimport code from \"./components/code\";\nimport typeset from \"./components/typeset\";\nimport hoverBox from \"./components/hover-box-include\";\nimport generateCrossref from \"./components/generate-crossref\";\nimport header from \"./components/header\";\nimport footer from \"./components/footer\";\n\nfunction renderImmediately(dom) {\n html(dom);\n styles(dom);\n}\n\nfunction renderOnLoad(dom, data) {\n frontMatter(dom, data);\n bibliography(dom, data);\n expandData(dom, data);\n meta(dom, data);\n byline(dom, data);\n appendix(dom, data);\n markdown(dom, data);\n DTMath(dom, data);\n code(dom, data);\n citation(dom, data);\n footnote(dom, data);\n typeset(dom, data);\n hoverBox(dom, data);\n}\n\n// If we are in a browser, render automatically...\nif(window && window.document) {\n let data = {};\n renderImmediately(window.document);\n window.document.addEventListener(\"DOMContentLoaded\", (event) => {\n renderOnLoad(window.document, data);\n // Add a banner if we're not on localhost.\n if (window.location.hostname !== \"localhost\" && window.location.origin !== \"file://\") {\n banner(window.document, data);\n }\n generateCrossref(data);\n // console.log(data);\n });\n}\n\n// If we are in node...\nfunction render(dom, data) {\n renderImmediately(dom);\n renderOnLoad(dom, data);\n // Remove script tag so it doesn't run again in the client\n let s = dom.querySelector('script[src*=\"distill.pub/template\"]');\n if (s) { s.parentElement.removeChild(s); };\n}\n\n// Distill specific rendering\nfunction distillify(dom, data) {\n header(dom, data);\n appendixDistill(dom, data);\n footer(dom, data);\n}\n\nexport {render as render};\nexport {distillify as distillify};\nexport {generateCrossref as generateCrossref};\n"],"names":["let","meta","YAMLException","common","require$$0","Mark","this","Type","require$$1","require$$2","type","arguments","Schema","require$$3","require$$4","require$$5","require","_hasOwnProperty","_toString","require$$6","require$$7","_require","DEFAULT_SAFE_SCHEMA","DEFAULT_FULL_SCHEMA","loadAll","load","safeLoadAll","safeLoad","State","dump","safeDump","require$$8","require$$9","ymlParse","interval","day","timeDay","timeYear","timeSunday","timeMonday","locale","escape","const","html","define","ParseError","Settings","cjkRegex","sigmas","metrics","i","Style","styles","unicodeRegexes","utils","domTree","fontMetrics","makeSpan","buildCommon","symbols","buildHTML","fontMap","groupTypes","buildExpression","buildGroup","buildMathML","Options","buildTree","ParseNode","matchAt","Lexer","MacroExpander","Parser","parseTree","render","global","Prism","code"],"mappings":"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AAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7B,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7B,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7B,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7B,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7B,MAAM,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7B,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7B,MAAM,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7B,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3B,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3B,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,E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Cf,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3B,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3B,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3B,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3B,OAAO,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;KAC9B;IACD,WAAW,EAAE;QACT,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3B,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACrB,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACjC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACrC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACrC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACtC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACjC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,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AAE,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACpC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CA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AE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;QAC/B,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;QACrC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAC/B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;KAC7B;IACD,cAAc,EAAE;QACZ,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAClB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3B,IAAI,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACrB,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5B,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACjC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACrC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACrC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5B,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACnB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,C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,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACrC,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACrC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QACpC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAC9B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACrC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACrC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACrC,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACrC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACrC,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACrC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACrC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACrC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACrC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;KAC7B;IACD,aAAa,EAAE;QACX,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACpC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACpC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACpC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACpC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACpC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACpC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACpC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACpC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACpC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACpC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACpC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACpC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACpC,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;QACpC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACpC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACpC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACpC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACpC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACpC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACpC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;QAC9B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;QAC/B,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QAC3C,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QAC3C,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACrC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACrC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;QAC/B,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;QACrC,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QAC3C,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACrC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACrC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACrC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;QAC/B,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QAC3C,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACrC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACrC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACrC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACrC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACrC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACrC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACrC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC;QAClC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OA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O,CAAC;QACpC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACpC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACpC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACpC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACpC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACpC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACpC,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;QACpC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACpC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACpC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACpC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACpC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACpC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACpC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;QAC9B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;QAC/B,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QAC3C,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QAC3C,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACrC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACrC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;QAC/B,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;QACrC,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QAC3C,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACrC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACrC,KAAK,EAA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AC,CAAC;QACxB,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5B,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACjC,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACrC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QACrC,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAChC,MAA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QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACxB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QACzB,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,MAAM,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;QAC1B,M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,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;;;IAGR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;IACR,GAAG,EAAE,GAAG;CACX,CAAC;;;;;;;;;AASF,IAAI,mBAAmB,GAAG,SAAS,SAAS,EAAE,KAAK,EAAE;IACjD,IAAI,EAAE,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,iBAAiB,EAAE;QACnC,EAAE,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KACtD,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;QACpC,EAAE,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KAC1B;IACD,IAAI,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;IACnC,IAAI,OAAO,EAAE;QACT,OAAO;YACH,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;YACjB,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;YAClB,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;YAClB,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;YAChB,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;SACpB,CAAC;KACL;CACJ,CAAC;;AAEF,iBAAc,GAAG;IACb,OAAO,EAAEwC,SAAO;IAChB,MAAM,EAAED,QAAM;IACd,mBAAmB,EAAE,mBAAmB;CAC3C,CAAC;;ACrRF;;;;;;;;AAQA,IAAI,MAAM,GAAG5C,aAA2B,CAAC,MAAM,CAAC;;AAEhD,IAAI,OAAO,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAC3B,IAAI8C,GAAC,CAAC;AACN,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE;IACpB,IAAI,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;QAC5B,KAAKA,GAAC,GAAG,CAAC,EAAEA,GAAC,GAAG,CAAC,EAAEA,GAAC,EAAE,EAAE;YACpB,OAAO,CAACA,GAAC,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAACA,GAAC,CAAC,CAAC;SACpC;KACJ;CACJ;AACD,KAAKA,GAAC,GAAG,CAAC,EAAEA,GAAC,GAAG,CAAC,EAAEA,GAAC,EAAE,EAAE;IACpB,OAAO,CAACA,GAAC,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAACA,GAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAACA,GAAC,CAAC,CAAC;CAC3D;;;;;;;;AAQD,SAASC,OAAK,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE;IAC1C,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACb,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACvB,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC;IACjC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;CACnD;;;;;AAKDA,OAAK,CAAC,SAAS,CAAC,GAAG,GAAG,WAAW;IAC7B,OAAOC,QAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;CAC/B,CAAC;;;;;AAKFD,OAAK,CAAC,SAAS,CAAC,GAAG,GAAG,WAAW;IAC7B,OAAOC,QAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;CAC/B,CAAC;;;;;;AAMFD,OAAK,CAAC,SAAS,CAAC,OAAO,GAAG,WAAW;IACjC,OAAOC,QAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;CACnC,CAAC;;;;;;AAMFD,OAAK,CAAC,SAAS,CAAC,OAAO,GAAG,WAAW;IACjC,OAAOC,QAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;CACnC,CAAC;;;;;;AAMFD,OAAK,CAAC,SAAS,CAAC,KAAK,GAAG,WAAW;IAC/B,OAAOC,QAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;CACjC,CAAC;;;;;AAKFD,OAAK,CAAC,SAAS,CAAC,GAAG,GAAG,WAAW;IAC7B,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,GAAG,UAAU,GAAG,YAAY,CAAC,CAAC;CAC5E,CAAC;;;;;AAKFA,OAAK,CAAC,SAAS,CAAC,KAAK,GAAG,WAAW;IAC/B,OAAO,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CAChC,CAAC;;;;;AAKFA,OAAK,CAAC,SAAS,CAAC,OAAO,GAAG,WAAW;IACjC,OAAO,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;CACzB,CAAC;;;AAGF,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,EAAE,GAAG,CAAC,CAAC;AACX,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,EAAE,GAAG,CAAC,CAAC;AACX,IAAI,CAAC,GAAG,CAAC,CAAC;AACV,IAAI,EAAE,GAAG,CAAC,CAAC;AACX,IAAI,EAAE,GAAG,CAAC,CAAC;AACX,IAAI,GAAG,GAAG,CAAC,CAAC;;;AAGZ,IAAI,SAAS,GAAG;IACZ,wBAAwB;IACxB,WAAW;IACX,aAAa;IACb,mBAAmB;CACtB,CAAC;;;AAGF,IAAI,UAAU,GAAG;IACb,iBAAiB;IACjB,iBAAiB;IACjB,mBAAmB;IACnB,yBAAyB;CAC5B,CAAC;;;AAGF,IAAIC,QAAM,GAAG;IACT,IAAID,OAAK,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC;IAC3B,IAAIA,OAAK,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC;IAC3B,IAAIA,OAAK,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC;IAC3B,IAAIA,OAAK,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC;IAC3B,IAAIA,OAAK,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC;IAC3B,IAAIA,OAAK,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC;IAC3B,IAAIA,OAAK,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC;IAC5B,IAAIA,OAAK,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC;CAC/B,CAAC;;;AAGF,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;AAC3C,IAAI,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC/C,IAAI,OAAO,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;AAC/C,IAAI,OAAO,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACnD,IAAI,KAAK,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;;;;AAI/C,WAAc,GAAG;IACb,OAAO,EAAEC,QAAM,CAAC,CAAC,CAAC;IAClB,IAAI,EAAEA,QAAM,CAAC,CAAC,CAAC;IACf,MAAM,EAAEA,QAAM,CAAC,CAAC,CAAC;IACjB,YAAY,EAAEA,QAAM,CAAC,EAAE,CAAC;CAC3B,CAAC;;ACpJF;;;;;;;;;AASA,IAAI,aAAa,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC;AAC5C,IAAI,OAAO,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE;IAC/B,IAAI,IAAI,IAAI,IAAI,EAAE;QACd,OAAO,CAAC,CAAC,CAAC;KACb;IACD,IAAI,aAAa,IAAI,IAAI,CAAC,OAAO,KAAK,aAAa,EAAE;QACjD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KAC7B;IACD,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;IACpB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QACf,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;YAClB,OAAO,CAAC,CAAC;SACZ;KACJ;IACD,OAAO,CAAC,CAAC,CAAC;CACb,CAAC;;;;;AAKF,IAAI,QAAQ,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE;IAChC,OAAO,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;CACrC,CAAC;;;;;AAKF,IAAI,KAAK,GAAG,SAAS,OAAO,EAAE,kBAAkB,EAAE;IAC9C,OAAO,OAAO,KAAK,SAAS,GAAG,kBAAkB,GAAG,OAAO,CAAC;CAC/D,CAAC;;;;AAIF,IAAI,SAAS,GAAG,UAAU,CAAC;AAC3B,IAAI,SAAS,GAAG,SAAS,GAAG,EAAE;IAC1B,OAAO,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;CACtD,CAAC;;AAEF,IAAI,aAAa,GAAG;IAChB,GAAG,EAAE,OAAO;IACZ,GAAG,EAAE,MAAM;IACX,GAAG,EAAE,MAAM;IACX,IAAI,EAAE,QAAQ;IACd,GAAG,EAAE,QAAQ;CAChB,CAAC;;AAEF,IAAI,YAAY,GAAG,UAAU,CAAC;;AAE9B,SAAS,OAAO,CAAC,KAAK,EAAE;IACpB,OAAO,aAAa,CAAC,KAAK,CAAC,CAAC;CAC/B;;;;;;;;AAQD,SAASX,QAAM,CAAC,IAAI,EAAE;IAClB,OAAO,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;CACrD;;;;;;AAMD,IAAI,cAAc,CAAC;AACnB,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;IACjC,IAAI,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC9C,IAAI,aAAa,IAAI,QAAQ,EAAE;QAC3B,cAAc,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE;YAClC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;SAC3B,CAAC;KACL,MAAM;QACH,cAAc,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE;YAClC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SACzB,CAAC;KACL;CACJ;;;;;AAKD,SAAS,SAAS,CAAC,IAAI,EAAE;IACrB,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;CAC5B;;AAED,WAAc,GAAG;IACb,QAAQ,EAAE,QAAQ;IAClB,KAAK,EAAE,KAAK;IACZ,MAAM,EAAEA,QAAM;IACd,SAAS,EAAE,SAAS;IACpB,OAAO,EAAE,OAAO;IAChB,cAAc,EAAE,cAAc;IAC9B,SAAS,EAAE,SAAS;CACvB,CAAC;;ACzGF;;;;;;;;;AASA,IAAIY,gBAAc,GAAGjD,cAA2B,CAAC;AACjD,IAAIkD,OAAK,GAAG9C,OAAkB,CAAC;;;;;;AAM/B,IAAI,WAAW,GAAG,SAAS,OAAO,EAAE;IAChC,OAAO,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAC1B,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;QAC1C,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACb,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACxB;KACJ;;IAED,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CAC5B,CAAC;;;;;;;AAOF,SAAS,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE;IACtC,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAChB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACf,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;IACrB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IAChB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;IACrB,IAAI,OAAO,EAAE;QACT,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;YACzB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SAC/B;QACD,IAAI,OAAO,CAAC,QAAQ,EAAE,EAAE;YACpB,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;SACzC;KACJ;CACJ;;;;;;;AAOD,IAAI,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,SAAS,EAAE,KAAK,EAAE;IACrD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;CACtC,CAAC;;AAEF,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,OAAO,EAAE;IAC1C,OAAO,KAAK,CAAC;CAChB,CAAC;;;;;AAKF,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,WAAW;;;IAC/B,IAAI,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;;;IAG1C,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;;IAG3C,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE;QAC1B,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAACF,MAAI,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;YACzD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAGA,MAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACzC;KACJ;;;IAGD,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;QAC9B,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAACA,MAAI,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE;YAC7D,IAAI,CAAC,YAAY,CAAC,IAAI,EAAEA,MAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;SAClD;KACJ;;;IAGD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC3C,IAAI,CAAC,WAAW,CAACA,MAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;KAC/C;;IAED,OAAO,IAAI,CAAC;CACf,CAAC;;;;;AAKF,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,WAAW;;;IACjC,IAAI,MAAM,GAAG,OAAO,CAAC;;;IAGrB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;QACrB,MAAM,IAAI,WAAW,CAAC;QACtB,MAAM,IAAIgD,OAAK,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAClD,MAAM,IAAI,IAAI,CAAC;KAClB;;IAED,IAAI,MAAM,GAAG,EAAE,CAAC;;;IAGhB,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE;QAC1B,IAAIhD,MAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;YAClC,MAAM,IAAIgD,OAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,GAAGhD,MAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;SACpE;KACJ;;IAED,IAAI,MAAM,EAAE;QACR,MAAM,IAAI,WAAW,GAAGgD,OAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;KACvD;;;IAGD,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;QAC9B,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAChD,MAAI,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE;YAC7D,MAAM,IAAI,GAAG,GAAG,IAAI,GAAG,KAAK,CAAC;YAC7B,MAAM,IAAIgD,OAAK,CAAC,MAAM,CAAChD,MAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9C,MAAM,IAAI,IAAI,CAAC;SAClB;KACJ;;IAED,MAAM,IAAI,GAAG,CAAC;;;IAGd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC3C,MAAM,IAAIA,MAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;KACzC;;IAED,MAAM,IAAI,SAAS,CAAC;;IAEpB,OAAO,MAAM,CAAC;CACjB,CAAC;;;;;;;;AAQF,SAAS,gBAAgB,CAAC,QAAQ,EAAE;IAChC,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAChB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;IACf,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;CACxB;;;;;AAKD,gBAAgB,CAAC,SAAS,CAAC,MAAM,GAAG,WAAW;;;;IAE3C,IAAI,IAAI,GAAG,QAAQ,CAAC,sBAAsB,EAAE,CAAC;;;IAG7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC3C,IAAI,CAAC,WAAW,CAACA,MAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;KAC/C;;IAED,OAAO,IAAI,CAAC;CACf,CAAC;;;;;AAKF,gBAAgB,CAAC,SAAS,CAAC,QAAQ,GAAG,WAAW;;;IAC7C,IAAI,MAAM,GAAG,EAAE,CAAC;;;IAGhB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC3C,MAAM,IAAIA,MAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;KACzC;;IAED,OAAO,MAAM,CAAC;CACjB,CAAC;;AAEF,IAAI,aAAa,GAAG;IAChB,GAAG,EAAE,cAAc;IACnB,GAAG,EAAE,cAAc;IACnB,GAAG,EAAE,cAAc;;IAEnB,GAAG,EAAE,cAAc;CACtB,CAAC;;;;;;;AAOF,SAAS,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE;IACpE,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC;IACzB,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,CAAC;IAC1B,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,CAAC,CAAC;IACxB,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,CAAC,CAAC;IAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC;IACtB,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC;IACzB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;;;;;;IAMrB,IAAI+C,gBAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;;;;QAIrC,IAAIA,gBAAc,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACxC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;SACxC,MAAM;YACH,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;SACrC;KACJ;;IAED,IAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;QAC3B,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KAC1C;CACJ;;AAED,UAAU,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,OAAO,EAAE;;;IAChD,IAAI,CAAC,OAAO;WACL,EAAE,OAAO,YAAY,UAAU,CAAC;WAChC,IAAI,CAAC,MAAM,GAAG,CAAC;WACf,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC;WAC1D,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI;WAC1B,IAAI,CAAC,WAAW,KAAK,OAAO,CAAC,WAAW,EAAE;QAC7C,OAAO,KAAK,CAAC;KAChB;IACD,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE;QAC1B,IAAI/C,MAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;eAC7BA,MAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YAC/C,OAAO,KAAK,CAAC;SAChB;KACJ;IACD,KAAK,KAAK,IAAI,OAAO,CAAC,KAAK,EAAE;QACzB,IAAI,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC;eAChCA,MAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YAC/C,OAAO,KAAK,CAAC;SAChB;KACJ;IACD,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC;IAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACjD,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC7B,OAAO,IAAI,CAAC;CACf,CAAC;;;;;;AAMF,UAAU,CAAC,SAAS,CAAC,MAAM,GAAG,WAAW;;;IACrC,IAAI,IAAI,GAAG,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/C,IAAI,IAAI,GAAG,IAAI,CAAC;;IAEhB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;QACjB,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;KAC/C;;IAED,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;QACzB,IAAI,GAAG,IAAI,IAAI,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC9C;;IAED,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE;QAC1B,IAAIA,MAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;YAClC,IAAI,GAAG,IAAI,IAAI,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC9C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAGA,MAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACzC;KACJ;;IAED,IAAI,IAAI,EAAE;QACN,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACvB,OAAO,IAAI,CAAC;KACf,MAAM;QACH,OAAO,IAAI,CAAC;KACf;CACJ,CAAC;;;;;AAKF,UAAU,CAAC,SAAS,CAAC,QAAQ,GAAG,WAAW;;;;;IAGvC,IAAI,SAAS,GAAG,KAAK,CAAC;;IAEtB,IAAI,MAAM,GAAG,OAAO,CAAC;;IAErB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;QACrB,SAAS,GAAG,IAAI,CAAC;QACjB,MAAM,IAAI,WAAW,CAAC;QACtB,MAAM,IAAIgD,OAAK,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAClD,MAAM,IAAI,IAAI,CAAC;KAClB;;IAED,IAAI,MAAM,GAAG,EAAE,CAAC;;IAEhB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;QACjB,MAAM,IAAI,eAAe,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACnD;IACD,KAAK,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE;QAC1B,IAAIhD,MAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;YAClC,MAAM,IAAIgD,OAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,GAAGhD,MAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC;SACpE;KACJ;;IAED,IAAI,MAAM,EAAE;QACR,SAAS,GAAG,IAAI,CAAC;QACjB,MAAM,IAAI,WAAW,GAAGgD,OAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;KACvD;;IAED,IAAI,OAAO,GAAGA,OAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,SAAS,EAAE;QACX,MAAM,IAAI,GAAG,CAAC;QACd,MAAM,IAAI,OAAO,CAAC;QAClB,MAAM,IAAI,SAAS,CAAC;QACpB,OAAO,MAAM,CAAC;KACjB,MAAM;QACH,OAAO,OAAO,CAAC;KAClB;CACJ,CAAC;;AAEF,aAAc,GAAG;IACb,IAAI,EAAE,IAAI;IACV,gBAAgB,EAAE,gBAAgB;IAClC,UAAU,EAAE,UAAU;CACzB,CAAC;;;;;;;;;;;;;;;;;;;;;AC7TF,cAAc,GAAG;IACb,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,EAAE;CACX,CAAC;;AAEF,SAAS,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE;IACpD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG;QACzB,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,OAAO;KACnB,CAAC;CACL;;;;;;AAMD,IAAI,IAAI,GAAG,MAAM,CAAC;AAClB,IAAI,IAAI,GAAG,MAAM,CAAC;;;AAGlB,IAAI,IAAI,GAAG,MAAM,CAAC;AAClB,IAAI,GAAG,GAAG,KAAK,CAAC;;;AAGhB,IAAI,MAAM,GAAG,QAAQ,CAAC;AACtB,IAAI,GAAG,GAAG,KAAK,CAAC;AAChB,IAAI,KAAK,GAAG,OAAO,CAAC;AACpB,IAAI,KAAK,GAAG,OAAO,CAAC;AACpB,IAAI,OAAO,GAAG,SAAS,CAAC;AACxB,IAAI,EAAE,GAAG,IAAI,CAAC;AACd,IAAI,IAAI,GAAG,MAAM,CAAC;AAClB,IAAI,KAAK,GAAG,OAAO,CAAC;AACpB,IAAI,GAAG,GAAG,KAAK,CAAC;AAChB,IAAI,OAAO,GAAG,SAAS,CAAC;AACxB,IAAI,OAAO,GAAG,SAAS,CAAC;;;;;AAKxB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAClD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAClD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACjD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAClD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACjD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAChD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAChD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AACxD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AACxD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAChD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;;;AAGlD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;;;AAGrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACxD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACxD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACzD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AAC1D,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;AAC7D,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC3D,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;;;AAG3D,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;;;AAGtD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AAC1D,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AACzD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;;;AAGrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAChD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACjD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAChD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;;;AAGnD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AAC3D,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AAC3D,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AAC5D,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AACxD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AAC5D,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AAC5D,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,sBAAsB,CAAC,CAAC;AAChE,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AAC5D,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,sBAAsB,CAAC,CAAC;AAChE,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AACxD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AAC3D,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AAC5D,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AAC3D,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AAC5D,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;AAC7D,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAC;AAC9D,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,qBAAqB,CAAC,CAAC;;;AAG/D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAClD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAClD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACjD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAClD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAClD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAClD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;AACxD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACjD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACjD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AAC1D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;AAC5D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;AACzD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AAC1D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACjD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAClD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACjD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAClD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAClD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAClD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;AACxD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAClD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AAC3D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AAC3D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAC;AAC7D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;AACzD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AAC1D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAClD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;;;AAGlD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;AACxD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;AACxD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;AAC5D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;;;AAG5D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;AACxD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;AAC7D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACxD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACzD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACzD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AAC9D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACxD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC1D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AAC9D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,qBAAqB,CAAC,CAAC;AAClE,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;AAC5D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;AAC7D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACxD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AAC/D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AAC3D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACzD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACxD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;;;AAG1D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;;;AAGtD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACxD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;;;AAGzD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;;;AAGvD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACjD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;AACxD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAChD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;AACzD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AAC1D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;AACxD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;AACxD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;AAC5D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AAC3D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAClD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACjD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAChD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;AACxD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;AACxD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;AACxD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAC;AAC7D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;AAC5D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAClD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AAC1D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,qBAAqB,CAAC,CAAC;AAC9D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;AACxD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,sBAAsB,CAAC,CAAC;AAC/D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAClD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAChD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAChD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAClD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAClD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;;;AAGlD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AAC1D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAChD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAChD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AAC3D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AAC1D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AAC3D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;AAC5D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;AACxD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;;;AAGrD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AAC3D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AAC1D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AAC3D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;AAC5D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAC;AAC7D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AAC1D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AAC1D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,qBAAqB,CAAC,CAAC;AAC9D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AAC3D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;AAC5D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAChD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AAC1D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;AAC5D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,uBAAuB,CAAC,CAAC;AAChE,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAC;AAC7D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;AAC5D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,qBAAqB,CAAC,CAAC;AAC9D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AAC3D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AAC3D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;AAC5D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAC;AAC7D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAChD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AAC3D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC;AAC3D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAC;AAC7D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;AAC5D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;AACxD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;;AAExD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;AACjD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAC9C,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAC9C,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAC9C,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAC9C,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAC9C,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAC9C,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AAC1D,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACxD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACzD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AAC1D,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AAC3D,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACzD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACxD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACzD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AAC5D,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AAC1D,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACxD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AAC1D,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACxD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;AAC7C,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACxC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;AAC7C,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAClD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAClD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACjD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAChD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACjD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACjD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAClD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACjD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACjD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACzC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACzC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC1C,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC1C,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC1C,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC1C,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACxC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACxC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACxC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACxC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAClD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAChD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACjD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAClD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AAC3C,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAChD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAChD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACjD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;AAC3C,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAChD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACjD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;AACxD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAChD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACjD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACjD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAC/C,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;AACjD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAC/C,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAC/C,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAC/C,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AAClD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC1C,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAC1C,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;AAChD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAClD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACzD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;AACxD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AAC3D,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;AAC7D,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAClD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;AAC1D,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AAC3D,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAC3C,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAC9C,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAC5C,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAC9C,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AAChD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACjD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AAChD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AACjD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;AACjD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;AACzD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;AACzD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAChD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAClD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACjD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAClD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACjD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAChD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACjD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;AAC5D,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;AAC5D,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACrD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACtD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AACpD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AACvD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;;AAEvD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AAClD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;AACjD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;AACjD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AAClD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AAClD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACxD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACxD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;AACxD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AACxD,YAAY,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;;AAExD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;AACnD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;AACjD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;;;AAGjD,IAAI,CAAC,CAAC;AACN,IAAI,EAAE,CAAC;;;AAGP,IAAI,eAAe,GAAG,iBAAiB,CAAC;AACxC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACzC,EAAE,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC/B,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CAC7C;;;AAGD,IAAI,WAAW,GAAG,8BAA8B,CAAC;AACjD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACrC,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3B,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CAC7C;;;AAGD,IAAI,OAAO,GAAG,sDAAsD,CAAC;AACrE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IACjC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACvB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1C,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CAC7C;;;AAGD,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC,EAAE,EAAE;IAC/B,EAAE,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC5B,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CAC7C;;AAED,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC,EAAE,EAAE;IAC/B,EAAE,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC5B,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CAC7C;;AAED,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC,EAAE,EAAE;IAC/B,EAAE,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC5B,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CAC7C;;;AAGD,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC,EAAE,EAAE;IAC/B,EAAE,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC5B,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;CAC7C;;;AAGD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;AACjD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;AACjD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;AACjD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;AACjD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;AACjD,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;;;AC/pBjD;;;;;;AAMA,IAAIC,SAAO,GAAGnD,SAAoB,CAAC;AACnC,IAAIoD,aAAW,GAAGhD,aAAwB,CAAC;AAC3C,IAAI,OAAO,GAAGC,SAAoB,CAAC;AACnC,IAAI6C,OAAK,GAAGzC,OAAkB,CAAC;;AAE/B,IAAI,aAAa,GAAG;IAChB,SAAS;IACT,SAAS;IACT,SAAS;IACT,UAAU;IACV,MAAM;IACN,MAAM;IACN,SAAS;IACT,WAAW;IACX,OAAO;IACP,OAAO;IACP,SAAS;CACZ,CAAC;;;AAGF,IAAI,aAAa,GAAG;IAChB,QAAQ;IACR,QAAQ;IACR,QAAQ;CACX,CAAC;;;;;;;;;;;AAWF,IAAI,UAAU,GAAG,SAAS,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE;;IAEjE,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE;QACtD,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;KACxC;;IAED,IAAI,OAAO,GAAG2C,aAAW,CAAC,mBAAmB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;;IAEjE,IAAI,UAAU,CAAC;IACf,IAAI,OAAO,EAAE;QACT,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC5B,IAAI,IAAI,KAAK,MAAM,EAAE;YACjB,MAAM,GAAG,CAAC,CAAC;SACd;QACD,UAAU,GAAG,IAAID,SAAO,CAAC,UAAU;YAC/B,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI;YAC1D,OAAO,CAAC,CAAC;KAChB,MAAM;;QAEH,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,IAAI;YAC1C,4BAA4B,GAAG,KAAK,GAAG,cAAc;gBACjD,UAAU,GAAG,GAAG,CAAC,CAAC;QAC1B,UAAU,GAAG,IAAIA,SAAO,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;KACnE;;IAED,IAAI,OAAO,EAAE;QACT,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;YACzB,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACrC;QACD,IAAI,OAAO,CAAC,QAAQ,EAAE,EAAE;YACpB,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;SAC/C;KACJ;;IAED,OAAO,UAAU,CAAC;CACrB,CAAC;;;;;;AAMF,IAAI,OAAO,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE;;;;;;;IAOlD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE;QACxD,OAAO,UAAU,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;KACpE,MAAM;QACH,OAAO,UAAU;YACb,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;KACvE;CACJ,CAAC;;;;;AAKF,IAAI,WAAW,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE;IAC5D,IAAI,IAAI,KAAK,SAAS,EAAE;QACpB,OAAO,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;KAChD,MAAM,IAAI,IAAI,KAAK,SAAS,EAAE;QAC3B,OAAO,UAAU;YACb,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KACzE,MAAM;QACH,MAAM,IAAI,KAAK,CAAC,mBAAmB,GAAG,IAAI,GAAG,iBAAiB,CAAC,CAAC;KACnE;CACJ,CAAC;;;;;AAKF,IAAI,MAAM,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE;IACjD,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;;;YAGzBD,OAAK,CAAC,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC;YACpCA,OAAK,CAAC,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE;QAC1C,OAAO,UAAU;YACb,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KACxE,MAAM;QACH,OAAO,UAAU;YACb,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KACxE;CACJ,CAAC;;;;;AAKF,IAAI,OAAO,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE;IACzC,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACtB,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IACxB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE;QACtD,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;KACxC;;IAED,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC;;IAEvB,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IACxB,IAAI,IAAI,EAAE;QACN,IAAI,IAAI,KAAK,QAAQ,IAAIA,OAAK,CAAC,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE;YAC3D,OAAO,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;SAChD,MAAM;YACH,IAAI,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;YACtC,IAAIE,aAAW,CAAC,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE;gBAClD,OAAO,UAAU;oBACb,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aAC/D,MAAM;gBACH,OAAO,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;aAC3D;SACJ;KACJ,MAAM;QACH,OAAO,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;KAC3D;CACJ,CAAC;;;;;;AAMF,IAAI,uBAAuB,GAAG,SAAS,IAAI,EAAE;IACzC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,WAAW,GAAG,CAAC,CAAC;;IAEpB,IAAI,IAAI,CAAC,QAAQ,EAAE;QACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC3C,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,MAAM,EAAE;gBAClC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;aACpC;YACD,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,EAAE;gBAChC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;aAClC;YACD,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,WAAW,EAAE;gBAC5C,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;aAC9C;SACJ;KACJ;;IAED,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACnB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;CAClC,CAAC;;;;;;;;;;AAUF,IAAIC,UAAQ,GAAG,SAAS,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE;IAChD,IAAI,IAAI,GAAG,IAAIF,SAAO,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;;IAExD,uBAAuB,CAAC,IAAI,CAAC,CAAC;;IAE9B,OAAO,IAAI,CAAC;CACf,CAAC;;;;;;AAMF,IAAI,eAAe,GAAG,SAAS,IAAI,EAAE,QAAQ,EAAE;IAC3C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;;IAE/C,uBAAuB,CAAC,IAAI,CAAC,CAAC;CACjC,CAAC;;;;;AAKF,IAAI,YAAY,GAAG,SAAS,QAAQ,EAAE;IAClC,IAAI,QAAQ,GAAG,IAAIA,SAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;;IAEtD,uBAAuB,CAAC,QAAQ,CAAC,CAAC;;IAElC,OAAO,QAAQ,CAAC;CACnB,CAAC;;;;;;;AAOF,IAAI,aAAa,GAAG,SAAS,OAAO,EAAE,QAAQ,EAAE;IAC5C,IAAI,aAAa,GAAGE,UAAQ,CAAC,EAAE,EAAE,CAAC,IAAIF,SAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrE,aAAa,CAAC,KAAK,CAAC,QAAQ;QACxB,CAAC,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,IAAI,IAAI,CAAC;;IAErD,IAAI,SAAS,GAAGE,UAAQ;QACpB,CAAC,kBAAkB,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;QACtD,CAAC,aAAa,CAAC,CAAC,CAAC;;IAErB,OAAO,SAAS,CAAC;CACpB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCF,IAAI,SAAS,GAAG,SAAS,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE;IACpE,IAAI,KAAK,CAAC;IACV,IAAI,OAAO,CAAC;IACZ,IAAI,CAAC,CAAC;IACN,IAAI,YAAY,KAAK,iBAAiB,EAAE;QACpC,IAAI,WAAW,GAAG,QAAQ,CAAC;QAC3B,QAAQ,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;;;;QAI5B,KAAK,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QAC1D,OAAO,GAAG,KAAK,CAAC;QAChB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACrC,IAAI,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,OAAO;gBACtC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;YAC9B,IAAI,IAAI,GAAG,IAAI;iBACV,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM;iBAC9B,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;YAEpC,OAAO,GAAG,OAAO,GAAG,IAAI,CAAC;;YAEzB,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YAC1C,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;SACjC;KACJ,MAAM,IAAI,YAAY,KAAK,KAAK,EAAE;;;QAG/B,IAAI,MAAM,GAAG,YAAY,CAAC;QAC1B,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAClC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE;gBAC7B,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;aAC9B,MAAM;gBACH,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;aAC9D;SACJ;QACD,KAAK,GAAG,MAAM,CAAC;KAClB,MAAM,IAAI,YAAY,KAAK,QAAQ,EAAE;QAClC,KAAK,GAAG,CAAC,YAAY,CAAC;KACzB,MAAM,IAAI,YAAY,KAAK,OAAO,EAAE;QACjC,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC;KAClD,MAAM,IAAI,YAAY,KAAK,eAAe,EAAE;QACzC,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;KACnC,MAAM;QACH,KAAK,GAAG,CAAC,CAAC;KACb;;;IAGD,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAClC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE;YAC7B,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SACrE;KACJ;IACD,IAAI,SAAS,GAAG,aAAa,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;;;IAGpD,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,OAAO,GAAG,KAAK,CAAC;IAChB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAClC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,EAAE;YAC7B,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;SAC/B,MAAM;YACH,IAAI,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;;YAE7B,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC;YACnC,OAAO,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;;YAEtC,IAAI,SAAS,GAAGA,UAAQ,CAAC,EAAE,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC;YACjD,SAAS,CAAC,MAAM,IAAI,KAAK,CAAC;YAC1B,SAAS,CAAC,KAAK,IAAI,KAAK,CAAC;YACzB,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC;;YAEnC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAChC;KACJ;;;;IAID,IAAI,WAAW,GAAGA,UAAQ;QACtB,CAAC,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,IAAIF,SAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IACrE,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;;IAE/B,IAAI,KAAK,GAAGE,UAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC,CAAC;;;IAG9C,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/C,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAC5C,OAAO,KAAK,CAAC;CAChB,CAAC;;;AAGF,IAAI,gBAAgB,GAAG;IACnB,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,GAAG;IACV,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;CACf,CAAC;;;;AAIF,IAAI,gBAAgB,GAAG;IACnB,SAAS,EAAE;QACP,IAAI,EAAE,KAAK;QACX,SAAS,EAAE,OAAO;KACrB;IACD,QAAQ,EAAE;QACN,IAAI,EAAE,KAAK;QACX,SAAS,EAAE,MAAM;KACpB;IACD,WAAW,EAAE;QACT,IAAI,EAAE,OAAO;QACb,SAAS,EAAE,SAAS;KACvB;IACD,KAAK,EAAE;QACH,IAAI,EAAE,YAAY;QAClB,SAAS,EAAE,YAAY;KAC1B;IACD,KAAK,EAAE;QACH,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE,aAAa;KAC3B;IACD,KAAK,EAAE;QACH,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE,WAAW;KACzB;IACD,KAAK,EAAE;QACH,IAAI,EAAE,YAAY;QAClB,SAAS,EAAE,mBAAmB;KACjC;CACJ,CAAC;;;;;;;;AAQF,IAAI,OAAO,GAAG;;IAEV,QAAQ,EAAE;QACN,OAAO,EAAE,MAAM;QACf,QAAQ,EAAE,WAAW;KACxB;IACD,QAAQ,EAAE;QACN,OAAO,EAAE,QAAQ;QACjB,QAAQ,EAAE,cAAc;KAC3B;IACD,QAAQ,EAAE;QACN,OAAO,EAAE,QAAQ;QACjB,QAAQ,EAAE,aAAa;KAC1B;;;;;;;IAOD,QAAQ,EAAE;QACN,OAAO,EAAE,eAAe;QACxB,QAAQ,EAAE,aAAa;KAC1B;IACD,SAAS,EAAE;QACP,OAAO,EAAE,QAAQ;QACjB,QAAQ,EAAE,qBAAqB;KAClC;IACD,UAAU,EAAE;QACR,OAAO,EAAE,SAAS;QAClB,QAAQ,EAAE,iBAAiB;KAC9B;IACD,SAAS,EAAE;QACP,OAAO,EAAE,QAAQ;QACjB,QAAQ,EAAE,gBAAgB;KAC7B;IACD,QAAQ,EAAE;QACN,OAAO,EAAE,YAAY;QACrB,QAAQ,EAAE,mBAAmB;KAChC;IACD,QAAQ,EAAE;QACN,OAAO,EAAE,WAAW;QACpB,QAAQ,EAAE,oBAAoB;KACjC;CACJ,CAAC;;AAEF,iBAAc,GAAG;IACb,OAAO,EAAE,OAAO;IAChB,UAAU,EAAE,UAAU;IACtB,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAEA,UAAQ;IAClB,YAAY,EAAE,YAAY;IAC1B,SAAS,EAAE,SAAS;IACpB,OAAO,EAAE,OAAO;IAChB,eAAe,EAAE,eAAe;IAChC,gBAAgB,EAAE,gBAAgB;IAClC,gBAAgB,EAAE,gBAAgB;CACrC,CAAC;;AC/dF;;;;;;;;;;;;;;;;;;;;;;AAsBA,IAAIZ,YAAU,GAAGzC,YAAuB,CAAC;AACzC,IAAI+C,OAAK,GAAG3C,OAAkB,CAAC;;AAE/B,IAAIkD,aAAW,GAAGjD,aAAwB,CAAC;AAC3C,IAAI+C,aAAW,GAAG3C,aAAwB,CAAC;AAC3C,IAAI8C,SAAO,GAAG7C,SAAoB,CAAC;AACnC,IAAIwC,OAAK,GAAGvC,OAAkB,CAAC;;AAE/B,IAAI0C,UAAQ,GAAGC,aAAW,CAAC,QAAQ,CAAC;;;;;;AAMpC,IAAI,UAAU,GAAG,SAAS,MAAM,EAAE,IAAI,EAAE;IACpC,IAAIC,SAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAIA,SAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE;QACtD,OAAOH,aAAW,CAAC,mBAAmB;YAClCG,SAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;KAC3C,MAAM;QACH,OAAOH,aAAW,CAAC,mBAAmB;YAClC,MAAM,EAAE,IAAI,CAAC,CAAC;KACrB;CACJ,CAAC;;;;;AAKF,IAAI,UAAU,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;IAClD,OAAOE,aAAW,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,UAAU;QAC3D,IAAI,EAAE,OAAO,CAAC,CAAC;CACtB,CAAC;;;;;;AAMF,IAAI,SAAS,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE;IACvD,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;IACxB,IAAI,IAAI,GAAGD,UAAQ;QACf,OAAO,CAAC,MAAM,CAAC,CAAC,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QACpE,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;;IAEtB,IAAI,UAAU,GAAG,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC;;IAEvE,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC;IAC1B,IAAI,CAAC,KAAK,IAAI,UAAU,CAAC;IACzB,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC;;IAE1C,OAAO,IAAI,CAAC;CACf,CAAC;;;;;;;AAOF,IAAI,cAAc,GAAG,SAAS,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;IACxE,IAAI,IAAI,GAAGC,aAAW,CAAC,UAAU,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;;IAExE,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;;IAEpD,IAAI,MAAM,EAAE;QACR,IAAI,KAAK;YACL,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc;YACxD,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;;QAErC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;QACrB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC;KACvB;;IAED,OAAO,IAAI,CAAC;CACf,CAAC;;;;;;AAMF,IAAI,cAAc,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;IACvE,IAAI,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;;IAEnD,IAAI,IAAI,GAAG,SAAS;QAChBD,UAAQ,CAAC,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAC1DN,OAAK,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;;IAElC,IAAI,MAAM,EAAE;QACR,IAAI,KAAK,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc;YACzC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;;QAErC,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;QACrB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC;KACvB;;IAED,OAAO,IAAI,CAAC;CACf,CAAC;;;;;;AAMF,IAAI,SAAS,GAAG,SAAS,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE;IACzC,IAAI,SAAS,CAAC;;IAEd,IAAI,IAAI,KAAK,eAAe,EAAE;QAC1B,SAAS,GAAG,aAAa,CAAC;KAC7B,MAAM,IAAI,IAAI,KAAK,eAAe,EAAE;QACjC,SAAS,GAAG,aAAa,CAAC;KAC7B;;IAED,IAAI,KAAK,GAAGM,UAAQ;QAChB,CAAC,kBAAkB,EAAE,SAAS,CAAC;QAC/B,CAACA,UAAQ,CAAC,EAAE,EAAE,CAACC,aAAW,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;;;IAIlE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;CACtC,CAAC;;;;;;AAMF,IAAI,gBAAgB,GAAG,SAAS,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI;gCACzC,OAAO,EAAE;;;IAGrC,IAAI,GAAG,CAAC;IACR,IAAI,MAAM,CAAC;IACX,IAAI,MAAM,CAAC;IACX,IAAI,MAAM,CAAC;IACX,GAAG,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;IAC9B,MAAM,GAAG,IAAI,CAAC;;IAEd,IAAI,IAAI,GAAG,eAAe,CAAC;;;;;IAK3B,IAAI,KAAK,KAAK,WAAW,EAAE;QACvB,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;KAC9B,MAAM,IAAI,KAAK,KAAK,WAAW,EAAE;QAC9B,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;KAC9B,MAAM,IAAI,KAAK,KAAK,aAAa,EAAE;QAChC,GAAG,GAAG,MAAM,GAAG,QAAQ,CAAC;KAC3B,MAAM,IAAI,KAAK,KAAK,aAAa,EAAE;QAChC,GAAG,GAAG,MAAM,GAAG,QAAQ,CAAC;KAC3B,MAAM,IAAI,KAAK,KAAK,eAAe,EAAE;QAClC,GAAG,GAAG,WAAW,CAAC;QAClB,MAAM,GAAG,QAAQ,CAAC;QAClB,MAAM,GAAG,aAAa,CAAC;KAC1B,MAAM,IAAI,KAAK,KAAK,eAAe,EAAE;QAClC,GAAG,GAAG,WAAW,CAAC;QAClB,MAAM,GAAG,QAAQ,CAAC;QAClB,MAAM,GAAG,aAAa,CAAC;KAC1B,MAAM,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,UAAU,EAAE;QAC9C,GAAG,GAAG,QAAQ,CAAC;QACf,MAAM,GAAG,QAAQ,CAAC;QAClB,MAAM,GAAG,QAAQ,CAAC;QAClB,IAAI,GAAG,eAAe,CAAC;KAC1B,MAAM,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,UAAU,EAAE;QAC9C,GAAG,GAAG,QAAQ,CAAC;QACf,MAAM,GAAG,QAAQ,CAAC;QAClB,MAAM,GAAG,QAAQ,CAAC;QAClB,IAAI,GAAG,eAAe,CAAC;KAC1B,MAAM,IAAI,KAAK,KAAK,UAAU,EAAE;QAC7B,MAAM,GAAG,GAAG,GAAG,QAAQ,CAAC;QACxB,MAAM,GAAG,QAAQ,CAAC;QAClB,IAAI,GAAG,eAAe,CAAC;KAC1B,MAAM,IAAI,KAAK,KAAK,SAAS,EAAE;QAC5B,GAAG,GAAG,QAAQ,CAAC;QACf,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;QAC3B,IAAI,GAAG,eAAe,CAAC;KAC1B,MAAM,IAAI,KAAK,KAAK,UAAU,EAAE;QAC7B,MAAM,GAAG,GAAG,GAAG,QAAQ,CAAC;QACxB,MAAM,GAAG,QAAQ,CAAC;QAClB,IAAI,GAAG,eAAe,CAAC;KAC1B,MAAM,IAAI,KAAK,KAAK,SAAS,EAAE;QAC5B,GAAG,GAAG,QAAQ,CAAC;QACf,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;QAC3B,IAAI,GAAG,eAAe,CAAC;KAC1B,MAAM,IAAI,KAAK,KAAK,GAAG,EAAE;QACtB,GAAG,GAAG,QAAQ,CAAC;QACf,MAAM,GAAG,QAAQ,CAAC;QAClB,MAAM,GAAG,QAAQ,CAAC;QAClB,IAAI,GAAG,eAAe,CAAC;KAC1B,MAAM,IAAI,KAAK,KAAK,GAAG,EAAE;QACtB,GAAG,GAAG,QAAQ,CAAC;QACf,MAAM,GAAG,QAAQ,CAAC;QAClB,MAAM,GAAG,QAAQ,CAAC;QAClB,IAAI,GAAG,eAAe,CAAC;KAC1B,MAAM,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,UAAU,EAAE;QAChD,GAAG,GAAG,QAAQ,CAAC;QACf,MAAM,GAAG,QAAQ,CAAC;QAClB,MAAM,GAAG,QAAQ,CAAC;QAClB,MAAM,GAAG,QAAQ,CAAC;QAClB,IAAI,GAAG,eAAe,CAAC;KAC1B,MAAM,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,UAAU,EAAE;QAChD,GAAG,GAAG,QAAQ,CAAC;QACf,MAAM,GAAG,QAAQ,CAAC;QAClB,MAAM,GAAG,QAAQ,CAAC;QAClB,MAAM,GAAG,QAAQ,CAAC;QAClB,IAAI,GAAG,eAAe,CAAC;KAC1B,MAAM,IAAI,KAAK,KAAK,UAAU,EAAE;QAC7B,GAAG,GAAG,QAAQ,CAAC;QACf,MAAM,GAAG,QAAQ,CAAC;QAClB,MAAM,GAAG,QAAQ,CAAC;QAClB,IAAI,GAAG,eAAe,CAAC;KAC1B,MAAM,IAAI,KAAK,KAAK,UAAU,EAAE;QAC7B,GAAG,GAAG,QAAQ,CAAC;QACf,MAAM,GAAG,QAAQ,CAAC;QAClB,MAAM,GAAG,QAAQ,CAAC;QAClB,IAAI,GAAG,eAAe,CAAC;KAC1B,MAAM,IAAI,KAAK,KAAK,cAAc,EAAE;QACjC,GAAG,GAAG,QAAQ,CAAC;QACf,MAAM,GAAG,QAAQ,CAAC;QAClB,MAAM,GAAG,QAAQ,CAAC;QAClB,IAAI,GAAG,eAAe,CAAC;KAC1B,MAAM,IAAI,KAAK,KAAK,cAAc,EAAE;QACjC,GAAG,GAAG,QAAQ,CAAC;QACf,MAAM,GAAG,QAAQ,CAAC;QAClB,MAAM,GAAG,QAAQ,CAAC;QAClB,IAAI,GAAG,eAAe,CAAC;KAC1B,MAAM,IAAI,KAAK,KAAK,QAAQ,EAAE;QAC3B,GAAG,GAAG,QAAQ,CAAC;QACf,MAAM,GAAG,QAAQ,CAAC;QAClB,MAAM,GAAG,QAAQ,CAAC;QAClB,IAAI,GAAG,eAAe,CAAC;KAC1B;;;IAGD,IAAI,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACvC,IAAI,cAAc,GAAG,UAAU,CAAC,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC;IAC1D,IAAI,aAAa,GAAG,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7C,IAAI,iBAAiB,GAAG,aAAa,CAAC,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC;IACnE,IAAI,aAAa,GAAG,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7C,IAAI,iBAAiB,GAAG,aAAa,CAAC,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC;IACnE,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,MAAM,KAAK,IAAI,EAAE;QACjB,IAAI,aAAa,GAAG,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC7C,iBAAiB,GAAG,aAAa,CAAC,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC;QAC/D,YAAY,GAAG,CAAC,CAAC;KACpB;;;;IAID,IAAI,SAAS,GAAG,cAAc,GAAG,iBAAiB,GAAG,iBAAiB,CAAC;;;IAGvE,IAAI,WAAW,GAAG,IAAI,CAAC,IAAI;QACvB,CAAC,WAAW,GAAG,SAAS,KAAK,YAAY,GAAG,iBAAiB,CAAC,CAAC,CAAC;;;IAGpE,IAAI,eAAe;QACf,SAAS,GAAG,WAAW,GAAG,YAAY,GAAG,iBAAiB,CAAC;;;;;;IAM/D,IAAI,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;IAClD,IAAI,MAAM,EAAE;QACR,UAAU,IAAI,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC;KAC9C;;IAED,IAAI,KAAK,GAAG,eAAe,GAAG,CAAC,GAAG,UAAU,CAAC;;;;;IAK7C,IAAI,MAAM,GAAG,EAAE,CAAC;;;IAGhB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;;IAE3C,IAAI,CAAC,CAAC;IACN,IAAI,MAAM,KAAK,IAAI,EAAE;;QAEjB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;YAC9B,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;SAC9C;KACJ,MAAM;;;QAGH,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;YAC9B,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;SAC9C;QACD,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QAC3C,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;YAC9B,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;SAC9C;KACJ;;;IAGD,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;;;IAGxC,IAAI,KAAK,GAAGA,aAAW,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;;IAEpE,OAAO,SAAS;QACZD,UAAQ,CAAC,CAAC,aAAa,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QACnDN,OAAK,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;CACrC,CAAC;;;;AAIF,IAAI,oBAAoB,GAAG;IACvB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU;IAC1C,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU;IACpC,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS;IAC5C,QAAQ;CACX,CAAC;;;AAGF,IAAI,qBAAqB,GAAG;IACxB,WAAW,EAAE,aAAa,EAAE,eAAe;IAC3C,WAAW,EAAE,aAAa,EAAE,eAAe;IAC3C,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ;IAC9B,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;IAC1C,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc;CACzD,CAAC;;;AAGF,IAAI,oBAAoB,GAAG;IACvB,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM;CACvE,CAAC;;;;;AAKF,IAAI,eAAe,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;;;;;AAK9C,IAAI,cAAc,GAAG,SAAS,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;;IAE/D,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,MAAM,EAAE;QACnC,KAAK,GAAG,UAAU,CAAC;KACtB,MAAM,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,MAAM,EAAE;QAC1C,KAAK,GAAG,UAAU,CAAC;KACtB;;;IAGD,IAAIG,OAAK,CAAC,QAAQ,CAAC,oBAAoB,EAAE,KAAK,CAAC;QAC3CA,OAAK,CAAC,QAAQ,CAAC,oBAAoB,EAAE,KAAK,CAAC,EAAE;QAC7C,OAAO,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;KACrE,MAAM,IAAIA,OAAK,CAAC,QAAQ,CAAC,qBAAqB,EAAE,KAAK,CAAC,EAAE;QACrD,OAAO,gBAAgB;YACnB,KAAK,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;KACpE,MAAM;QACH,MAAM,IAAIT,YAAU,CAAC,sBAAsB,GAAG,KAAK,GAAG,GAAG,CAAC,CAAC;KAC9D;CACJ,CAAC;;;;;;;;;;;;;;;AAeF,IAAI,2BAA2B,GAAG;IAC9B,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAEM,OAAK,CAAC,YAAY,CAAC;IAC1C,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAEA,OAAK,CAAC,MAAM,CAAC;IACpC,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAEA,OAAK,CAAC,IAAI,CAAC;IAClC,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACxB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACxB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACxB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;CAC3B,CAAC;;;AAGF,IAAI,4BAA4B,GAAG;IAC/B,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAEA,OAAK,CAAC,YAAY,CAAC;IAC1C,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAEA,OAAK,CAAC,MAAM,CAAC;IACpC,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAEA,OAAK,CAAC,IAAI,CAAC;IAClC,CAAC,IAAI,EAAE,OAAO,CAAC;CAClB,CAAC;;;;AAIF,IAAI,2BAA2B,GAAG;IAC9B,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAEA,OAAK,CAAC,YAAY,CAAC;IAC1C,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAEA,OAAK,CAAC,MAAM,CAAC;IACpC,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAEA,OAAK,CAAC,IAAI,CAAC;IAClC,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACxB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACxB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACxB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACxB,CAAC,IAAI,EAAE,OAAO,CAAC;CAClB,CAAC;;;;;AAKF,IAAI,eAAe,GAAG,SAAS,IAAI,EAAE;IACjC,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;QACvB,OAAO,cAAc,CAAC;KACzB,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;QAC9B,OAAO,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;KAC1C,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;QAC9B,OAAO,eAAe,CAAC;KAC1B;CACJ,CAAC;;;;;;AAMF,IAAI,gBAAgB,GAAG,SAAS,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE;;;;;IAK9D,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAChD,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC1C,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE;;YAE9B,MAAM;SACT;;QAED,IAAI,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,IAAI,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;;;;;QAKjD,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE;YAC9B,WAAW,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC;SACnD;;;QAGD,IAAI,WAAW,GAAG,MAAM,EAAE;YACtB,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;SACtB;KACJ;;;IAGD,OAAO,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;CACxC,CAAC;;;;;;AAMF,IAAI,oBAAoB,GAAG,SAAS,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI;oCACpC,OAAO,EAAE;IACzC,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,MAAM,EAAE;QACnC,KAAK,GAAG,UAAU,CAAC;KACtB,MAAM,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,MAAM,EAAE;QAC1C,KAAK,GAAG,UAAU,CAAC;KACtB;;;IAGD,IAAI,QAAQ,CAAC;IACb,IAAIG,OAAK,CAAC,QAAQ,CAAC,oBAAoB,EAAE,KAAK,CAAC,EAAE;QAC7C,QAAQ,GAAG,2BAA2B,CAAC;KAC1C,MAAM,IAAIA,OAAK,CAAC,QAAQ,CAAC,oBAAoB,EAAE,KAAK,CAAC,EAAE;QACpD,QAAQ,GAAG,2BAA2B,CAAC;KAC1C,MAAM;QACH,QAAQ,GAAG,4BAA4B,CAAC;KAC3C;;;IAGD,IAAI,SAAS,GAAG,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;;;;IAInE,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,EAAE;QAC5B,OAAO,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI;8BAC7C,OAAO,CAAC,CAAC;KAClC,MAAM,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,EAAE;QACnC,OAAO,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI;8BAC5C,OAAO,CAAC,CAAC;KAClC,MAAM,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,EAAE;QACnC,OAAO,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;KAC1E;CACJ,CAAC;;;;;;AAMF,IAAI,kBAAkB,GAAG,SAAS,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI;kCACnC,OAAO,EAAE;;IAEvC,IAAI,UAAU;QACV,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC;;;IAGpE,IAAI,eAAe,GAAG,GAAG,CAAC;IAC1B,IAAI,eAAe,GAAG,GAAG,GAAGE,aAAW,CAAC,OAAO,CAAC,OAAO,CAAC;;IAExD,IAAI,eAAe,GAAG,IAAI,CAAC,GAAG;QAC1B,MAAM,GAAG,UAAU,EAAE,KAAK,GAAG,UAAU,CAAC,CAAC;;IAE7C,IAAI,WAAW,GAAG,IAAI,CAAC,GAAG;;;;;;;;;;QAUtB,eAAe,GAAG,GAAG,GAAG,eAAe;QACvC,CAAC,GAAG,eAAe,GAAG,eAAe,CAAC,CAAC;;;;IAI3C,OAAO,oBAAoB,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI;gCACvC,OAAO,CAAC,CAAC;CACxC,CAAC;;AAEF,eAAc,GAAG;IACb,UAAU,EAAE,cAAc;IAC1B,gBAAgB,EAAE,oBAAoB;IACtC,cAAc,EAAE,kBAAkB;CACrC,CAAC;;ACriBF;;;;;;;;AAQA,IAAIX,YAAU,GAAGzC,YAAuB,CAAC;AACzC,IAAI+C,OAAK,GAAG3C,OAAkB,CAAC;;AAE/B,IAAIkD,aAAW,GAAGjD,aAAwB,CAAC;AAC3C,IAAI,SAAS,GAAGI,WAAsB,CAAC;AACvC,IAAI,OAAO,GAAGC,SAAoB,CAAC;AACnC,IAAI,WAAW,GAAGC,aAAwB,CAAC;AAC3C,IAAIuC,OAAK,GAAGnC,OAAkB,CAAC;;AAE/B,IAAIsC,UAAQ,GAAGC,aAAW,CAAC,QAAQ,CAAC;;AAEpC,IAAI,OAAO,GAAG,SAAS,IAAI,EAAE;IACzB,OAAO,IAAI,YAAY,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC;CACvE,CAAC;;;;;;AAMF,IAAI,KAAK,GAAG,SAAS,IAAI,EAAE;IACvB,OAAO,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC;CAC7C,CAAC;;AAEF,IAAI,kBAAkB,GAAG,SAAS,IAAI,EAAE,WAAW,EAAE;;;;IAIjD,IAAI,IAAI,EAAE;QACN,OAAOJ,OAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC;8BAC1C,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;KAC1C,MAAM;QACH,OAAO,WAAW,CAAC;KACtB;CACJ,CAAC;;AAEF,IAAI,mBAAmB,GAAG,SAAS,IAAI,EAAE,WAAW,EAAE;IAClD,IAAI,IAAI,EAAE;QACN,OAAOA,OAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;KACxE,MAAM;QACH,OAAO,WAAW,CAAC;KACtB;CACJ,CAAC;;;;;;;;;AASF,IAAI,eAAe,GAAG,SAAS,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE;;IAE7D,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACxC,IAAI,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACxC,IAAI,MAAM,YAAY,OAAO,CAAC,gBAAgB,EAAE;YAC5C,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;SACvD,MAAM;YACH,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACvB;KACJ;;;;;;;IAOD,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAChC,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;YACpB,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;YACtB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACpB,CAAC,EAAE,CAAC;SACP,MAAM,IAAI,MAAM,EAAE;YACf,IAAI,MAAM,CAAC,CAAC,CAAC,YAAY,OAAO,CAAC,UAAU,EAAE;gBACzC,MAAM,CAAC,CAAC,CAAC,GAAGG,UAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACnE;YACDC,aAAW,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YAC/C,MAAM,GAAG,IAAI,CAAC;SACjB;KACJ;IACD,IAAI,MAAM,EAAE;QACR,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC9C;;;IAGD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAChC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACZ,kBAAkB,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC;mBAC3C,mBAAmB,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,EAAE;YACzD,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;SACjC;KACJ;;IAED,OAAO,MAAM,CAAC;CACjB,CAAC;;;AAGF,IAAI,gBAAgB,GAAG,SAAS,IAAI,EAAE;IAClC,IAAI,IAAI,YAAY,OAAO,CAAC,gBAAgB,EAAE;QAC1C,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YACtB,OAAO,gBAAgB;gBACnB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;SAChD;KACJ,MAAM;QACH,IAAIJ,OAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ;YAChE,QAAQ,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;YACvC,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;SAC1B;KACJ;IACD,OAAO,IAAI,CAAC;CACf,CAAC;;;;;;;;AAQF,IAAI,kBAAkB,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IAC9C,IAAI,CAAC,KAAK,EAAE;QACR,OAAO,KAAK,CAAC;KAChB,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE;;;QAG5B,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM;aACpB,OAAO,CAAC,KAAK,CAAC,IAAI,KAAKH,OAAK,CAAC,OAAO,CAAC,IAAI;YAC1C,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;KACvC,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;QAChC,OAAO,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KAC3C,MAAM;QACH,OAAO,IAAI,CAAC;KACf;CACJ,CAAC;;;;;;;AAOF,IAAI,WAAW,GAAG,SAAS,KAAK,EAAE;IAC9B,IAAI,CAAC,KAAK,EAAE;QACR,OAAO,KAAK,CAAC;KAChB,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE;QAClC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YAC1B,OAAO,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SACtC,MAAM;YACH,OAAO,KAAK,CAAC;SAChB;KACJ,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;QAC/B,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YAChC,OAAO,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SAC5C,MAAM;YACH,OAAO,KAAK,CAAC;SAChB;KACJ,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;QAC9B,OAAO,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KACxC,MAAM;QACH,OAAO,KAAK,CAAC;KAChB;CACJ,CAAC;;;;;;;AAOF,IAAI,cAAc,GAAG,SAAS,KAAK,EAAE;IACjC,IAAI,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;;;IAGlC,OAAO,QAAQ,CAAC,IAAI,KAAK,SAAS;QAC9B,QAAQ,CAAC,IAAI,KAAK,SAAS;QAC3B,QAAQ,CAAC,IAAI,KAAK,KAAK;QACvB,QAAQ,CAAC,IAAI,KAAK,KAAK;QACvB,QAAQ,CAAC,IAAI,KAAK,OAAO;QACzB,QAAQ,CAAC,IAAI,KAAK,MAAM;QACxB,QAAQ,CAAC,IAAI,KAAK,OAAO;QACzB,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC;CACjC,CAAC;;AAEF,IAAI,iBAAiB,GAAG,SAAS,OAAO,EAAE,OAAO,EAAE;IAC/C,OAAOM,UAAQ,CAAC,OAAO,CAAC,MAAM,CAAC;QAC3B,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,OAAO;QAC1C,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,EAAEN,OAAK,CAAC,IAAI,CAAC,GAAG,EAAE;QACvC,eAAe,CAAC,CAAC,CAAC,CAAC;CAC1B,CAAC;;;;;;AAMF,IAAI,UAAU,GAAG,EAAE,CAAC;;AAEpB,UAAU,CAAC,OAAO,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IAC1C,OAAOO,aAAW,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;CACzD,CAAC;;AAEF,UAAU,CAAC,OAAO,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IAC1C,OAAOA,aAAW,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;CACzD,CAAC;;AAEF,UAAU,CAAC,GAAG,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IACtC,OAAOA,aAAW,CAAC,OAAO;QACtB,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;CACnD,CAAC;;AAEF,UAAU,CAAC,GAAG,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IACtC,OAAOA,aAAW,CAAC,OAAO;QACtB,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;CACnD,CAAC;;AAEF,UAAU,CAAC,IAAI,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IACvC,OAAOA,aAAW,CAAC,OAAO;QACtB,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;CACpD,CAAC;;AAEF,UAAU,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IACxC,OAAOA,aAAW,CAAC,OAAO;QACtB,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;CACrD,CAAC;;AAEF,UAAU,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IACxC,OAAOA,aAAW,CAAC,OAAO;QACtB,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;CACrD,CAAC;;AAEF,UAAU,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IACxC,OAAOA,aAAW,CAAC,OAAO;QACtB,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;CACrD,CAAC;;AAEF,UAAU,CAAC,QAAQ,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IAC3C,OAAOD,UAAQ;QACX,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAC7B,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC;QACnD,OAAO;KACV,CAAC;CACL,CAAC;;AAEF,UAAU,CAAC,IAAI,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IACvC,IAAI,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrD,IAAI,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IAChE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QACvC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACnC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YACvB,CAAC,EAAE,CAAC;SACP;KACJ;IACD,OAAOA,UAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QACpD,KAAK,EAAE,UAAU,CAAC,CAAC;CAC1B,CAAC;;AAEF,UAAU,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IACxC,IAAI,QAAQ,GAAG,eAAe;QAC1B,KAAK,CAAC,KAAK,CAAC,KAAK;QACjB,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;QACpC,KAAK;KACR,CAAC;;;;;;IAMF,OAAO,IAAIC,aAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;CACjD,CAAC;;AAEF,UAAU,CAAC,MAAM,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;;;;;;IAMzC,IAAI,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE;QAC/C,OAAO,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;KAC5D;;IAED,IAAI,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACzD,IAAI,MAAM,CAAC;IACX,IAAI,MAAM,CAAC;IACX,IAAI,GAAG,CAAC;IACR,IAAI,GAAG,CAAC;;IAER,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC1B,IAAI,UAAU,CAAC;;IAEf,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;QACjB,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QAC5C,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAC9C,MAAM,GAAGD,UAAQ,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;YAChD,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;KAC1B;;IAED,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;QACjB,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QAC5C,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAC9C,MAAM,GAAGA,UAAQ,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;YAChD,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;KAC1B;;;IAGD,IAAI,QAAQ,CAAC;IACb,IAAI,QAAQ,CAAC;IACb,IAAI,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;QAClC,QAAQ,GAAG,CAAC,CAAC;QACb,QAAQ,GAAG,CAAC,CAAC;KAChB,MAAM;QACH,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAC/C,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;KACjD;;;IAGD,IAAI,WAAW,CAAC;IAChB,IAAI,KAAK,KAAKN,OAAK,CAAC,OAAO,EAAE;QACzB,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;KACpC,MAAM,IAAI,KAAK,CAAC,OAAO,EAAE;QACtB,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;KACpC,MAAM;QACH,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;KACpC;;;;IAID,IAAI,UAAU,GAAGA,OAAK,CAAC,IAAI,CAAC,cAAc;YAClC,KAAK,CAAC,cAAc,CAAC;IAC7B,IAAI,WAAW;QACX,CAAC,GAAG,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,IAAI,UAAU,GAAG,IAAI,CAAC;;IAE5D,IAAI,MAAM,CAAC;IACX,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;;QAElB,QAAQ,GAAG,IAAI,CAAC,GAAG;YACf,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI;YAC5B,GAAG,CAAC,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;;QAE9C,MAAM,GAAGO,aAAW,CAAC,SAAS,CAAC;YAC3B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC;SAC/B,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;;QAE/B,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;;;;;QAKnD,IAAI,IAAI,YAAY,OAAO,CAAC,UAAU,EAAE;YACpC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;SAC7D;KACJ,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;;QAEzB,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,WAAW;YACrC,GAAG,CAAC,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;;QAE9C,MAAM,GAAGA,aAAW,CAAC,SAAS,CAAC;YAC3B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC;SAC/B,EAAE,OAAO,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;;QAEhC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;KACtD,MAAM;QACH,QAAQ,GAAG,IAAI,CAAC,GAAG;YACf,QAAQ,EAAE,WAAW,EAAE,GAAG,CAAC,KAAK,GAAG,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACrE,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;;QAElD,IAAI,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,oBAAoB,CAAC;;;QAGzD,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC;gBAC5C,CAAC,GAAG,SAAS,EAAE;YACnB,QAAQ,GAAG,CAAC,GAAG,SAAS,IAAI,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;YAC/D,IAAI,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,IAAI,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;YAC/D,IAAI,GAAG,GAAG,CAAC,EAAE;gBACT,QAAQ,IAAI,GAAG,CAAC;gBAChB,QAAQ,IAAI,GAAG,CAAC;aACnB;SACJ;;QAED,MAAM,GAAGA,aAAW,CAAC,SAAS,CAAC;YAC3B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC;YAC7C,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC;SACjD,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;;;QAGrC,IAAI,IAAI,YAAY,OAAO,CAAC,UAAU,EAAE;YACpC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;SAC7D;;QAED,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;QACnD,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;KACtD;;;IAGD,IAAI,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC;IAC9C,OAAOD,UAAQ,CAAC,CAAC,MAAM,CAAC;QACpB,CAAC,IAAI,EAAEA,UAAQ,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QACvC,OAAO,CAAC,CAAC;CAChB,CAAC;;AAEF,UAAU,CAAC,OAAO,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;;;;IAI1C,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC1B,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE;QAChC,KAAK,GAAGN,OAAK,CAAC,OAAO,CAAC;KACzB,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;QACpC,KAAK,GAAGA,OAAK,CAAC,IAAI,CAAC;KACtB;;IAED,IAAI,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IAC7B,IAAI,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IAC7B,IAAI,UAAU,CAAC;;IAEf,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACtD,IAAI,UAAU,GAAGM,UAAQ,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;QACnD,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC;;IAEzB,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACtD,IAAI,UAAU,GAAGA,UAAQ,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;QACnD,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC;;IAEzB,IAAI,SAAS,CAAC;IACd,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE;QACxB,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,oBAAoB;YAChD,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC;KACpC,MAAM;QACH,SAAS,GAAG,CAAC,CAAC;KACjB;;;IAGD,IAAI,QAAQ,CAAC;IACb,IAAI,SAAS,CAAC;IACd,IAAI,UAAU,CAAC;IACf,IAAI,KAAK,CAAC,IAAI,KAAKN,OAAK,CAAC,OAAO,CAAC,IAAI,EAAE;QACnC,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAC9B,IAAI,SAAS,GAAG,CAAC,EAAE;YACf,SAAS,GAAG,CAAC,GAAG,SAAS,CAAC;SAC7B,MAAM;YACH,SAAS,GAAG,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,oBAAoB,CAAC;SAC5D;QACD,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;KACrC,MAAM;QACH,IAAI,SAAS,GAAG,CAAC,EAAE;YACf,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAC9B,SAAS,GAAG,SAAS,CAAC;SACzB,MAAM;YACH,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;YAC9B,SAAS,GAAG,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,oBAAoB,CAAC;SAC5D;QACD,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;KACrC;;IAED,IAAI,IAAI,CAAC;IACT,IAAI,SAAS,KAAK,CAAC,EAAE;;QAEjB,IAAI,kBAAkB;YAClB,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC;QAC3D,IAAI,kBAAkB,GAAG,SAAS,EAAE;YAChC,QAAQ,IAAI,GAAG,IAAI,SAAS,GAAG,kBAAkB,CAAC,CAAC;YACnD,UAAU,IAAI,GAAG,IAAI,SAAS,GAAG,kBAAkB,CAAC,CAAC;SACxD;;QAED,IAAI,GAAGO,aAAW,CAAC,SAAS,CAAC;YACzB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC;YACnD,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC;SACrD,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;KACxC,MAAM;;QAEH,IAAI,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;;QAE1C,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK,KAAK,UAAU,GAAG,GAAG,GAAG,SAAS,CAAC;gBACrD,SAAS,EAAE;YACf,QAAQ;gBACJ,SAAS,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,KAAK;8BACtB,UAAU,GAAG,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC;SACpD;;QAED,IAAI,CAAC,UAAU,GAAG,GAAG,GAAG,SAAS,KAAK,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC;gBACxD,SAAS,EAAE;YACf,UAAU;gBACN,SAAS,IAAI,CAAC,UAAU,GAAG,GAAG,GAAG,SAAS;8BAC5B,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC;SACjD;;QAED,IAAI,GAAG,GAAGD,UAAQ;YACd,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,EAAEN,OAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC;;;QAG5D,GAAG,CAAC,MAAM,GAAG,SAAS,CAAC;;QAEvB,IAAI,QAAQ,GAAG,EAAE,UAAU,GAAG,GAAG,GAAG,SAAS,CAAC,CAAC;;QAE/C,IAAI,GAAGO,aAAW,CAAC,SAAS,CAAC;YACzB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC;YACnD,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,SAAS,KAAK,EAAE,QAAQ,CAAC;YACjD,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,QAAQ,CAAC;SACrD,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;KACxC;;;;IAID,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC;IACnE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC;;;IAGlE,IAAI,SAAS,CAAC;IACd,IAAI,KAAK,CAAC,IAAI,KAAKP,OAAK,CAAC,OAAO,CAAC,IAAI,EAAE;QACnC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;KACpC,MAAM;QACH,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;KACpC;;IAED,IAAI,SAAS,CAAC;IACd,IAAI,UAAU,CAAC;IACf,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,EAAE;QAC/B,SAAS,GAAG,iBAAiB,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;KACrD,MAAM;QACH,SAAS,GAAG,SAAS,CAAC,gBAAgB;YAClC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI;YACtC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;KACxD;IACD,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,EAAE;QAChC,UAAU,GAAG,iBAAiB,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;KACvD,MAAM;QACH,UAAU,GAAG,SAAS,CAAC,gBAAgB;YACnC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI;YACvC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;KACzD;;IAED,OAAOM,UAAQ;QACX,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC;QAC5C,CAAC,SAAS,EAAEA,UAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC;QACpD,OAAO,CAAC,CAAC;CAChB,CAAC;;AAEF,IAAI,aAAa,GAAG,SAAS,SAAS,EAAE,KAAK,EAAE;IAC3C,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC;IACzB,IAAI,SAAS,CAAC,IAAI,KAAK,IAAI,EAAE;QACzB,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;KAC9B,MAAM,IAAI,SAAS,CAAC,IAAI,KAAK,IAAI,EAAE;QAChC,CAAC,IAAI,EAAE,CAAC;KACX;IACD,OAAO,CAAC,CAAC;CACZ,CAAC;;AAEF,UAAU,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IACxC,IAAI,CAAC,CAAC;IACN,IAAI,CAAC,CAAC;IACN,IAAI,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;IACjC,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,IAAI,IAAI,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;;IAEzB,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;;;IAG1B,IAAI,EAAE,GAAG,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC;IACzC,IAAI,WAAW,GAAG,CAAC,GAAG,EAAE,CAAC;;;IAGzB,IAAI,YAAY,GAAG,EAAE,GAAG,EAAE,CAAC;;;IAG3B,IAAI,YAAY,GAAGH,OAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAC5D,IAAI,SAAS,GAAG,YAAY,GAAG,YAAY,CAAC;IAC5C,IAAI,aAAa,GAAG,GAAG,GAAG,SAAS,CAAC;IACpC,IAAI,YAAY,GAAG,GAAG,GAAG,SAAS,CAAC;;IAEnC,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;QAC1C,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,MAAM,GAAG,aAAa,CAAC;QAC3B,IAAI,KAAK,GAAG,YAAY,CAAC;;QAEzB,IAAI,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE;YACnB,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC;SACrB;;QAED,IAAI,MAAM,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACrC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;YAC/B,IAAI,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YACxC,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE;gBACnB,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;aACrB;YACD,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE;gBACrB,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;aACvB;YACD,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;SACnB;;QAED,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACxB,GAAG,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACzD,IAAI,GAAG,GAAG,CAAC,EAAE;gBACT,GAAG,IAAI,YAAY,CAAC;gBACpB,IAAI,KAAK,GAAG,GAAG,EAAE;oBACb,KAAK,GAAG,GAAG,CAAC;iBACf;gBACD,GAAG,GAAG,CAAC,CAAC;aACX;SACJ;;QAED,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,WAAW,IAAI,MAAM,CAAC;QACtB,MAAM,CAAC,GAAG,GAAG,WAAW,CAAC;QACzB,WAAW,IAAI,KAAK,GAAG,GAAG,CAAC;QAC3B,IAAI,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;KACpB;;IAED,IAAI,MAAM,GAAG,WAAW,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;IACxD,IAAI,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;IAC7C,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,IAAI,MAAM,CAAC;IACX,IAAI,WAAW,CAAC;IAChB,KAAK,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,CAAC;;;SAGtB,CAAC,GAAG,EAAE,IAAI,WAAW,GAAG,eAAe,CAAC,MAAM;SAC9C,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE;;QAErB,IAAI,QAAQ,GAAG,eAAe,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;;QAElD,IAAI,cAAc,GAAG,IAAI,CAAC;QAC1B,OAAO,QAAQ,CAAC,IAAI,KAAK,WAAW,EAAE;;;YAGlC,IAAI,CAAC,cAAc,EAAE;gBACjB,MAAM,GAAGG,UAAQ,CAAC,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC;gBACvC,MAAM,CAAC,KAAK,CAAC,KAAK;oBACd,WAAW,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;gBAC7C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACrB;;YAED,IAAI,QAAQ,CAAC,SAAS,KAAK,GAAG,EAAE;gBAC5B,IAAI,SAAS,GAAGA,UAAQ;oBACpB,CAAC,oBAAoB,CAAC;oBACtB,EAAE,CAAC,CAAC;gBACR,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,WAAW,GAAG,IAAI,CAAC;gBAC5C,SAAS,CAAC,KAAK,CAAC,aAAa;oBACzB,EAAE,WAAW,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC;;gBAEnC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACxB,MAAM;gBACH,MAAM,IAAIZ,YAAU;oBAChB,0BAA0B,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;aACxD;;YAED,WAAW,EAAE,CAAC;YACd,QAAQ,GAAG,eAAe,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YAC9C,cAAc,GAAG,KAAK,CAAC;SAC1B;;QAED,IAAI,CAAC,IAAI,EAAE,EAAE;YACT,SAAS;SACZ;;QAED,IAAI,QAAQ,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,mBAAmB,EAAE;YAC1C,QAAQ,GAAGS,OAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YACrD,IAAI,QAAQ,KAAK,CAAC,EAAE;gBAChB,MAAM,GAAGG,UAAQ,CAAC,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC;gBACvC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,QAAQ,GAAG,IAAI,CAAC;gBACrC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACrB;SACJ;;QAED,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE;YACrB,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,IAAI,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YAClB,IAAI,CAAC,IAAI,EAAE;gBACP,SAAS;aACZ;YACD,IAAI,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC;YAC7B,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;YACvB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;YACzB,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;SACtD;;QAED,GAAG,GAAGC,aAAW,CAAC,SAAS,CAAC,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QACnE,GAAG,GAAGD,UAAQ;YACV,CAAC,YAAY,IAAI,QAAQ,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC;YACxC,CAAC,GAAG,CAAC,CAAC,CAAC;QACX,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;QAEf,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,mBAAmB,EAAE;YAC/C,QAAQ,GAAGH,OAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;YACtD,IAAI,QAAQ,KAAK,CAAC,EAAE;gBAChB,MAAM,GAAGG,UAAQ,CAAC,CAAC,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC;gBACvC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,QAAQ,GAAG,IAAI,CAAC;gBACrC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACrB;SACJ;KACJ;IACD,IAAI,GAAGA,UAAQ,CAAC,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;IAClC,OAAOA,UAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;CAC9C,CAAC;;AAEF,UAAU,CAAC,OAAO,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IAC1C,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;QAClD,KAAK,CAAC,KAAK,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,KAAK,GAAG,EAAE;;;;QAI5C,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;YACvB,OAAOC,aAAW,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;SACzD,MAAM;YACH,OAAOD,UAAQ,CAAC,CAAC,QAAQ,CAAC;gBACtB,CAACC,aAAW,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBACvD,OAAO,CAAC,CAAC;SAChB;KACJ,MAAM;;;QAGH,OAAOD,UAAQ;YACX,CAAC,QAAQ;gBACLC,aAAW,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC;YACxD,EAAE,EAAE,OAAO,CAAC,CAAC;KACpB;CACJ,CAAC;;AAEF,UAAU,CAAC,IAAI,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IACvC,IAAI,KAAK,GAAGD,UAAQ;QAChB,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IAChE,IAAI,GAAG,GAAGA,UAAQ,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IAChC,OAAOA,UAAQ;QACX,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;CACrE,CAAC;;AAEF,UAAU,CAAC,IAAI,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IACvC,IAAI,KAAK,GAAGA,UAAQ;QAChB,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IAChE,IAAI,GAAG,GAAGA,UAAQ,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;IAChC,OAAOA,UAAQ;QACX,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;CACrE,CAAC;;AAEF,UAAU,CAAC,EAAE,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;;IAErC,IAAI,QAAQ,CAAC;IACb,IAAI,QAAQ,CAAC;IACb,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;;;;QAIzB,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;QAC3B,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;QAC3B,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;QACzB,SAAS,GAAG,IAAI,CAAC;KACpB;;IAED,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;;;IAG1B,IAAI,WAAW,GAAG;QACd,YAAY;KACf,CAAC;;IAEF,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,KAAK,CAAC,IAAI,KAAKN,OAAK,CAAC,OAAO,CAAC,IAAI;QACjC,KAAK,CAAC,KAAK,CAAC,MAAM;QAClB,CAACG,OAAK,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;;;QAGhD,KAAK,GAAG,IAAI,CAAC;KAChB;;IAED,IAAI,IAAI,CAAC;IACT,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE;;QAEpB,IAAI,QAAQ,GAAG,KAAK,GAAG,eAAe,GAAG,eAAe,CAAC;QACzD,IAAI,GAAGI,aAAW,CAAC,UAAU;YACzB,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO;YAC3C,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,GAAG,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC;;;;;;;QAO3D,SAAS,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC;YACtC,KAAK,CAAC,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC;;;QAGpD,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;KACvB,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;;QAE1B,IAAI,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;;QAE9D,IAAI,GAAGD,UAAQ,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;KAC5C,MAAM;;;;;QAKH,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC9C,MAAM,CAAC,IAAI,CAACC,aAAW,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;SACrE;QACD,IAAI,GAAGD,UAAQ,CAAC,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;KAC7C;;IAED,IAAI,SAAS,EAAE;;;QAGX,IAAI,GAAGA,UAAQ,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;;QAE5B,IAAI,MAAM,CAAC;QACX,IAAI,OAAO,CAAC;QACZ,IAAI,MAAM,CAAC;QACX,IAAI,OAAO,CAAC;QACZ,IAAI,UAAU,CAAC;;;QAGf,IAAI,QAAQ,EAAE;YACV,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;YAC5C,IAAI,GAAG,GAAG,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YAC3C,MAAM,GAAGA,UAAQ,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;gBAChD,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;;YAEvB,OAAO,GAAG,IAAI,CAAC,GAAG;gBACd,WAAW,CAAC,OAAO,CAAC,aAAa;gBACjC,WAAW,CAAC,OAAO,CAAC,aAAa,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;SACtD;;QAED,IAAI,QAAQ,EAAE;YACV,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;YAC5C,IAAI,GAAG,GAAG,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YAC3C,MAAM,GAAGA,UAAQ,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;gBAChD,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;;YAEvB,OAAO,GAAG,IAAI,CAAC,GAAG;gBACd,WAAW,CAAC,OAAO,CAAC,aAAa;gBACjC,WAAW,CAAC,OAAO,CAAC,aAAa,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;SACvD;;;;QAID,IAAI,UAAU,CAAC;QACf,IAAI,GAAG,CAAC;QACR,IAAI,MAAM,CAAC;QACX,IAAI,CAAC,QAAQ,EAAE;YACX,GAAG,GAAG,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;;YAE9B,UAAU,GAAGC,aAAW,CAAC,SAAS,CAAC;gBAC/B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC;gBACvD,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC;gBAC5B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC;gBAC7B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC;aAC7B,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;;;;;;YAMxB,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;SAC3D,MAAM,IAAI,CAAC,QAAQ,EAAE;YAClB,MAAM,GAAG,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;;YAEhC,UAAU,GAAGA,aAAW,CAAC,SAAS,CAAC;gBAC/B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC;gBAC1B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC;gBAC7B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC;gBAC5B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC;aAC1D,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;;;YAG9B,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC;SAC1D,MAAM,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE;;;;YAI/B,OAAO,IAAI,CAAC;SACf,MAAM;YACH,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,aAAa;gBACtC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK;gBAC5B,OAAO;gBACP,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;;YAE3B,UAAU,GAAGA,aAAW,CAAC,SAAS,CAAC;gBAC/B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC;gBACvD,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC;gBAC5B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC;gBAC7B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC;gBAC1B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC;gBAC7B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC;gBAC5B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,aAAa,CAAC;aAC1D,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;;;YAG9B,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;YACxD,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,GAAG,IAAI,CAAC;SAC1D;;QAED,OAAOD,UAAQ,CAAC,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;KAChE,MAAM;QACH,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE;YACpB,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,SAAS,GAAG,IAAI,CAAC;SACrC;;QAED,OAAO,IAAI,CAAC;KACf;CACJ,CAAC;;AAEF,UAAU,CAAC,GAAG,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IACtC,IAAI,KAAK,GAAG,EAAE,CAAC;;IAEf,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE;;QAEhC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;YAC1B,KAAK,CAAC,IAAI,CAACA,UAAQ;gBACf,CAAC,QAAQ,EAAE,qBAAqB,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;SACxD;QACD,KAAK,CAAC,IAAI,CAACA,UAAQ,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;KAC/D,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,KAAKN,OAAK,CAAC,OAAO,CAAC,IAAI,EAAE;QAClD,KAAK,CAAC,IAAI,CAACM,UAAQ,CAAC,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;KACzD,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,KAAK,EAAE;QACtC,KAAK,CAAC,IAAI,CAACA,UAAQ,CAAC,CAAC,QAAQ,EAAE,eAAe,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;KAClE,MAAM;QACH,KAAK,CAAC,IAAI,CAACA,UAAQ,CAAC,CAAC,QAAQ,EAAE,cAAc,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;KACjE;;IAED,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE;QACjE,KAAK,CAAC,IAAI,CAACC,aAAW,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;KACpD;;IAED,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,KAAK,EAAE;QAC/B,IAAI,QAAQ,GAAG;YACXA,aAAW,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC;YACpCA,aAAW,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC;YACpCA,aAAW,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1C,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE;YAChC,KAAK,CAAC,IAAI,CAACD,UAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;;YAElD,KAAK,CAAC,IAAI,CAACA,UAAQ,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;YAC5D,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE;gBAC1B,KAAK,CAAC,IAAI,CAACA,UAAQ;oBACf,CAAC,QAAQ,EAAE,qBAAqB,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;aACxD;SACJ,MAAM;YACH,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC5C,KAAK,CAAC,IAAI,CAACA,UAAQ,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;SAC/D;KACJ;;IAED,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;QACnB,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK;YAC5B,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;KAC3D;;IAED,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE;QACjE,KAAK,CAAC,IAAI,CAACC,aAAW,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;KACpD;;IAED,OAAOA,aAAW,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;CAC1C,CAAC;;AAEF,UAAU,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;;;;IAIxC,IAAI,CAAC,GAAGD,UAAQ;QACZ,CAAC,GAAG,CAAC,EAAE,CAACC,aAAW,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC5D,IAAI,CAAC,GAAGD,UAAQ;QACZ,CAAC,GAAG,CAAC,EAAE,CAACC,aAAW,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;;IAE5D,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC;IACnC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,GAAG,IAAI,IAAI,CAAC;;IAElC,IAAI,CAAC,GAAGD,UAAQ;QACZ,CAAC,GAAG,CAAC,EAAE,CAACC,aAAW,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC5D,IAAI,CAAC,GAAGD,UAAQ;QACZ,CAAC,GAAG,CAAC,EAAE,CAACC,aAAW,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;;IAE5D,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IAC/B,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;;IAE7B,IAAI,CAAC,GAAGD,UAAQ;QACZ,CAAC,GAAG,CAAC,EAAE,CAACC,aAAW,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;;IAE5D,OAAOD,UAAQ;QACX,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;CACzD,CAAC;;AAEF,UAAU,CAAC,QAAQ,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;;IAE3C,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;;;IAG1B,IAAI,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI;YACpC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;;IAE1C,IAAI,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,oBAAoB;QACpD,KAAK,CAAC,cAAc,CAAC;;;IAGzB,IAAI,IAAI,GAAGA,UAAQ;QACf,CAAC,KAAK,CAAC,KAAK,EAAE,EAAEN,OAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;IACxD,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IACxB,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;;;IAGvB,IAAI,KAAK,GAAGO,aAAW,CAAC,SAAS,CAAC;QAC9B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC;QAChC,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC;QACnC,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC;QAC1B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC;KAClC,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;;IAEnC,OAAOD,UAAQ,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;CAC3D,CAAC;;AAEF,UAAU,CAAC,SAAS,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;;IAE5C,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;;;IAG1B,IAAI,UAAU,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;;IAEvD,IAAI,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,oBAAoB;QACpD,KAAK,CAAC,cAAc,CAAC;;;IAGzB,IAAI,IAAI,GAAGA,UAAQ,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,EAAEN,OAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACzE,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IACxB,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;;;IAGvB,IAAI,KAAK,GAAGO,aAAW,CAAC,SAAS,CAAC;QAC9B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC;QAC/B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC;QAC1B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC;QACnC,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC;KACnC,EAAE,KAAK,EAAE,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;;IAEtC,OAAOD,UAAQ,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;CAC5D,CAAC;;AAEF,UAAU,CAAC,IAAI,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;;IAEvC,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;;;;IAI1B,IAAI,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;;IAE3E,IAAI,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,oBAAoB;QACpD,KAAK,CAAC,cAAc,CAAC;;IAEzB,IAAI,IAAI,GAAGA,UAAQ;QACf,CAAC,KAAK,CAAC,KAAK,EAAE,EAAEN,OAAK,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,EAAE,EAAE;QAClD,OAAO,CAAC,CAAC;IACb,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IACxB,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;;IAEvB,IAAI,GAAG,GAAG,SAAS,CAAC;IACpB,IAAI,KAAK,CAAC,EAAE,GAAGA,OAAK,CAAC,IAAI,CAAC,EAAE,EAAE;QAC1B,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;KAC/B;;;IAGD,IAAI,aAAa,GAAG,SAAS,GAAG,GAAG,GAAG,CAAC,CAAC;;IAExC,IAAI,WAAW,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,cAAc,CAAC;IACtE,IAAI,kBAAkB,GAAG,WAAW,GAAG,aAAa,GAAG,SAAS,CAAC;;;IAGjE,IAAI,KAAK,GAAGM,UAAQ,CAAC,CAAC,WAAW,CAAC,EAAE;QAChC,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,kBAAkB;mCAC5B,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;yBACtC,OAAO,CAAC,CAAC;;IAE9B,IAAI,UAAU,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,IAAI,SAAS,CAAC;;;IAG1D,IAAI,UAAU,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,GAAG,aAAa,EAAE;QACzD,aAAa;YACT,CAAC,aAAa,GAAG,UAAU,GAAG,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;KACrE;;;IAGD,IAAI,UAAU,GAAG,EAAE,KAAK,CAAC,MAAM,GAAG,aAAa,GAAG,SAAS,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5E,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,UAAU,GAAG,IAAI,CAAC;IACpC,KAAK,CAAC,MAAM,IAAI,UAAU,CAAC;IAC3B,KAAK,CAAC,KAAK,IAAI,UAAU,CAAC;;;;;;;IAO1B,IAAI,IAAI,CAAC;IACT,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,KAAK,CAAC,EAAE;QACzC,IAAI,GAAGA,UAAQ,EAAE,CAAC;KACrB,MAAM;QACH,IAAI,GAAGC,aAAW,CAAC,SAAS,CAAC;YACzB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC;YAC3B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,CAAC;YACnC,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC;YAC1B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC;SAClC,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;KACtC;;IAED,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;QACpB,OAAOD,UAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;KAC7D,MAAM;;;;QAIH,IAAI,UAAU,GAAG,OAAO,CAAC,SAAS,CAACN,OAAK,CAAC,YAAY,CAAC,CAAC;QACvD,IAAI,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QACrD,IAAI,QAAQ,GAAGM,UAAQ;YACnB,CAAC,KAAK,CAAC,KAAK,EAAE,EAAEN,OAAK,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC;YACzC,CAAC,IAAI,CAAC;YACN,UAAU,CAAC,CAAC;;;QAGhB,IAAI,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1D,IAAI,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;;;;QAIvD,IAAI,OAAO,GAAG,GAAG,IAAI,eAAe,GAAG,cAAc,CAAC,CAAC;;;QAGvD,IAAI,SAAS,GAAGO,aAAW,CAAC,SAAS;YACjC,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;YAChC,OAAO,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;;;QAGhC,IAAI,aAAa,GAAGD,UAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;;QAEpD,OAAOA,UAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC;YAC5B,CAAC,aAAa,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;KAC9C;CACJ,CAAC;;AAEF,UAAU,CAAC,MAAM,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;;;;IAIzC,IAAI,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK;YACrC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;;;IAGnD,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;IAC1B,IAAI,QAAQ,GAAGC,aAAW,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9D,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC,cAAc,CAAC;;;;IAI3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACnC,IAAI,GAAG,GAAGJ,OAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QACpD,IAAI,GAAG,GAAG,CAAC,EAAE;YACT,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI;kCACjC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;YACrD,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,QAAQ,CAAC;SACnC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE;;;;YAIlE,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;SACvD;KACJ;;IAED,OAAOI,aAAW,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;CAC1C,CAAC;;AAEF,UAAU,CAAC,OAAO,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;;;;IAI1C,IAAI,QAAQ,GAAG;QACX,SAAS,EAAEP,OAAK,CAAC,OAAO;QACxB,MAAM,EAAEA,OAAK,CAAC,IAAI;QAClB,QAAQ,EAAEA,OAAK,CAAC,MAAM;QACtB,cAAc,EAAEA,OAAK,CAAC,YAAY;KACrC,CAAC;;IAEF,IAAI,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;;;IAG7C,IAAI,KAAK,GAAG,eAAe;QACvB,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;;;IAG1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACnC,IAAI,GAAG,GAAGG,OAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;QAC5D,IAAI,GAAG,GAAG,CAAC,EAAE;YACT,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;SAChE,MAAM;;;YAGH,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;SACjD;KACJ;;IAED,OAAO,IAAII,aAAW,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;CAC9C,CAAC;;AAEF,UAAU,CAAC,IAAI,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IACvC,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;IAC5B,OAAO,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;CAC/D,CAAC;;AAEF,UAAU,CAAC,WAAW,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IAC9C,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC;;IAE9B,IAAI,KAAK,KAAK,GAAG,EAAE;;;QAGf,OAAOD,UAAQ,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;KACzC;;;IAGD,OAAO,SAAS,CAAC,UAAU;YACnB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI;YAC5C,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;CACjC,CAAC;;AAEF,UAAU,CAAC,SAAS,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;;IAE5C,IAAI,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;;IAErE,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,SAAS,GAAG,KAAK,CAAC;;;IAGtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACnC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;YACnB,SAAS,GAAG,IAAI,CAAC;SACpB,MAAM;YACH,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YACrD,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;SACrD;KACJ;;IAED,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;;;;;IAK1B,WAAW,IAAI,KAAK,CAAC,cAAc,CAAC;IACpC,UAAU,IAAI,KAAK,CAAC,cAAc,CAAC;;IAEnC,IAAI,SAAS,CAAC;IACd,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE;;QAE1B,SAAS,GAAG,iBAAiB,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;KACrD,MAAM;;;QAGH,SAAS,GAAG,SAAS,CAAC,cAAc;YAChC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO;YAClD,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;KAC9B;;IAED,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;;;IAGzB,IAAI,SAAS,EAAE;QACX,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/B,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;;gBAEnB,KAAK,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,cAAc;oBAC/B,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU;oBAChD,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;aAClD;SACJ;KACJ;;IAED,IAAI,UAAU,CAAC;;IAEf,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,GAAG,EAAE;QAC3B,UAAU,GAAG,iBAAiB,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;KACvD,MAAM;QACH,UAAU,GAAG,SAAS,CAAC,cAAc;YACjC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO;YACnD,KAAK,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;KAC/B;;IAED,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;;IAEvB,OAAOA,UAAQ;QACX,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;CAChD,CAAC;;AAEF,UAAU,CAAC,MAAM,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IACzC,IAAI,WAAW,CAAC;IAChB,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,GAAG,EAAE;QAC3B,WAAW,GAAG,iBAAiB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;KAChD,MAAM;QACH,WAAW,GAAG,SAAS,CAAC,UAAU;YAC9B,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO;YAC7B,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACpB,WAAW,CAAC,QAAQ,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;KACvE;IACD,OAAO,WAAW,CAAC;CACtB,CAAC;;AAEF,UAAU,CAAC,IAAI,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;;IAEvC,IAAI,IAAI,GAAGA,UAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IACnD,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;;;IAG1B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;QACnB,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;KACnD;;IAED,IAAI,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACpD,IAAI,MAAM,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;;;;IAItD,KAAK,IAAI,KAAK,CAAC,cAAc,CAAC;IAC9B,KAAK,IAAI,KAAK,CAAC,cAAc,CAAC;IAC9B,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC;;;IAG/B,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,KAAK,GAAG,IAAI,CAAC;IAC3C,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,MAAM,GAAG,IAAI,CAAC;IAC1C,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,GAAG,IAAI,CAAC;;;IAGjC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACnB,IAAI,CAAC,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;IAC7B,IAAI,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC;;IAEpB,OAAO,IAAI,CAAC;CACf,CAAC;;AAEF,UAAU,CAAC,IAAI,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;;IAEvC,IAAI,IAAI,GAAGA,UAAQ,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IACnD,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;;IAE1B,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE;QACvB,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;KAC3D;;IAED,SAAS,IAAI,KAAK,CAAC,cAAc,CAAC;;IAElC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,GAAG,IAAI,CAAC;;IAEzC,OAAO,IAAI,CAAC;CACf,CAAC;;AAEF,UAAU,CAAC,MAAM,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;;IAEzC,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;IAC5B,IAAI,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;;IAE1B,IAAI,WAAW,CAAC;IAChB,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;;;;;;;;;;QAUzB,IAAI,MAAM,GAAG,KAAK,CAAC;;QAEnB,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;;QAE1B,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;;QAExB,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;;;;QAIzB,WAAW,GAAG,UAAU;YACpB,MAAM,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;KAChC;;;IAGD,IAAI,IAAI,GAAG,UAAU;QACjB,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;;;;;;;IAO5C,IAAI,IAAI,CAAC;IACT,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE;;;QAGtB,IAAI,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;;QAEjC,IAAI,SAAS,GAAG,UAAU;YACtB,QAAQ,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;;QAEhD,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;;;;;KAKzB,MAAM;QACH,IAAI,GAAG,CAAC,CAAC;KACZ;;;IAGD,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG;QACpB,IAAI,CAAC,MAAM;QACX,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;;;IAG3B,IAAI,MAAM,GAAGC,aAAW,CAAC,UAAU;QAC/B,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;;;IAGzD,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;;;;;;IAMlB,IAAI,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,OAAO,GAAG,YAAY,GAAG,IAAI,CAAC;;IAEpE,IAAI,UAAU,GAAGD,UAAQ,CAAC,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAE;QACjDA,UAAQ,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;;IAE7B,UAAU,GAAGC,aAAW,CAAC,SAAS,CAAC;QAC/B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC;QAC1B,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC;QAChC,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC;KACnC,EAAE,eAAe,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;;;;;IAKnC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;;IAE1D,IAAI,UAAU,GAAGD,UAAQ,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,CAAC;;IAErE,IAAI,WAAW,EAAE;;;QAGb,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;;;;QAIrC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;;;QAGrE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;;QAEhC,OAAO,WAAW,CAAC;KACtB,MAAM;QACH,OAAO,UAAU,CAAC;KACrB;CACJ,CAAC;;AAEF,UAAU,CAAC,OAAO,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IAC1C,IAAI,QAAQ,GAAG,eAAe;QAC1B,KAAK,CAAC,KAAK,CAAC,KAAK;QACjB,OAAO,CAAC,WAAW,EAAE;QACrB,KAAK;KACR,CAAC;;;;IAIF,OAAO,IAAIC,aAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;CACjD,CAAC;;AAEF,UAAU,CAAC,MAAM,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IACzC,IAAI,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;;IAEjE,OAAOD,UAAQ,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;CAC5D,CAAC;;;;;;;AAOF,IAAI,UAAU,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IACtC,IAAI,CAAC,KAAK,EAAE;QACR,OAAOA,UAAQ,EAAE,CAAC;KACrB;;IAED,IAAI,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;;QAExB,IAAI,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACvD,IAAI,UAAU,CAAC;;;;QAIf,IAAI,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,WAAW,EAAE;YACvC,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc;oBACjC,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC;;YAE3C,SAAS,CAAC,MAAM,IAAI,UAAU,CAAC;YAC/B,SAAS,CAAC,KAAK,IAAI,UAAU,CAAC;SACjC;;;;QAID,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,UAAU,EAAE;YACrC,UAAU,GAAGC,aAAW,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC;oBAC/CA,aAAW,CAAC,gBAAgB,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;;YAEzD,SAAS,CAAC,MAAM,IAAI,UAAU,CAAC;YAC/B,SAAS,CAAC,KAAK,IAAI,UAAU,CAAC;SACjC;;QAED,OAAO,SAAS,CAAC;KACpB,MAAM;QACH,MAAM,IAAIb,YAAU;YAChB,8BAA8B,GAAG,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;KAC1D;CACJ,CAAC;;;;;;AAMF,IAAIe,WAAS,GAAG,SAAS,IAAI,EAAE,OAAO,EAAE;;;IAGpC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;;;IAGxC,IAAI,UAAU,GAAG,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACtD,IAAI,IAAI,GAAGH,UAAQ,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;;;;;IAKxE,IAAI,QAAQ,GAAGA,UAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACnC,IAAI,WAAW,GAAGA,UAAQ,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;;IAEhD,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IAC3C,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC;;;;IAI7D,WAAW,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;;;IAGrD,IAAI,QAAQ,GAAGA,UAAQ,CAAC,CAAC,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;;IAEvE,QAAQ,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;;IAE7C,OAAO,QAAQ,CAAC;CACnB,CAAC;;AAEF,eAAc,GAAGG,WAAS,CAAC;;AChiD3B;;;;;;;;;;AAUA,IAAIN,OAAK,GAAGlD,OAAkB,CAAC;;;;;;;AAO/B,SAAS,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE;IAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;IACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,IAAI,EAAE,CAAC;CAClC;;;;;;AAMD,QAAQ,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,IAAI,EAAE,KAAK,EAAE;IACpD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;CACjC,CAAC;;;;;AAKF,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,WAAW;;;IACnC,IAAI,IAAI,GAAG,QAAQ,CAAC,eAAe;QAC/B,oCAAoC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;;IAErD,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;QAC9B,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAACE,MAAI,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE;YAC7D,IAAI,CAAC,YAAY,CAAC,IAAI,EAAEA,MAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;SAClD;KACJ;;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC3C,IAAI,CAAC,WAAW,CAACA,MAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;KAC/C;;IAED,OAAO,IAAI,CAAC;CACf,CAAC;;;;;AAKF,QAAQ,CAAC,SAAS,CAAC,QAAQ,GAAG,WAAW;;;IACrC,IAAI,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;;;IAG7B,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;QAC9B,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAACA,MAAI,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE;YAC7D,MAAM,IAAI,GAAG,GAAG,IAAI,GAAG,KAAK,CAAC;YAC7B,MAAM,IAAIgD,OAAK,CAAC,MAAM,CAAChD,MAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9C,MAAM,IAAI,IAAI,CAAC;SAClB;KACJ;;IAED,MAAM,IAAI,GAAG,CAAC;;IAEd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC3C,MAAM,IAAIA,MAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;KACzC;;IAED,MAAM,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;;IAEjC,OAAO,MAAM,CAAC;CACjB,CAAC;;;;;AAKF,SAAS,QAAQ,CAAC,IAAI,EAAE;IACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;CACpB;;;;;AAKD,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,WAAW;IACnC,OAAO,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CAC7C,CAAC;;;;;AAKF,QAAQ,CAAC,SAAS,CAAC,QAAQ,GAAG,WAAW;IACrC,OAAOgD,OAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;CAClC,CAAC;;AAEF,gBAAc,GAAG;IACb,QAAQ,EAAE,QAAQ;IAClB,QAAQ,EAAE,QAAQ;CACrB,CAAC;;ACrGF;;;;;;AAMA,IAAII,aAAW,GAAGtD,aAAwB,CAAC;AAC3C,IAAIoD,aAAW,GAAGhD,aAAwB,CAAC;AAC3C,IAAI,UAAU,GAAGC,YAAuB,CAAC;AACzC,IAAIoC,YAAU,GAAGhC,YAAuB,CAAC;AACzC,IAAI8C,SAAO,GAAG7C,SAAoB,CAAC;AACnC,IAAIwC,OAAK,GAAGvC,OAAkB,CAAC;;AAE/B,IAAI0C,UAAQ,GAAGC,aAAW,CAAC,QAAQ,CAAC;AACpC,IAAIG,SAAO,GAAGH,aAAW,CAAC,OAAO,CAAC;;;;;;AAMlC,IAAI,QAAQ,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE;IAChC,IAAIC,SAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAIA,SAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE;QACpD,IAAI,GAAGA,SAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;KACtC;;IAED,OAAO,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;CACxC,CAAC;;;;;AAKF,IAAI,UAAU,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IACtC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IACxB,IAAI,CAAC,IAAI,EAAE;QACP,OAAO,IAAI,CAAC;KACf;;IAED,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACtB,IAAI,IAAI,KAAK,QAAQ,EAAE;QACnB,OAAO,QAAQ,CAAC;KACnB;;IAED,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IACxB,IAAIL,OAAK,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,KAAK,CAAC,EAAE;QAC/C,OAAO,IAAI,CAAC;KACf;;IAED,IAAIK,SAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAIA,SAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE;QACtD,KAAK,GAAGA,SAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;KACxC;;IAED,IAAI,QAAQ,GAAGE,SAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;IACtC,IAAIL,aAAW,CAAC,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE;QAClD,OAAOK,SAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;KACxC;;IAED,OAAO,IAAI,CAAC;CACf,CAAC;;;;;;AAMF,IAAIC,YAAU,GAAG,EAAE,CAAC;;AAEpBA,YAAU,CAAC,OAAO,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IAC1C,IAAI,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ;QAC9B,IAAI;QACJ,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;IAEzC,IAAI,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACzC,IAAI,OAAO,EAAE;QACT,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;KAC7C;IACD,OAAO,IAAI,CAAC;CACf,CAAC;;AAEFA,YAAU,CAAC,OAAO,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IAC1C,IAAI,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;;IAE7C,IAAI,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,QAAQ,CAAC;;IAErD,IAAI,IAAI,CAAC;IACT,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;;;QAG3B,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7C,IAAI,OAAO,CAAC,IAAI,EAAE;YACd,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;SAC7C;KACJ,MAAM;QACH,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;KAC7C;;IAED,OAAO,IAAI,CAAC;CACf,CAAC;;AAEFA,YAAU,CAAC,GAAG,GAAG,SAAS,KAAK,EAAE;IAC7B,IAAI,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ;QAC9B,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;IAE/C,OAAO,IAAI,CAAC;CACf,CAAC;;AAEFA,YAAU,CAAC,GAAG,GAAG,SAAS,KAAK,EAAE;IAC7B,IAAI,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ;QAC9B,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;IAE/C,OAAO,IAAI,CAAC;CACf,CAAC;;AAEFA,YAAU,CAAC,IAAI,GAAG,SAAS,KAAK,EAAE;IAC9B,IAAI,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ;QAC9B,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;IAE/C,OAAO,IAAI,CAAC;CACf,CAAC;;AAEFA,YAAU,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE;IAC/B,IAAI,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ;QAC9B,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;IAE/C,OAAO,IAAI,CAAC;CACf,CAAC;;AAEFA,YAAU,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE;IAC/B,IAAI,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ;QAC9B,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;IAE/C,OAAO,IAAI,CAAC;CACf,CAAC;;AAEFA,YAAU,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE;IAC/B,IAAI,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ;QAC9B,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;IAE/C,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;;IAEvC,OAAO,IAAI,CAAC;CACf,CAAC;;AAEFA,YAAU,CAAC,QAAQ,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IAC3C,IAAI,KAAK,GAAGC,iBAAe,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;;IAElD,IAAI,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;;IAElD,OAAO,IAAI,CAAC;CACf,CAAC;;AAEFD,YAAU,CAAC,IAAI,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IACvC,IAAI,KAAK,GAAGC,iBAAe,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;;IAEvD,IAAI,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;;IAEnD,OAAO,IAAI,CAAC;CACf,CAAC;;AAEFD,YAAU,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IACxC,IAAI,KAAK,GAAGC,iBAAe,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;;IAExD,IAAI,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;;IAEpD,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;;IAElD,OAAO,IAAI,CAAC;CACf,CAAC;;AAEFD,YAAU,CAAC,MAAM,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IACzC,IAAI,QAAQ,GAAG,CAACE,YAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;;IAEvD,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;QACjB,QAAQ,CAAC,IAAI,CAACA,YAAU,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;KACvD;;IAED,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;QACjB,QAAQ,CAAC,IAAI,CAACA,YAAU,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;KACvD;;IAED,IAAI,QAAQ,CAAC;IACb,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;QAClB,QAAQ,GAAG,MAAM,CAAC;KACrB,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE;QACzB,QAAQ,GAAG,MAAM,CAAC;KACrB,MAAM;QACH,QAAQ,GAAG,SAAS,CAAC;KACxB;;IAED,IAAI,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;;IAEvD,OAAO,IAAI,CAAC;CACf,CAAC;;AAEFF,YAAU,CAAC,OAAO,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IAC1C,IAAI,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ;QAC9B,OAAO;QACP,CAACE,YAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC;YACnCA,YAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;;IAEjD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE;QACzB,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;KAC7C;;IAED,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,EAAE;QACjE,IAAI,UAAU,GAAG,EAAE,CAAC;;QAEpB,IAAI,KAAK,CAAC,KAAK,CAAC,SAAS,IAAI,IAAI,EAAE;YAC/B,IAAI,MAAM,GAAG,IAAI,UAAU,CAAC,QAAQ;gBAChC,IAAI,EAAE,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;;YAE5D,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;;YAErC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC3B;;QAED,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;QAEtB,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,IAAI,IAAI,EAAE;YAChC,IAAI,OAAO,GAAG,IAAI,UAAU,CAAC,QAAQ;gBACjC,IAAI,EAAE,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;;YAE7D,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;;YAEtC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAC5B;;QAED,IAAI,SAAS,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;;QAE5D,OAAO,SAAS,CAAC;KACpB;;IAED,OAAO,IAAI,CAAC;CACf,CAAC;;AAEFF,YAAU,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IACxC,OAAO,IAAI,UAAU,CAAC,QAAQ;QAC1B,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,EAAE;YACzC,OAAO,IAAI,UAAU,CAAC,QAAQ;gBAC1B,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE;oBAC1B,OAAO,IAAI,UAAU,CAAC,QAAQ;wBAC1B,KAAK,EAAE,CAACE,YAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;iBAC3C,CAAC,CAAC,CAAC;SACX,CAAC,CAAC,CAAC;CACX,CAAC;;AAEFF,YAAU,CAAC,IAAI,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IACvC,IAAI,IAAI,CAAC;IACT,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;QACnB,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ;YAC1B,OAAO,EAAE;gBACLE,YAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC;gBACrCA,YAAU,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC;aACzC,CAAC,CAAC;KACV,MAAM;QACH,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ;YAC1B,OAAO,EAAE,CAACA,YAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;KACzD;;IAED,OAAO,IAAI,CAAC;CACf,CAAC;;AAEFF,YAAU,CAAC,SAAS,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IAC5C,IAAI,KAAK,GAAGC,iBAAe,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;;IAEvD,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE;QAC1B,IAAI,QAAQ,GAAG,IAAI,UAAU,CAAC,QAAQ;YAClC,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;QAEpD,QAAQ,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;;QAEvC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;KAC3B;;IAED,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,GAAG,EAAE;QAC3B,IAAI,SAAS,GAAG,IAAI,UAAU,CAAC,QAAQ;YACnC,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;QAErD,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;;QAExC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACzB;;IAED,IAAI,SAAS,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;;IAEvD,OAAO,SAAS,CAAC;CACpB,CAAC;;AAEFD,YAAU,CAAC,MAAM,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IACzC,IAAI,UAAU,GAAG,IAAI,UAAU,CAAC,QAAQ;QACpC,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACtD,UAAU,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACzC,OAAO,UAAU,CAAC;CACrB,CAAC;;AAEFA,YAAU,CAAC,MAAM,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IACzC,IAAI,UAAU,GAAG,IAAI,UAAU,CAAC,QAAQ;QACpC,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;IAEtD,IAAI,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ;QAC9B,OAAO;QACP,CAACE,YAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC;YAClC,UAAU,CAAC,CAAC,CAAC;;IAErB,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;;IAEpC,OAAO,IAAI,CAAC;CACf,CAAC;;AAEFF,YAAU,CAAC,OAAO,GAAG,SAAS,KAAK,EAAE;IACjC,IAAI,IAAI,CAAC;;IAET,IAAI,KAAK,CAAC,KAAK,KAAK,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS;QAClD,KAAK,CAAC,KAAK,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,KAAK,GAAG,EAAE;QAC5C,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ;YAC1B,OAAO,EAAE,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KACrD,MAAM;QACH,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;;QAEzC,IAAI,CAAC,YAAY;YACb,OAAO,EAAEJ,aAAW,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;KAChE;;IAED,OAAO,IAAI,CAAC;CACf,CAAC;;AAEFI,YAAU,CAAC,EAAE,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IACrC,IAAI,IAAI,CAAC;;;;IAIT,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE;;QAEpB,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ;YAC1B,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACvD,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;;QAE1B,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ;YAC1B,IAAI,EAAEC,iBAAe,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;KAC1D,MAAM;;;;;QAKH,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ;YAC1B,IAAI,EAAE,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACnE;;IAED,OAAO,IAAI,CAAC;CACf,CAAC;;AAEFD,YAAU,CAAC,GAAG,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IACtC,IAAI,KAAK,GAAG,EAAE,CAAC;;IAEf,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE;QACjE,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,QAAQ;YAC9B,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;KAC3C;IACD,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,KAAK,EAAE;QAC/B,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,QAAQ;YAC9B,IAAI,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;KAC7C;IACD,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;QACnB,IAAI,KAAK,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC9C,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC1C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,KAAK,GAAG,KAAK,CAAC,MAAM,CAACC,iBAAe,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;KACrE;IACD,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE;QACjE,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,QAAQ;YAC9B,IAAI,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;KAC3C;;IAED,OAAO,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;CAC/C,CAAC;;AAEFD,YAAU,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE;IAC/B,IAAI,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ;QAC9B,OAAO,EAAE,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;;IAEjD,OAAO,IAAI,CAAC;CACf,CAAC;;AAEFA,YAAU,CAAC,IAAI,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IACvC,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;IAC5B,OAAOE,YAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;CAC/D,CAAC;;AAEFF,YAAU,CAAC,WAAW,GAAG,SAAS,KAAK,EAAE;IACrC,IAAI,QAAQ,GAAG,EAAE,CAAC;;IAElB,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,KAAK,GAAG,EAAE;QAC3B,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;KAC1D;;IAED,IAAI,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;;IAEnD,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,OAAO;QAC9B,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,QAAQ,EAAE;;;QAGjC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KACtC,MAAM;;;QAGH,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;KACvC;;IAED,OAAO,IAAI,CAAC;CACf,CAAC;;AAEFA,YAAU,CAAC,OAAO,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IAC1C,IAAI,KAAK,GAAGC,iBAAe,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;;IAExD,IAAI,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;;IAEpD,IAAI,eAAe,GAAG;QAClB,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC;QACxB,MAAM,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC;QACtB,QAAQ,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC;QACxB,cAAc,EAAE,CAAC,GAAG,EAAE,OAAO,CAAC;KACjC,CAAC;;IAEF,IAAI,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;;IAE9C,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;;IAE3C,OAAO,IAAI,CAAC;CACf,CAAC;;AAEFD,YAAU,CAAC,MAAM,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IACzC,IAAI,KAAK,GAAGC,iBAAe,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;;IAExD,IAAI,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;;;;;;;IAOpD,IAAI,CAAC,YAAY;QACb,UAAU,EAAEL,aAAW,CAAC,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;;IAEvE,OAAO,IAAI,CAAC;CACf,CAAC;;AAEFI,YAAU,CAAC,QAAQ,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IAC3C,IAAI,QAAQ,GAAG,IAAI,UAAU,CAAC,QAAQ;QAClC,IAAI,EAAE,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC/C,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;;IAE1C,IAAI,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ;QAC9B,OAAO;QACP,CAACE,YAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC;YAClC,QAAQ,CAAC,CAAC,CAAC;IACnB,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;;IAEpC,OAAO,IAAI,CAAC;CACf,CAAC;;AAEFF,YAAU,CAAC,SAAS,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IAC5C,IAAI,QAAQ,GAAG,IAAI,UAAU,CAAC,QAAQ;QAClC,IAAI,EAAE,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC/C,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;;IAE1C,IAAI,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ;QAC9B,QAAQ;QACR,CAACE,YAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC;YAClC,QAAQ,CAAC,CAAC,CAAC;IACnB,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;;IAEzC,OAAO,IAAI,CAAC;CACf,CAAC;;AAEFF,YAAU,CAAC,IAAI,GAAG,SAAS,KAAK,EAAE;;;IAG9B,IAAI,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;;IAE3C,OAAO,IAAI,CAAC;CACf,CAAC;;AAEFA,YAAU,CAAC,IAAI,GAAG,SAAS,KAAK,EAAE;;IAE9B,IAAI,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;;IAE3C,OAAO,IAAI,CAAC;CACf,CAAC;;AAEFA,YAAU,CAAC,IAAI,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IACvC,IAAI,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ;QAC9B,SAAS,EAAE,CAACE,YAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;;IAExD,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACvC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;;IAElC,OAAO,IAAI,CAAC;CACf,CAAC;;AAEFF,YAAU,CAAC,IAAI,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IACvC,IAAI,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ;QAC9B,SAAS,EAAE,CAACE,YAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;;IAExD,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;;IAElC,OAAO,IAAI,CAAC;CACf,CAAC;;AAEFF,YAAU,CAAC,OAAO,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IAC1C,IAAI,KAAK,GAAGC,iBAAe,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACxD,OAAO,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;CACrD,CAAC;;AAEFD,YAAU,CAAC,MAAM,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IACzC,IAAI,KAAK,GAAGC,iBAAe,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACxD,OAAO,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;CACnD,CAAC;;;;;;;AAOF,IAAIA,iBAAe,GAAG,SAAS,UAAU,EAAE,OAAO,EAAE;IAChD,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACxC,IAAI,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,CAAC,IAAI,CAACC,YAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;KAC3C;IACD,OAAO,MAAM,CAAC;CACjB,CAAC;;;;;;AAMF,IAAIA,YAAU,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IACtC,IAAI,CAAC,KAAK,EAAE;QACR,OAAO,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;KAC1C;;IAED,IAAIF,YAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;;QAExB,OAAOA,YAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;KACjD,MAAM;QACH,MAAM,IAAIjB,YAAU;YAChB,8BAA8B,GAAG,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC;KAC1D;CACJ,CAAC;;;;;;;;;;AAUF,IAAIoB,aAAW,GAAG,SAAS,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE;IACrD,IAAI,UAAU,GAAGF,iBAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;;;;IAIhD,IAAI,OAAO,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;;;IAG1D,IAAI,UAAU,GAAG,IAAI,UAAU,CAAC,QAAQ;QACpC,YAAY,EAAE,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;;IAE5D,UAAU,CAAC,YAAY,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;;IAEzD,IAAI,SAAS,GAAG,IAAI,UAAU,CAAC,QAAQ;QACnC,WAAW,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;;IAExC,IAAI,IAAI,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;;;IAGxD,OAAON,UAAQ,CAAC,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;CAC7C,CAAC;;AAEF,iBAAc,GAAGQ,aAAW,CAAC;;ACpkB7B;;;;;;;;;;;;;;;;AAgBA,SAASC,SAAO,CAAC,IAAI,EAAE;IACnB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACxB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;;IAEtB,IAAI,IAAI,CAAC,WAAW,KAAK,SAAS,EAAE;QAChC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC;KACjC,MAAM;QACH,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;KACvC;;IAED,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE;QAC/B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC;KAC/B,MAAM;QACH,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;KACrC;CACJ;;;;;;AAMDA,SAAO,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,SAAS,EAAE;IAC3C,IAAI,IAAI,GAAG;QACP,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,WAAW,EAAE,IAAI,CAAC,KAAK;QACvB,UAAU,EAAE,IAAI,CAAC,IAAI;QACrB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,IAAI,EAAE,IAAI,CAAC,IAAI;KAClB,CAAC;;IAEF,KAAK,IAAI,GAAG,IAAI,SAAS,EAAE;QACvB,IAAI,SAAS,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;YAC/B,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;SAC9B;KACJ;;IAED,OAAO,IAAIA,SAAO,CAAC,IAAI,CAAC,CAAC;CAC5B,CAAC;;;;;AAKFA,SAAO,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,KAAK,EAAE;IAC1C,OAAO,IAAI,CAAC,MAAM,CAAC;QACf,KAAK,EAAE,KAAK;KACf,CAAC,CAAC;CACN,CAAC;;;;;AAKFA,SAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,IAAI,EAAE;IACxC,OAAO,IAAI,CAAC,MAAM,CAAC;QACf,IAAI,EAAE,IAAI;KACb,CAAC,CAAC;CACN,CAAC;;;;;AAKFA,SAAO,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,KAAK,EAAE;IAC1C,OAAO,IAAI,CAAC,MAAM,CAAC;QACf,KAAK,EAAE,KAAK;KACf,CAAC,CAAC;CACN,CAAC;;;;;AAKFA,SAAO,CAAC,SAAS,CAAC,WAAW,GAAG,WAAW;IACvC,OAAO,IAAI,CAAC,MAAM,CAAC;QACf,OAAO,EAAE,IAAI;KAChB,CAAC,CAAC;CACN,CAAC;;;;;AAKFA,SAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,IAAI,EAAE;IACxC,OAAO,IAAI,CAAC,MAAM,CAAC;QACf,IAAI,EAAE,IAAI,IAAI,IAAI,CAAC,IAAI;KAC1B,CAAC,CAAC;CACN,CAAC;;;;;;AAMFA,SAAO,CAAC,SAAS,CAAC,KAAK,GAAG,WAAW;IACjC,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;CAC1B,CAAC;;;;;;AAMF,IAAI,QAAQ,GAAG;IACX,YAAY,EAAE,SAAS;IACvB,cAAc,EAAE,SAAS;IACzB,YAAY,EAAE,SAAS;IACvB,WAAW,EAAE,SAAS;IACtB,aAAa,EAAE,SAAS;IACxB,YAAY,EAAE,MAAM;IACpB,cAAc,EAAE,SAAS;IACzB,aAAa,EAAE,SAAS;IACxB,aAAa,EAAE,SAAS;IACxB,aAAa,EAAE,SAAS;IACxB,aAAa,EAAE,SAAS;IACxB,aAAa,EAAE,SAAS;IACxB,aAAa,EAAE,SAAS;IACxB,aAAa,EAAE,SAAS;IACxB,aAAa,EAAE,SAAS;IACxB,aAAa,EAAE,SAAS;IACxB,aAAa,EAAE,SAAS;IACxB,cAAc,EAAE,SAAS;IACzB,cAAc,EAAE,SAAS;IACzB,cAAc,EAAE,SAAS;IACzB,cAAc,EAAE,SAAS;IACzB,cAAc,EAAE,SAAS;IACzB,aAAa,EAAE,SAAS;IACxB,aAAa,EAAE,SAAS;IACxB,aAAa,EAAE,SAAS;IACxB,aAAa,EAAE,SAAS;IACxB,aAAa,EAAE,SAAS;IACxB,YAAY,EAAE,SAAS;IACvB,YAAY,EAAE,SAAS;IACvB,YAAY,EAAE,SAAS;IACvB,YAAY,EAAE,SAAS;IACvB,YAAY,EAAE,SAAS;IACvB,eAAe,EAAE,SAAS;IAC1B,eAAe,EAAE,SAAS;IAC1B,eAAe,EAAE,SAAS;IAC1B,eAAe,EAAE,SAAS;IAC1B,eAAe,EAAE,SAAS;IAC1B,eAAe,EAAE,SAAS;IAC1B,eAAe,EAAE,SAAS;IAC1B,eAAe,EAAE,SAAS;IAC1B,eAAe,EAAE,SAAS;IAC1B,eAAe,EAAE,SAAS;IAC1B,aAAa,EAAE,SAAS;IACxB,aAAa,EAAE,SAAS;IACxB,aAAa,EAAE,SAAS;IACxB,aAAa,EAAE,SAAS;IACxB,aAAa,EAAE,SAAS;IACxB,aAAa,EAAE,SAAS;IACxB,aAAa,EAAE,SAAS;IACxB,aAAa,EAAE,SAAS;IACxB,aAAa,EAAE,SAAS;IACxB,aAAa,EAAE,SAAS;IACxB,aAAa,EAAE,SAAS;IACxB,aAAa,EAAE,SAAS;IACxB,cAAc,EAAE,SAAS;IACzB,eAAe,EAAE,SAAS;CAC7B,CAAC;;;;;;AAMFA,SAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,WAAW;IACpC,IAAI,IAAI,CAAC,OAAO,EAAE;QACd,OAAO,aAAa,CAAC;KACxB,MAAM;QACH,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC;KAC7C;CACJ,CAAC;;AAEF,aAAc,GAAGA,SAAO,CAAC;;AC5LzB,IAAI,SAAS,GAAG9D,WAAsB,CAAC;AACvC,IAAI,WAAW,GAAGI,aAAwB,CAAC;AAC3C,IAAI,WAAW,GAAGC,aAAwB,CAAC;AAC3C,IAAI,OAAO,GAAGI,SAAoB,CAAC;AACnC,IAAIiC,UAAQ,GAAGhC,UAAqB,CAAC;AACrC,IAAI,KAAK,GAAGC,OAAkB,CAAC;;AAE/B,IAAI,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;;AAEpC,IAAIoD,WAAS,GAAG,SAAS,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE;IACjD,QAAQ,GAAG,QAAQ,IAAI,IAAIrB,UAAQ,CAAC,EAAE,CAAC,CAAC;;IAExC,IAAI,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC;IAC5B,IAAI,QAAQ,CAAC,WAAW,EAAE;QACtB,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC;KAC9B;;;IAGD,IAAI,OAAO,GAAG,IAAI,OAAO,CAAC;QACtB,KAAK,EAAE,UAAU;QACjB,IAAI,EAAE,OAAO;KAChB,CAAC,CAAC;;;;IAIH,IAAI,UAAU,GAAG,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IACxD,IAAI,QAAQ,GAAG,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;;IAExC,IAAI,SAAS,GAAG,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE;QAChC,UAAU,EAAE,QAAQ;KACvB,CAAC,CAAC;;IAEH,IAAI,QAAQ,CAAC,WAAW,EAAE;QACtB,OAAO,QAAQ,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;KACnD,MAAM;QACH,OAAO,SAAS,CAAC;KACpB;CACJ,CAAC;;AAEF,eAAc,GAAGqB,WAAS,CAAC;;ACvC3B;;;;;;;;;;;;;;;;;AAiBA,SAASC,WAAS,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE;IACzD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,IAAI,UAAU,KAAK,CAAC,SAAS,IAAI,SAAS,CAAC,KAAK,KAAK,UAAU,CAAC,KAAK,CAAC,EAAE;QACpE,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,GAAG,GAAG,CAAC,SAAS,IAAI,UAAU,EAAE,GAAG,CAAC;KAC5C;CACJ;;AAED,eAAc,GAAG;IACb,SAAS,EAAEA,WAAS;CACvB,CAAC;;;AC9BF,IAAI,KAAK,GAAGhE,OAAkB,CAAC;AAC/B,IAAI,UAAU,GAAGI,YAAuB,CAAC;AACzC,IAAI,SAAS,GAAGC,WAAsB,CAAC;AACvC,IAAI,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+EpC,SAAS,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE;IAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC3B,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;KACnB;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC3B,KAAK,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;KAC9B;;IAED,IAAI,IAAI,GAAG;QACP,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,UAAU,EAAE,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,GAAG,KAAK,CAAC,UAAU;QACnE,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa;QACpC,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,CAAC;QAC3C,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK;QACpB,OAAO,EAAE,OAAO;KACnB,CAAC;IACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;QACnC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;KACnC;CACJ;;;;AAID,IAAI,WAAW,GAAG,SAAS,GAAG,EAAE;IAC5B,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,EAAE;QACzB,OAAO,GAAG,CAAC,KAAK,CAAC;KACpB,MAAM;QACH,OAAO,CAAC,GAAG,CAAC,CAAC;KAChB;CACJ,CAAC;;;AAGF,cAAc,CAAC,QAAQ,EAAE;IACrB,OAAO,EAAE,CAAC;IACV,eAAe,EAAE,CAAC;CACrB,EAAE,SAAS,OAAO,EAAE,IAAI,EAAE;IACvB,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACnB,OAAO;QACH,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,IAAI;QACV,KAAK,EAAE,KAAK;KACf,CAAC;CACL,CAAC,CAAC;;;AAGH,IAAI,kBAAkB,GAAG;IACrB,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ;IAC/D,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ;IACpE,UAAU,EAAE,QAAQ;CACvB,CAAC;;AAEF,cAAc,CAAC;IACX,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc;IAC5D,UAAU,EAAE,UAAU;CACzB,EAAE;IACC,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,CAAC,MAAM,CAAC;IAClB,UAAU,EAAE,CAAC;IACb,aAAa,EAAE,IAAI;CACtB,EAAE,SAAS,OAAO,EAAE,IAAI,EAAE;IACvB,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACnB,OAAO;QACH,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC;QACvB,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,QAAQ,CAAC;KAC9C,CAAC;CACL,CAAC,CAAC;;;AAGH,cAAc,CAAC,SAAS,EAAE;IACtB,OAAO,EAAE,CAAC;IACV,aAAa,EAAE,IAAI;IACnB,UAAU,EAAE,CAAC;IACb,QAAQ,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;CAClC,EAAE,SAAS,OAAO,EAAE,IAAI,EAAE;IACvB,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACnB,OAAO;QACH,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC;KAC3B,CAAC;CACL,CAAC,CAAC;;;AAGH,cAAc,CAAC,YAAY,EAAE;IACzB,OAAO,EAAE,CAAC;CACb,EAAE,SAAS,OAAO,EAAE,IAAI,EAAE;IACvB,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACnB,OAAO;QACH,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,IAAI;KACb,CAAC;CACL,CAAC,CAAC;;;AAGH,cAAc,CAAC,aAAa,EAAE;IAC1B,OAAO,EAAE,CAAC;CACb,EAAE,SAAS,OAAO,EAAE,IAAI,EAAE;IACvB,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACnB,OAAO;QACH,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,IAAI;KACb,CAAC;CACL,CAAC,CAAC;;;AAGH,cAAc,CAAC,QAAQ,EAAE;IACrB,OAAO,EAAE,CAAC;IACV,eAAe,EAAE,CAAC;IAClB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;CACrC,EAAE,SAAS,OAAO,EAAE,IAAI,EAAE;IACvB,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,IAAI,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACrB,OAAO;QACH,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,KAAK,IAAI,KAAK,CAAC,KAAK;QAC3B,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,MAAM,CAAC,KAAK;KACvB,CAAC;CACL,CAAC,CAAC;;;;AAIH,cAAc,CAAC,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE;IAClC,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,CAAC,MAAM,CAAC;CACrB,EAAE,SAAS,OAAO,EAAE,IAAI,EAAE;IACvB,OAAO;QACH,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK;KAC3B,CAAC;CACL,CAAC,CAAC;;;AAGH,cAAc,CAAC,SAAS,EAAE;IACtB,OAAO,EAAE,CAAC;CACb,EAAE,SAAS,OAAO,EAAE;IACjB,OAAO;QACH,IAAI,EAAE,OAAO;KAChB,CAAC;CACL,CAAC,CAAC;;AAEH,cAAc,CAAC,WAAW,EAAE;IACxB,OAAO,EAAE,CAAC;CACb,EAAE,SAAS,OAAO,EAAE,IAAI,EAAE;IACvB,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACnB,OAAO;QACH,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC;KAC3B,CAAC;CACL,CAAC,CAAC;;;AAGH,cAAc,CAAC;IACX,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY;IACnD,aAAa,EAAE,aAAa,EAAE,aAAa;CAC9C,EAAE;IACC,OAAO,EAAE,CAAC;CACb,EAAE,SAAS,OAAO,EAAE,IAAI,EAAE;IACvB,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACnB,OAAO;QACH,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QACxC,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC;KAC3B,CAAC;CACL,CAAC,CAAC;;;AAGH,cAAc,CAAC,YAAY,EAAE;IACzB,OAAO,EAAE,CAAC;CACb,EAAE,SAAS,OAAO,EAAE,IAAI,EAAE;IACvB,IAAI,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,IAAI,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;;IAErB,IAAI,QAAQ,GAAG,IAAI,SAAS,CAAC,IAAI,EAAE;QAC/B,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,IAAI;QACZ,kBAAkB,EAAE,IAAI;QACxB,MAAM,EAAE,KAAK;QACb,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC;KAC7B,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;;IAEhB,IAAI,MAAM,GAAG,IAAI,SAAS,CAAC,QAAQ,EAAE;QACjC,IAAI,EAAE,QAAQ;QACd,GAAG,EAAE,GAAG;QACR,GAAG,EAAE,IAAI;KACZ,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;;IAEb,OAAO;QACH,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,MAAM;QACd,KAAK,EAAE,CAAC,MAAM,CAAC;KAClB,CAAC;CACL,CAAC,CAAC;;;AAGH,cAAc,CAAC,QAAQ,EAAE;IACrB,OAAO,EAAE,CAAC;CACb,EAAE,SAAS,OAAO,EAAE,IAAI,EAAE;IACvB,OAAO;QACH,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,MAAM;QACf,KAAK,EAAE,IAAI;KACd,CAAC;CACL,CAAC,CAAC;;AAEH,cAAc,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE;IACzC,OAAO,EAAE,CAAC;CACb,EAAE,SAAS,OAAO,EAAE,IAAI,EAAE;IACvB,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACnB,OAAO;QACH,IAAI,EAAE,KAAK;QACX,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QACnC,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC;KAC3B,CAAC;CACL,CAAC,CAAC;;;AAGH,IAAI,cAAc,GAAG;IACjB,QAAQ,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,EAAE,CAAC,CAAC;IACxC,QAAQ,GAAG,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,EAAE,CAAC,CAAC;IACxC,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,EAAE,CAAC,CAAC;IACxC,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,EAAE,CAAC,CAAC;IACxC,QAAQ,GAAG,CAAC,MAAM,EAAE,QAAQ,IAAI,IAAI,EAAE,CAAC,CAAC;IACxC,QAAQ,GAAG,CAAC,MAAM,EAAE,QAAQ,IAAI,IAAI,EAAE,CAAC,CAAC;IACxC,SAAS,EAAE,CAAC,MAAM,EAAE,QAAQ,IAAI,IAAI,EAAE,CAAC,CAAC;IACxC,SAAS,EAAE,CAAC,MAAM,EAAE,QAAQ,IAAI,IAAI,EAAE,CAAC,CAAC;IACxC,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,MAAM,IAAI,EAAE,CAAC,CAAC;IACxC,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,MAAM,IAAI,EAAE,CAAC,CAAC;IACxC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,MAAM,IAAI,EAAE,CAAC,CAAC;IACxC,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,MAAM,IAAI,EAAE,CAAC,CAAC;IACxC,OAAO,IAAI,CAAC,MAAM,EAAE,MAAM,MAAM,IAAI,EAAE,CAAC,CAAC;IACxC,OAAO,IAAI,CAAC,MAAM,EAAE,MAAM,MAAM,IAAI,EAAE,CAAC,CAAC;IACxC,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,MAAM,IAAI,EAAE,CAAC,CAAC;IACxC,QAAQ,GAAG,CAAC,MAAM,EAAE,MAAM,MAAM,IAAI,EAAE,CAAC,CAAC;CAC3C,CAAC;;AAEF,IAAI,UAAU,GAAG;IACb,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU;IAC1C,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU;IACpC,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS;IAC5C,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM;IAChD,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;IAC1C,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc;IACtD,GAAG,EAAE,aAAa;IAClB,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ;IAC9B,WAAW,EAAE,WAAW;IACxB,aAAa,EAAE,aAAa;IAC5B,eAAe,EAAE,eAAe;IAChC,GAAG;CACN,CAAC;;AAEF,IAAI,WAAW,GAAG;IACd,OAAO,EAAE,UAAU;IACnB,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,YAAY;CACzB,CAAC;;;AAGF,cAAc,CAAC;IACX,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO;IACvC,SAAS,EAAE,QAAQ,EAAE,UAAU;IAC/B,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;IACrD,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;IACrD,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU;IAC1D,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;IACrD,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ;IAChD,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW;IAC/D,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW;IAC/D,SAAS,EAAE,SAAS,EAAE,SAAS;IAC/B,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;IACrD,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS;IAC1C,UAAU,EAAE,WAAW;CAC1B,EAAE;IACC,OAAO,EAAE,CAAC;IACV,aAAa,EAAE,IAAI;IACnB,UAAU,EAAE,CAAC;CAChB,EAAE,SAAS,OAAO,EAAE,IAAI,EAAE;IACvB,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACnB,OAAO;QACH,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3C,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC;KAC3B,CAAC;CACL,CAAC,CAAC;;;;;;;AAOH,cAAc,CAAC;IACX,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ;IAC9D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;IAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ;IAC5D,OAAO,EAAE,QAAQ;CACpB,EAAE;IACC,OAAO,EAAE,CAAC;CACb,EAAE,SAAS,OAAO,EAAE;IACjB,OAAO;QACH,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,OAAO,CAAC,QAAQ;KACzB,CAAC;CACL,CAAC,CAAC;;;AAGH,cAAc,CAAC;IACX,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO;IACnE,OAAO,EAAE,MAAM,EAAE,OAAO;CAC3B,EAAE;IACC,OAAO,EAAE,CAAC;CACb,EAAE,SAAS,OAAO,EAAE;IACjB,OAAO;QACH,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,OAAO,CAAC,QAAQ;KACzB,CAAC;CACL,CAAC,CAAC;;;AAGH,cAAc,CAAC;IACX,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ;CACzC,EAAE;IACC,OAAO,EAAE,CAAC;CACb,EAAE,SAAS,OAAO,EAAE;IACjB,OAAO;QACH,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,OAAO,CAAC,QAAQ;KACzB,CAAC;CACL,CAAC,CAAC;;;AAGH,cAAc,CAAC;IACX,UAAU,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU;IAC9D,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa;IACvD,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY;CACxD,EAAE;IACC,OAAO,EAAE,CAAC;CACb,EAAE,SAAS,OAAO,EAAE;IACjB,OAAO;QACH,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,OAAO,CAAC,QAAQ;KACzB,CAAC;CACL,CAAC,CAAC;;;AAGH,cAAc,CAAC,UAAU,EAAE;IACvB,OAAO,EAAE,CAAC;CACb,EAAE,SAAS,OAAO,EAAE,IAAI,EAAE;IACvB,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACnB,OAAO;QACH,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC;KAC3B,CAAC;CACL,CAAC,CAAC;;;AAGH,cAAc,CAAC;IACX,SAAS,EAAE,QAAQ,EAAE,SAAS;IAC9B,UAAU,EAAE,SAAS,EAAE,UAAU;IACjC,cAAc;CACjB,EAAE;IACC,OAAO,EAAE,CAAC;IACV,UAAU,EAAE,CAAC;CAChB,EAAE,SAAS,OAAO,EAAE,IAAI,EAAE;IACvB,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,IAAI,UAAU,CAAC;IACf,IAAI,SAAS,GAAG,IAAI,CAAC;IACrB,IAAI,UAAU,GAAG,IAAI,CAAC;IACtB,IAAI,IAAI,GAAG,MAAM,CAAC;;IAElB,QAAQ,OAAO,CAAC,QAAQ;QACpB,KAAK,SAAS,CAAC;QACf,KAAK,QAAQ,CAAC;QACd,KAAK,SAAS;YACV,UAAU,GAAG,IAAI,CAAC;YAClB,MAAM;QACV,KAAK,cAAc;YACf,UAAU,GAAG,KAAK,CAAC;YACnB,MAAM;QACV,KAAK,UAAU,CAAC;QAChB,KAAK,SAAS,CAAC;QACf,KAAK,UAAU;YACX,UAAU,GAAG,KAAK,CAAC;YACnB,SAAS,GAAG,GAAG,CAAC;YAChB,UAAU,GAAG,GAAG,CAAC;YACjB,MAAM;QACV;YACI,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;KACvD;;IAED,QAAQ,OAAO,CAAC,QAAQ;QACpB,KAAK,SAAS,CAAC;QACf,KAAK,UAAU;YACX,IAAI,GAAG,SAAS,CAAC;YACjB,MAAM;QACV,KAAK,SAAS,CAAC;QACf,KAAK,UAAU;YACX,IAAI,GAAG,MAAM,CAAC;YACd,MAAM;KACb;;IAED,OAAO;QACH,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,KAAK;QACZ,KAAK,EAAE,KAAK;QACZ,UAAU,EAAE,UAAU;QACtB,SAAS,EAAE,SAAS;QACpB,UAAU,EAAE,UAAU;QACtB,IAAI,EAAE,IAAI;KACb,CAAC;CACL,CAAC,CAAC;;;AAGH,cAAc,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE;IACjC,OAAO,EAAE,CAAC;IACV,aAAa,EAAE,IAAI;CACtB,EAAE,SAAS,OAAO,EAAE,IAAI,EAAE;IACvB,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACnB,OAAO;QACH,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/B,IAAI,EAAE,IAAI;KACb,CAAC;CACL,CAAC,CAAC;;;AAGH,IAAI,cAAc,GAAG,SAAS,KAAK,EAAE,OAAO,EAAE;IAC1C,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE;QACzC,OAAO,KAAK,CAAC;KAChB,MAAM;QACH,MAAM,IAAI,UAAU;YAChB,sBAAsB,GAAG,KAAK,CAAC,KAAK,GAAG,WAAW;YAClD,OAAO,CAAC,QAAQ,GAAG,GAAG,EAAE,KAAK,CAAC,CAAC;KACtC;CACJ,CAAC;;AAEF,cAAc,CAAC;IACX,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS;IACxC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS;IACxC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS;IACxC,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ;CAC1C,EAAE;IACC,OAAO,EAAE,CAAC;CACb,EAAE,SAAS,OAAO,EAAE,IAAI,EAAE;IACvB,IAAI,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;;IAE7C,OAAO;QACH,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI;QAC3C,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,MAAM;QAC/C,KAAK,EAAE,KAAK,CAAC,KAAK;KACrB,CAAC;CACL,CAAC,CAAC;;AAEH,cAAc,CAAC;IACX,QAAQ,EAAE,SAAS;CACtB,EAAE;IACC,OAAO,EAAE,CAAC;CACb,EAAE,SAAS,OAAO,EAAE,IAAI,EAAE;IACvB,IAAI,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;;;;IAI7C,OAAO;QACH,IAAI,EAAE,WAAW;QACjB,KAAK,EAAE,KAAK,CAAC,KAAK;KACrB,CAAC;CACL,CAAC,CAAC;;AAEH,cAAc,CAAC,UAAU,EAAE;IACvB,OAAO,EAAE,CAAC;CACb,EAAE,SAAS,OAAO,EAAE,IAAI,EAAE;IACvB,IAAI,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC7C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE;QAChC,MAAM,IAAI,UAAU,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAC;KACpE;;IAED,OAAO;QACH,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,KAAK,CAAC,KAAK;KACrB,CAAC;CACL,CAAC,CAAC;;;AAGH,cAAc,CAAC;IACX,QAAQ,EAAE,cAAc,EAAE,gBAAgB,EAAE,SAAS;IACrD,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ;CACtE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;;;;AAIZ,cAAc,CAAC;IACX,gBAAgB,EAAE,aAAa,EAAE,eAAe;IAChD,qBAAqB;CACxB,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;;AAEZ,cAAc,CAAC;;IAEX,UAAU,EAAE,UAAU,EAAE,UAAU;;;IAGlC,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU;IAC9D,UAAU;;;IAGV,OAAO,EAAE,QAAQ,EAAE,QAAQ;CAC9B,EAAE;IACC,OAAO,EAAE,CAAC;IACV,UAAU,EAAE,CAAC;CAChB,EAAE,SAAS,OAAO,EAAE,IAAI,EAAE;IACvB,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACnB,IAAI,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC;IAC5B,IAAI,IAAI,IAAI,WAAW,EAAE;QACrB,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;KAC5B;IACD,OAAO;QACH,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACnB,IAAI,EAAE,IAAI;KACb,CAAC;CACL,CAAC,CAAC;;;AAGH,cAAc,CAAC;IACX,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS;IAC7D,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAGvC,EAAE;IACC,OAAO,EAAE,CAAC;CACb,EAAE,SAAS,OAAO,EAAE,IAAI,EAAE;IACvB,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACnB,OAAO;QACH,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,OAAO,CAAC,QAAQ;QACxB,IAAI,EAAE,IAAI;KACb,CAAC;CACL,CAAC,CAAC;;;AAGH,cAAc,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE;IAC7C,OAAO,EAAE,CAAC;IACV,KAAK,EAAE,IAAI;CACd,EAAE,SAAS,OAAO,EAAE;IACjB,IAAI,WAAW,CAAC;IAChB,QAAQ,OAAO,CAAC,QAAQ;QACpB,KAAK,QAAQ;YACT,WAAW,GAAG,QAAQ,CAAC;YACvB,MAAM;QACV,KAAK,UAAU;YACX,WAAW,GAAG,SAAS,CAAC;YACxB,MAAM;QACV,KAAK,QAAQ;YACT,WAAW,GAAG,cAAc,CAAC;YAC7B,MAAM;QACV;YACI,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;KAC7D;IACD,OAAO;QACH,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,WAAW;QACxB,KAAK,EAAE,OAAO,CAAC,KAAK;KACvB,CAAC;CACL,CAAC,CAAC;;;AAGH,cAAc,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;IAC7B,OAAO,EAAE,CAAC;IACV,eAAe,EAAE,CAAC;IAClB,QAAQ,EAAE,CAAC,MAAM,CAAC;CACrB,EAAE,SAAS,OAAO,EAAE,IAAI,EAAE;IACvB,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACnB,OAAO;QACH,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,IAAI;KACb,CAAC;CACL,CAAC,CAAC;;;AAGH,cAAc,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE;IACjC,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,CAAC,MAAM,CAAC;CACrB,EAAE,SAAS,OAAO,EAAE,IAAI,EAAE;IACvB,IAAI,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,SAAS,CAAC,IAAI,KAAK,UAAU,EAAE;QAC/B,MAAM,IAAI,UAAU,CAAC,0BAA0B,EAAE,SAAS,CAAC,CAAC;KAC/D;IACD,IAAI,IAAI,GAAG,EAAE,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;QAC7C,IAAI,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;KACpC;IACD,OAAO;QACH,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,IAAI;QACV,SAAS,EAAE,SAAS;KACvB,CAAC;CACL,CAAC,CAAC;;;;;ACnrBH,IAAI,SAAS,GAAGL,WAAsB,CAAC;AACvC,IAAI,UAAU,GAAGI,YAAuB,CAAC;AACzC,IAAI,KAAK,GAAGC,OAAkB,CAAC;;AAE/B,IAAI,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;;;;;;;AAOpC,SAAS,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE;IAChC,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACjB,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,OAAO,IAAI,EAAE;QACT,IAAI,IAAI,GAAG,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC/C,GAAG,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACvD,IAAI,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;QACjC,IAAI,IAAI,KAAK,GAAG,EAAE;YACd,MAAM,CAAC,OAAO,EAAE,CAAC;SACpB,MAAM,IAAI,IAAI,KAAK,OAAO,EAAE;YACzB,MAAM;SACT,MAAM,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,EAAE;YAC3C,IAAI,EAAE,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5B,GAAG,GAAG,EAAE,CAAC;YACT,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAClB,MAAM;YACH,MAAM,IAAI,UAAU,CAAC,6BAA6B;iCAC7B,MAAM,CAAC,SAAS,CAAC,CAAC;SAC1C;KACJ;IACD,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;CAC1D;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BD,SAAS,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE;IAC9C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC3B,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;KACnB;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC3B,KAAK,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;KAC9B;;IAED,IAAI,IAAI,GAAG;QACP,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,CAAC;QAC3B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,UAAU,EAAE,CAAC;QACb,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa;QACpC,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,CAAC;QAC3C,OAAO,EAAE,OAAO;KACnB,CAAC;IACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;QACnC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;KACnC;CACJ;;;;AAID,iBAAiB,CAAC,OAAO,EAAE;IACvB,OAAO,EAAE,CAAC;CACb,EAAE,SAAS,OAAO,EAAE,IAAI,EAAE;IACvB,IAAI,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACvB,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC5D,IAAI,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE;QACnC,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QACpB,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE;YAC1B,OAAO;gBACH,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,EAAE;aACZ,CAAC;SACL,MAAM,IAAI,EAAE,KAAK,GAAG,EAAE;YACnB,OAAO;gBACH,IAAI,EAAE,WAAW;gBACjB,SAAS,EAAE,GAAG;aACjB,CAAC;SACL;QACD,MAAM,IAAI,UAAU;YAChB,4BAA4B,GAAG,IAAI,CAAC,KAAK;YACzC,IAAI,CAAC,CAAC;KACb,CAAC,CAAC;IACH,IAAI,GAAG,GAAG;QACN,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,IAAI;QACV,mBAAmB,EAAE,IAAI;KAC5B,CAAC;IACF,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtC,OAAO,GAAG,CAAC;CACd,CAAC,CAAC;;;;AAIH,iBAAiB,CAAC;IACd,QAAQ;IACR,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;CACZ,EAAE;CACF,EAAE,SAAS,OAAO,EAAE;IACjB,IAAI,UAAU,GAAG;QACb,QAAQ,EAAE,IAAI;QACd,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;QACrB,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;QACrB,SAAS,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;QACzB,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;QACrB,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;KAClC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACnB,IAAI,GAAG,GAAG;QACN,IAAI,EAAE,OAAO;QACb,mBAAmB,EAAE,KAAK;KAC7B,CAAC;IACF,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtC,IAAI,UAAU,EAAE;QACZ,GAAG,GAAG,IAAI,SAAS,CAAC,WAAW,EAAE;YAC7B,IAAI,EAAE,CAAC,GAAG,CAAC;YACX,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;YACnB,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;SACvB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;KACpB;IACD,OAAO,GAAG,CAAC;CACd,CAAC,CAAC;;;;;AAKH,iBAAiB,CAAC,OAAO,EAAE;CAC1B,EAAE,SAAS,OAAO,EAAE;IACjB,IAAI,GAAG,GAAG;QACN,IAAI,EAAE,OAAO;QACb,YAAY,EAAE,GAAG;QACjB,IAAI,EAAE,CAAC;YACH,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,CAAC;;;;;YAKT,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI;SACnC,EAAE;YACC,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,CAAC;YACT,OAAO,EAAE,CAAC;SACb,CAAC;KACL,CAAC;IACF,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtC,GAAG,GAAG,IAAI,SAAS,CAAC,WAAW,EAAE;QAC7B,IAAI,EAAE,CAAC,GAAG,CAAC;QACX,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,GAAG;KACb,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,OAAO,GAAG,CAAC;CACd,CAAC,CAAC;;;;;;AAMH,iBAAiB,CAAC,SAAS,EAAE;CAC5B,EAAE,SAAS,OAAO,EAAE;IACjB,IAAI,GAAG,GAAG;QACN,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,EAAE;KACX,CAAC;IACF,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtC,IAAI,UAAU,GAAG,IAAI,SAAS,CAAC,UAAU,EAAE,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,EAAE;QACjC,IAAI,CAAC,CAAC;QACN,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;YAChC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;SACpC;QACD,IAAI,OAAO,GAAG,GAAG,CAAC,MAAM,EAAE;YACtB,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC;SACxB;KACJ,CAAC,CAAC;IACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,EAAE,CAAC,EAAE;QAC9B,IAAI,KAAK,GAAG,GAAG,CAAC;QAChB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACb,KAAK,GAAG,GAAG,CAAC;SACf,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE;YACd,MAAM,GAAG,CAAC,CAAC;SACd;QACD,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG;YAChB,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,KAAK;YACZ,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,CAAC;SACb,CAAC;KACL;IACD,OAAO,GAAG,CAAC;CACd,CAAC,CAAC;;;AC9NH;;AAEA,AAEA,SAAS,cAAc,CAAC,EAAE,EAAE;;EAE1B,IAAI,CAAC,EAAE,CAAC,oBAAoB,EAAE;;;;IAI5B,IAAI,MAAM,GAAG,EAAE,CAAC,MAAM,GAAG,KAAK,CAAC;;;IAG/B,IAAI,KAAK,GAAG,GAAG,IAAI,EAAE,CAAC,UAAU,GAAG,GAAG,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,SAAS,GAAG,GAAG,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,GAAG,GAAG,GAAG,EAAE,CAAC,CAGjG;;IAED,EAAE,CAAC,oBAAoB,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;GACrD;EACD,OAAO,EAAE,CAAC,oBAAoB,CAAC;CAChC;;AAED,SAAS4D,SAAO,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE;EAC7B,IAAI,EAAE,CAAC,MAAM,IAAI,EAAE,CAAC,MAAM,EAAE;IAC1B,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;GACxE;EACD,IAAI,KAAK,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;EAC/B,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC;EACtB,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;;EAG5B,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE;;IAEnC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAChC,OAAO,KAAK,CAAC;GACd,MAAM;IACL,OAAO,IAAI,CAAC;GACb;CACF;;AAED,aAAc,GAAGA,SAAO;;ACzCxB;;;;;;;;;;;;;AAaA,IAAI,OAAO,GAAGjE,SAAmB,CAAC;;AAElC,IAAIyC,YAAU,GAAGrC,YAAuB,CAAC;;;AAGzC,SAAS8D,OAAK,CAAC,KAAK,EAAE;IAClB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACnB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;CAChB;;;;;;;;;;;;;;;;;;;;;AAqBD,SAAS,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE;IACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACnB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;CACtB;;;;;;;;;AASD,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,QAAQ,EAAE,IAAI,EAAE;IAC7C,IAAI,QAAQ,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,EAAE;QAC/B,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC;KAC1B;IACD,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;CAChE,CAAC;;;;;;;;;;;;;;;;;AAiBF,IAAI,UAAU,GAAG,IAAI,MAAM;IACvB,eAAe;IACf,8CAA8C;IAC9C,iCAAiC;IACjC,qCAAqC;IACrC,GAAG;CACN,CAAC;;;;;AAKFA,OAAK,CAAC,SAAS,CAAC,GAAG,GAAG,WAAW;IAC7B,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACvB,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IACnB,IAAI,GAAG,KAAK,KAAK,CAAC,MAAM,EAAE;QACtB,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;KAC3C;IACD,IAAI,KAAK,GAAG,OAAO,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;IAC5C,IAAI,KAAK,KAAK,IAAI,EAAE;QAChB,MAAM,IAAIzB,YAAU;YAChB,yBAAyB,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG;YAC5C,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;KAClD;IACD,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;IAC3B,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;IACrB,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC5B,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IACnB,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;CAC5C,CAAC;;AAEF,WAAc,GAAGyB,OAAK,CAAC;;AC5GvB;;;;;AAKA,IAAI,KAAK,GAAGlE,OAAkB,CAAC;;AAE/B,SAASmE,eAAa,CAAC,KAAK,EAAE,MAAM,EAAE;IAClC,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACrB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IAChB,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;CACjC;;;;;AAKDA,eAAa,CAAC,SAAS,CAAC,SAAS,GAAG,WAAW;;;IAC3C,SAAS;QACL,IAAIjE,MAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YACzBA,MAAI,CAAC,KAAK,CAAC,IAAI,CAACA,MAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;SACrC;QACD,IAAI,QAAQ,GAAGA,MAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAChC,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QACzB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,IAAIA,MAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE;YAChE,OAAO,QAAQ,CAAC;SACnB;QACD,IAAI,SAAS,GAAGA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE;YAC/B,IAAI,SAAS,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;YACrC,SAAS,GAAG,EAAE,CAAC;YACf,IAAI,GAAG,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC;YAC1B,OAAO,GAAG,CAAC,IAAI,KAAK,KAAK,EAAE;gBACvB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACpB,GAAG,GAAG,SAAS,CAAC,GAAG,EAAE,CAAC;aACzB;YACD,SAAS,CAAC,OAAO,EAAE,CAAC;YACpBA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;SACjC;QACDA,MAAI,CAAC,KAAK,GAAGA,MAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;KAC7C;CACJ,CAAC;;AAEFiE,eAAa,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,WAAW,EAAE;;;IAChD,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;IAC9B,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IAC7B,IAAI,WAAW,EAAE;QACb,OAAO,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE;YACvBjE,MAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrC,KAAK,GAAGA,MAAI,CAAC,SAAS,EAAE,CAAC;SAC5B;KACJ;IACD,OAAO,KAAK,CAAC;CAChB,CAAC;;;;;;;;;AASFiE,eAAa,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,KAAK,EAAE;;;IAC5C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvB,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE;QAC1CjE,MAAI,CAAC,KAAK,CAAC,IAAI,CAACA,MAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC,CAAC;KACnD;CACJ,CAAC;;AAEF,mBAAc,GAAGiE,eAAa,CAAC;;ACrE/B;AACA,IAAI,SAAS,GAAGnE,WAAsB,CAAC;AACvC,IAAI,YAAY,GAAGI,cAAyB,CAAC;AAC7C,IAAI,aAAa,GAAGC,eAA0B,CAAC;AAC/C,IAAIkD,SAAO,GAAG9C,SAAoB,CAAC;AACnC,IAAIyC,OAAK,GAAGxC,OAAkB,CAAC;AAC/B,IAAIiC,UAAQ,GAAGhC,cAA2B,CAAC,QAAQ,CAAC;;AAEpD,IAAI,SAAS,GAAGI,WAAsB,CAAC;AACvC,IAAI0B,YAAU,GAAGzB,YAAuB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCzC,SAASoD,QAAM,CAAC,KAAK,EAAE,QAAQ,EAAE;;;IAG7B,IAAI,CAAC,MAAM,GAAG,IAAI,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;;IAExD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;;IAEzB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;CAC3B;;AAED,IAAI,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;;;;;;AAMpC,SAAS,mBAAmB,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE;IACpD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;;IAErB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;CACtB;;;;;;;;;AASDA,QAAM,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,IAAI,EAAE,OAAO,EAAE;IAC9C,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,IAAI,EAAE;QAC9B,MAAM,IAAI3B,YAAU;YAChB,YAAY,GAAG,IAAI,GAAG,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,GAAG;YAC5D,IAAI,CAAC,SAAS;SACjB,CAAC;KACL;IACD,IAAI,OAAO,KAAK,KAAK,EAAE;QACnB,IAAI,CAAC,OAAO,EAAE,CAAC;KAClB;CACJ,CAAC;;;;;;AAMF2B,QAAM,CAAC,SAAS,CAAC,OAAO,GAAG,WAAW;IAClC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;CAC1D,CAAC;;AAEFA,QAAM,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,OAAO,EAAE;IAC5C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;IACpB,IAAI,CAAC,OAAO,EAAE,CAAC;CAClB,CAAC;;;;;;;AAOFA,QAAM,CAAC,SAAS,CAAC,KAAK,GAAG,WAAW;;IAEhC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;IACnB,IAAI,CAAC,OAAO,EAAE,CAAC;IACf,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAC9B,OAAO,KAAK,CAAC;CAChB,CAAC;;;;;AAKFA,QAAM,CAAC,SAAS,CAAC,UAAU,GAAG,WAAW;;IAErC,IAAI,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;;IAE7C,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC1B,OAAO,UAAU,CAAC;CACrB,CAAC;;AAEF,IAAI,eAAe,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;;;;;;;;;;;;;;;AAerEA,QAAM,CAAC,SAAS,CAAC,eAAe,GAAG,SAAS,YAAY,EAAE,gBAAgB,EAAE;;;IACxE,IAAI,IAAI,GAAG,EAAE,CAAC;;;IAGd,OAAO,IAAI,EAAE;QACT,IAAI,GAAG,GAAGlE,MAAI,CAAC,SAAS,CAAC;QACzB,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE;YAC1C,MAAM;SACT;QACD,IAAI,gBAAgB,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB,EAAE;YACnD,MAAM;SACT;QACD,IAAI,YAAY,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE;YAClE,MAAM;SACT;QACD,IAAI,IAAI,GAAGA,MAAI,CAAC,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,EAAE;YACP,IAAI,CAACA,MAAI,CAAC,QAAQ,CAAC,YAAY,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;gBACrD,IAAI,SAAS,GAAGA,MAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC5C,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACrB,SAAS;aACZ;;YAED,MAAM;SACT;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACnB;IACD,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;CACtC,CAAC;;;;;;;;;;;AAWFkE,QAAM,CAAC,SAAS,CAAC,gBAAgB,GAAG,SAAS,IAAI,EAAE;IAC/C,IAAI,SAAS,GAAG,CAAC,CAAC,CAAC;IACnB,IAAI,QAAQ,CAAC;;IAEb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAClC,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACnB,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;YACvB,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE;gBAClB,MAAM,IAAI3B,YAAU;oBAChB,mCAAmC;oBACnC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;aACzB;YACD,SAAS,GAAG,CAAC,CAAC;YACd,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;SACrC;KACJ;;IAED,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE;QAClB,IAAI,SAAS,CAAC;QACd,IAAI,SAAS,CAAC;;QAEd,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACzC,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;;QAE1C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE;YAC5D,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;SAC5B,MAAM;YACH,SAAS,GAAG,IAAI,SAAS,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;SAC/D;;QAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,EAAE;YAC5D,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;SAC5B,MAAM;YACH,SAAS,GAAG,IAAI,SAAS,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;SAC/D;;QAED,IAAI,KAAK,GAAG,IAAI,CAAC,YAAY;YACzB,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,IAAI,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KACxD,MAAM;QACH,OAAO,IAAI,CAAC;KACf;CACJ,CAAC;;;AAGF,IAAI,iBAAiB,GAAG,CAAC,CAAC;;;;;AAK1B2B,QAAM,CAAC,SAAS,CAAC,kBAAkB,GAAG,SAAS,IAAI,EAAE;IACjD,IAAI,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC;IACjC,IAAI,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC;IAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;IACf,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;;IAE9B,IAAI,CAAC,KAAK,EAAE;QACR,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;YAChE,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC;SACtC,MAAM;YACH,MAAM,IAAI3B,YAAU;gBAChB,wBAAwB,GAAG,MAAM,GAAG,GAAG;gBACvC,WAAW;aACd,CAAC;SACL;KACJ,MAAM,IAAI,KAAK,CAAC,UAAU,EAAE;;;QAGzB,IAAI,cAAc,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC;QACxD,IAAI,cAAc,GAAG,iBAAiB,EAAE;YACpC,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;SACpC,MAAM;YACH,MAAM,IAAIA,YAAU;gBAChB,gBAAgB,GAAG,KAAK,CAAC,MAAM,GAAG,sBAAsB;oBACpD,KAAK,GAAG,IAAI,EAAE,WAAW,CAAC,CAAC;SACtC;KACJ,MAAM;QACH,OAAO,KAAK,CAAC,MAAM,CAAC;KACvB;CACJ,CAAC;;;;;;AAMF2B,QAAM,CAAC,SAAS,CAAC,oBAAoB,GAAG,WAAW;IAC/C,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;IAC/B,IAAI,YAAY,GAAG,EAAE,CAAC;;IAEtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAClC,YAAY,CAAC,IAAI,CAAC,IAAI,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;KAChE;;IAED,IAAI,QAAQ,GAAG,IAAI,SAAS;QACxB,MAAM;QACN;YACI,IAAI,EAAE,YAAY;YAClB,IAAI,EAAE,MAAM;SACf;QACD,IAAI,CAAC,IAAI,CAAC,CAAC;;IAEf,IAAI,SAAS,GAAG,IAAI,SAAS;QACzB,OAAO;QACP;YACI,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU;YAC/B,KAAK,EAAE,CAAC,QAAQ,CAAC;YACjB,IAAI,EAAE,OAAO;SAChB;QACD,IAAI,CAAC,IAAI,CAAC,CAAC;;IAEf,IAAI,CAAC,OAAO,EAAE,CAAC;IACf,OAAO,SAAS,CAAC;CACpB,CAAC;;;;;;;AAOFA,QAAM,CAAC,SAAS,CAAC,SAAS,GAAG,WAAW;;;;;IAGpC,IAAI,IAAI,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;;;IAGrC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;QACtB,OAAO,IAAI,CAAC;KACf;;;;IAID,IAAI,WAAW,CAAC;IAChB,IAAI,SAAS,CAAC;IACd,OAAO,IAAI,EAAE;;QAET,IAAI,GAAG,GAAGlE,MAAI,CAAC,SAAS,CAAC;;QAEzB,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE;;YAEtD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;gBAC7B,MAAM,IAAIuC,YAAU;oBAChB,4CAA4C;oBAC5C,GAAG,CAAC,CAAC;aACZ,MAAM;gBACH,IAAI,MAAM,GAAG,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC;gBACrC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;gBAC3B,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC;aACxC;YACDvC,MAAI,CAAC,OAAO,EAAE,CAAC;SAClB,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;;YAEzB,IAAI,WAAW,EAAE;gBACb,MAAM,IAAIuC,YAAU,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;aACnD;YACD,WAAW,GAAGvC,MAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;SACxD,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;;YAEzB,IAAI,SAAS,EAAE;gBACX,MAAM,IAAIuC,YAAU,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;aACjD;YACD,SAAS,GAAGvC,MAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;SACpD,MAAM,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE;;YAEzB,IAAI,KAAK,GAAG,IAAI,SAAS,CAAC,SAAS,EAAE,SAAS,EAAEA,MAAI,CAAC,IAAI,CAAC,CAAC;;;YAG3D,IAAI,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC;YACrBA,MAAI,CAAC,OAAO,EAAE,CAAC;;YAEf,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,GAAG,EAAE;;gBAEhC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACnBA,MAAI,CAAC,OAAO,EAAE,CAAC;aAClB;;YAED,WAAW,GAAG,IAAI,SAAS,CAAC,UAAU,EAAE,MAAM,EAAEA,MAAI,CAAC,IAAI,CAAC,CAAC;SAC9D,MAAM;;YAEH,MAAM;SACT;KACJ;;IAED,IAAI,WAAW,IAAI,SAAS,EAAE;;QAE1B,OAAO,IAAI,SAAS,CAAC,QAAQ,EAAE;YAC3B,IAAI,EAAE,IAAI;YACV,GAAG,EAAE,WAAW;YAChB,GAAG,EAAE,SAAS;SACjB,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KACjB,MAAM;;QAEH,OAAO,IAAI,CAAC;KACf;CACJ,CAAC;;;AAGF,IAAI,SAAS,GAAG;IACZ,QAAQ,EAAE,cAAc,EAAE,gBAAgB,EAAE,SAAS,EAAE,cAAc;IACrE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ;CACtD,CAAC;;;AAGF,IAAI,UAAU,GAAG;IACb,gBAAgB,EAAE,aAAa,EAAE,eAAe,EAAE,qBAAqB;CAC1E,CAAC;;;;;;;;;;;;;AAaFkE,QAAM,CAAC,SAAS,CAAC,kBAAkB,GAAG,WAAW;IAC7C,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;;IAE/B,IAAI,KAAK,IAAI,IAAI,EAAE;;QAEf,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;KAC/B;;IAED,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC;IACxB,IAAI,IAAI,CAAC;;IAET,IAAI,IAAI,KAAK,QAAQ,EAAE;;;QAGnB,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;;QAErC,EAAE,IAAI,CAAC,cAAc,CAAC;QACtB,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACnC,EAAE,IAAI,CAAC,cAAc,CAAC;;QAEtB,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAC9B,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACjC,OAAO,IAAI,SAAS,CAAC,WAAW,EAAE;YAC9B,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK;YACtB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK;SAC3B,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KACjB,MAAM,IAAI,IAAI,KAAK,SAAS,EAAE;;QAE3B,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;QAC/B,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;YACvC,MAAM,IAAI3B,YAAU;gBAChB,uBAAuB,GAAG,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;SACjE;;;QAGD,IAAI,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,GAAG,OAAO,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;QAChE,IAAI,OAAO,GAAG;YACV,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,OAAO;YAChB,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACxB,CAAC;QACF,IAAI,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC5B,IAAI,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC;QAClC,IAAI,GAAG,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAC/B,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;YAC5B,MAAM,IAAIA,YAAU;gBAChB,oBAAoB,GAAG,OAAO,GAAG,YAAY;gBAC7C,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,GAAG;gBAClC,YAAY,CAAC,CAAC;SACrB;QACD,MAAM,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC/B,OAAO,MAAM,CAAC;KACjB,MAAM,IAAIS,OAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE;;QAExC,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACnC,OAAO,IAAI,SAAS,CAAC,QAAQ,EAAE;;YAE3B,IAAI,EAAE,MAAM,IAAIA,OAAK,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;YACnD,KAAK,EAAE,IAAI;SACd,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KACjB,MAAM,IAAIA,OAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE;;QAEzC,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAClC,OAAO,IAAI,SAAS,CAAC,SAAS,EAAE;;;YAG5B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YACrC,KAAK,EAAE,IAAI;SACd,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KACjB,MAAM;;QAEH,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;KACpC;CACJ,CAAC;;;;;;;;;;AAUFkB,QAAM,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,SAAS,EAAE;IACjD,IAAI,CAAC,SAAS,EAAE;QACZ,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;KACjC;;IAED,IAAI,SAAS,EAAE;QACX,IAAI,SAAS,CAAC,UAAU,EAAE;YACtB,IAAI,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC;YAC5B,IAAI,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;gBACjD,MAAM,IAAI3B,YAAU;oBAChB,sBAAsB,GAAG,IAAI,GAAG,gBAAgB;oBAChD,SAAS,CAAC,KAAK,CAAC,CAAC;aACxB;;YAED,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC/C,IAAI,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;YAC5B,IAAI,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;YAC9D,OAAO,IAAI,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;SACxD,MAAM;YACH,OAAO,SAAS,CAAC,MAAM,CAAC;SAC3B;KACJ,MAAM;QACH,OAAO,IAAI,CAAC;KACf;CACJ,CAAC;;;;;AAKF2B,QAAM,CAAC,SAAS,CAAC,YAAY,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE;IACnE,IAAI,OAAO,GAAG;QACV,QAAQ,EAAE,IAAI;QACd,MAAM,EAAE,IAAI;QACZ,SAAS,EAAE,SAAS;QACpB,KAAK,EAAE,KAAK;KACf,CAAC;IACF,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;CACjD,CAAC;;;;;;;;;AASFA,QAAM,CAAC,SAAS,CAAC,cAAc,GAAG,SAAS,IAAI,EAAE,QAAQ,EAAE;;;IACvD,IAAI,SAAS,GAAG,QAAQ,CAAC,OAAO,GAAG,QAAQ,CAAC,eAAe,CAAC;IAC5D,IAAI,SAAS,KAAK,CAAC,EAAE;QACjB,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;KACvB;;IAED,IAAI,cAAc,GAAG,QAAQ,CAAC,UAAU,CAAC;IACzC,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,IAAI,GAAG,EAAE,CAAC;;IAEd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;QAChC,IAAI,SAAS,GAAGlE,MAAI,CAAC,SAAS,CAAC;QAC/B,IAAI,OAAO,GAAG,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACxD,IAAI,GAAG,CAAC;QACR,IAAI,CAAC,GAAG,QAAQ,CAAC,eAAe,EAAE;YAC9B,IAAI,OAAO,EAAE;gBACT,GAAG,GAAGA,MAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;aAC9C,MAAM;gBACH,GAAG,GAAGA,MAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;aAC/B;YACD,IAAI,CAAC,GAAG,EAAE;gBACN,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAChB,SAAS,CAAC,IAAI,CAACA,MAAI,CAAC,GAAG,CAAC,CAAC;gBACzB,SAAS;aACZ;SACJ,MAAM;YACH,IAAI,OAAO,EAAE;gBACT,GAAG,GAAGA,MAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;aACxC,MAAM;gBACH,GAAG,GAAGA,MAAI,CAAC,UAAU,EAAE,CAAC;aAC3B;YACD,IAAI,CAAC,GAAG,EAAE;gBACN,IAAI,CAACA,MAAI,CAAC,QAAQ,CAAC,YAAY;oBAC3BA,MAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;oBACjC,GAAG,GAAG,IAAI,mBAAmB;wBACzBA,MAAI,CAAC,oBAAoB,CAACA,MAAI,CAAC,SAAS,CAAC,IAAI,CAAC;wBAC9C,KAAK,CAAC,CAAC;iBACd,MAAM;oBACH,MAAM,IAAIuC,YAAU;wBAChB,wBAAwB,GAAG,IAAI,GAAG,GAAG,EAAE,SAAS,CAAC,CAAC;iBACzD;aACJ;SACJ;QACD,IAAI,OAAO,CAAC;QACZ,IAAI,GAAG,CAAC,UAAU,EAAE;YAChB,IAAI,aAAa;gBACb,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC;YACrC,IAAI,aAAa,GAAG,cAAc,EAAE;gBAChC,OAAO,GAAGvC,MAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;aACrC,MAAM;gBACH,MAAM,IAAIuC,YAAU;oBAChB,gBAAgB,GAAG,GAAG,CAAC,MAAM,GAAG,OAAO;oBACvC,eAAe,GAAG,IAAI,GAAG,GAAG,EAAE,SAAS,CAAC,CAAC;aAChD;SACJ,MAAM;YACH,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC;SACxB;QACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnB,SAAS,CAAC,IAAI,CAACvC,MAAI,CAAC,GAAG,CAAC,CAAC;KAC5B;;IAED,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;;IAErB,OAAO,IAAI,CAAC;CACf,CAAC;;;;;;;;AAQFkE,QAAM,CAAC,SAAS,CAAC,gBAAgB,GAAG,SAAS,SAAS,EAAE,QAAQ,EAAE;;;IAC9D,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;;IAE1B,IAAI,SAAS,KAAK,UAAU,EAAE;QAC1B,SAAS,GAAG,SAAS,CAAC;KACzB;;IAED,IAAI,SAAS,KAAK,OAAO,EAAE;QACvB,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;KACzC;IACD,IAAI,SAAS,KAAK,MAAM,EAAE;QACtB,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;KACxC;;IAED,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC3B,IAAI,SAAS,KAAK,MAAM,EAAE;;;QAGtB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,GAAG,EAAE;YAChClE,MAAI,CAAC,OAAO,EAAE,CAAC;SAClB;KACJ;;;IAGD,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IACpC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC3B,OAAO,GAAG,CAAC;CACd,CAAC;;;;;;;;;AASFkE,QAAM,CAAC,SAAS,CAAC,gBAAgB,GAAG,SAAS,QAAQ,EAAE,QAAQ,EAAE;;;IAC7D,IAAI,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,GAAG,EAAE;QACzC,OAAO,IAAI,CAAC;KACf;IACD,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;IAC1B,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;IACnB,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IAClC,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;IAChC,IAAI,SAAS,GAAG,UAAU,CAAC;IAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,MAAM,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE;QACnD,IAAIlE,MAAI,CAAC,SAAS,CAAC,IAAI,KAAK,KAAK,EAAE;YAC/B,MAAM,IAAIuC,YAAU;gBAChB,6BAA6B,GAAG,QAAQ;gBACxC,UAAU,CAAC,KAAK,CAACvC,MAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;SAC9C;QACD,SAAS,GAAGA,MAAI,CAAC,SAAS,CAAC;QAC3B,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC;QACtBA,MAAI,CAAC,OAAO,EAAE,CAAC;KAClB;IACD,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;IACtB,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;IAClC,OAAO,UAAU,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;CAC3C,CAAC;;;;;;;;;;AAUFkE,QAAM,CAAC,SAAS,CAAC,eAAe,GAAG,SAAS,KAAK,EAAE,QAAQ,EAAE;;;IACzD,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;IAC1B,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;IACnB,IAAI,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;IAChC,IAAI,SAAS,GAAG,UAAU,CAAC;IAC3B,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,KAAK;cAC1B,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;QAC7C,SAAS,GAAGlE,MAAI,CAAC,SAAS,CAAC;QAC3B,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC;QACtBA,MAAI,CAAC,OAAO,EAAE,CAAC;KAClB;IACD,IAAI,GAAG,KAAK,EAAE,EAAE;QACZ,MAAM,IAAIuC,YAAU;YAChB,UAAU,GAAG,QAAQ,GAAG,KAAK,GAAG,UAAU,CAAC,IAAI,GAAG,GAAG;YACrD,UAAU,CAAC,CAAC;KACnB;IACD,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;IACtB,OAAO,UAAU,CAAC,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;CAC3C,CAAC;;;;;AAKF2B,QAAM,CAAC,SAAS,CAAC,eAAe,GAAG,SAAS,QAAQ,EAAE;IAClD,IAAI,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACnD,IAAI,CAAC,GAAG,EAAE;QACN,OAAO,IAAI,CAAC;KACf;IACD,IAAI,KAAK,GAAG,CAAC,wBAAwB,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtD,IAAI,CAAC,KAAK,EAAE;QACR,MAAM,IAAI3B,YAAU,CAAC,kBAAkB,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;KAClE;IACD,OAAO,IAAI,mBAAmB;QAC1B,IAAI,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC;QAC3C,KAAK,CAAC,CAAC;CACd,CAAC;;;;;AAKF2B,QAAM,CAAC,SAAS,CAAC,cAAc,GAAG,SAAS,QAAQ,EAAE;IACjD,IAAI,GAAG,CAAC;IACR,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,GAAG,EAAE;QAC1C,GAAG,GAAG,IAAI,CAAC,eAAe;YACtB,+CAA+C,EAAE,MAAM,CAAC,CAAC;KAChE,MAAM;QACH,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;KACjD;IACD,IAAI,CAAC,GAAG,EAAE;QACN,OAAO,IAAI,CAAC;KACf;IACD,IAAI,KAAK,GAAG,CAAC,4CAA4C,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1E,IAAI,CAAC,KAAK,EAAE;QACR,MAAM,IAAI3B,YAAU,CAAC,iBAAiB,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;KACjE;IACD,IAAI,IAAI,GAAG;QACP,MAAM,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9B,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;KACjB,CAAC;IACF,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;QAChE,MAAM,IAAIA,YAAU,CAAC,iBAAiB,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,EAAE,GAAG,CAAC,CAAC;KAClE;IACD,OAAO,IAAI,mBAAmB;QAC1B,IAAI,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;QACvC,KAAK,CAAC,CAAC;CACd,CAAC;;;;;;;;;;;;;AAaF2B,QAAM,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,QAAQ,EAAE;IAC7C,IAAI,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;;IAEhC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,MAAM,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE;;QAEhD,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;QACpE,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;;QAE/B,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;QAClC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;YACtB,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;SAClC;QACD,OAAO,IAAI,mBAAmB;YAC1B,IAAI,SAAS,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI;0BACjC,UAAU,EAAE,SAAS,CAAC;YACpC,KAAK,CAAC,CAAC;KACd,MAAM;;QAEH,OAAO,QAAQ,GAAG,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;KAC/C;CACJ,CAAC;;;;;;;;;;;;AAYFA,QAAM,CAAC,SAAS,CAAC,aAAa,GAAG,SAAS,KAAK,EAAE;IAC7C,IAAI,CAAC,CAAC;IACN,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACzB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE;QACpB,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACjB,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC;QAChB,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,EAAE;YACzC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,GAAG,EAAE;gBACzC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,SAAS;oBAC5B,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChD,CAAC,IAAI,CAAC,CAAC;aACV,MAAM;gBACH,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,SAAS;oBAC5B,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/C,CAAC,IAAI,CAAC,CAAC;aACV;SACJ;QACD,IAAI,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,EAAE;YACtD,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,SAAS;gBAC5B,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAChD,CAAC,IAAI,CAAC,CAAC;SACV;KACJ;CACJ,CAAC;;;;;;;;AAQFA,QAAM,CAAC,SAAS,CAAC,WAAW,GAAG,WAAW;IACtC,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;;IAE7B,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACzB,IAAI,CAAC,OAAO,EAAE,CAAC;;;QAGf,OAAO,IAAI,mBAAmB;YAC1B,OAAO,CAAC,IAAI;YACZ,IAAI,EAAE,OAAO,CAAC,CAAC;KACtB,MAAM,IAAIb,SAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACzC,IAAI,CAAC,OAAO,EAAE,CAAC;;;QAGf,OAAO,IAAI,mBAAmB;YAC1B,IAAI,SAAS,CAACA,SAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK;0BACtC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;YAC/C,KAAK,EAAE,OAAO,CAAC,CAAC;KACvB,MAAM,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAIZ,UAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAC5D,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,IAAI,mBAAmB;YAC1B,IAAI,SAAS,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC;YAC1D,KAAK,EAAE,OAAO,CAAC,CAAC;KACvB,MAAM;QACH,OAAO,IAAI,CAAC;KACf;CACJ,CAAC;;AAEFyB,QAAM,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,CAAC;;AAEvC,YAAc,GAAGA,QAAM,CAAC;;ACh1BxB;;;;;AAKA,IAAI,MAAM,GAAGpE,QAAmB,CAAC;;;;;AAKjC,IAAIqE,WAAS,GAAG,SAAS,OAAO,EAAE,QAAQ,EAAE;IACxC,IAAI,EAAE,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,YAAY,MAAM,CAAC,EAAE;QAC7D,MAAM,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAC;KACvE;IACD,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;;IAE3C,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC;CACzB,CAAC;;AAEF,eAAc,GAAGA,WAAS,CAAC;;ACnB3B;;;;;;;;;AASA,IAAI,UAAU,GAAGrE,YAA2B,CAAC;AAC7C,IAAI,QAAQ,GAAGI,UAAyB,CAAC;;AAEzC,IAAI,SAAS,GAAGC,WAA0B,CAAC;AAC3C,IAAI,SAAS,GAAGI,WAA0B,CAAC;AAC3C,IAAI,KAAK,GAAGC,OAAsB,CAAC;;;;;;AAMnC,IAAI4D,QAAM,GAAG,SAAS,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE;IACjD,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;;IAE1B,IAAI,QAAQ,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;;IAErC,IAAI,IAAI,GAAG,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC3C,IAAI,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;;IAE1D,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;CAC9B,CAAC;;;;AAIF,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;IACjC,IAAI,QAAQ,CAAC,UAAU,KAAK,YAAY,EAAE;QACtC,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,IAAI;YAC1C,6DAA6D;gBACzD,iCAAiC,CAAC,CAAC;;QAE3CA,QAAM,GAAG,WAAW;YAChB,MAAM,IAAI,UAAU,CAAC,oCAAoC,CAAC,CAAC;SAC9D,CAAC;KACL;CACJ;;;;;AAKD,IAAI,cAAc,GAAG,SAAS,UAAU,EAAE,OAAO,EAAE;IAC/C,IAAI,QAAQ,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;;IAErC,IAAI,IAAI,GAAG,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC3C,OAAO,SAAS,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;CAC3D,CAAC;;;;;AAKF,IAAI,iBAAiB,GAAG,SAAS,UAAU,EAAE,OAAO,EAAE;IAClD,IAAI,QAAQ,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC;IACrC,OAAO,SAAS,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;CAC1C,CAAC;;AAEF,SAAc,GAAG;IACb,MAAM,EAAEA,QAAM;IACd,cAAc,EAAE,cAAc;;;;;;IAM9B,OAAO,EAAE,iBAAiB;IAC1B,UAAU,EAAE,UAAU;CACzB,CAAC;;ACvEFhC,IAAMC,MAAI,GAAG,+DAMb,CAAE;;AAEF,aAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjC3C,IAAI,gBAAgB,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;EACtE,gBAAgB,CAAC,OAAO,CAAC,UAAA,EAAE,EAAC;IAC1BA,IAAI,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC;IAC7B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACpBA,IAAI,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC;IAC1D,EAAE,CAAC,SAAS,GAAG2C,MAAI,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;GACjF,CAAC,CAAC;;;;;;;;;;ACXL,AAAC,CAAC,WAAW;;;;;;AAMb,IAAI,KAAK,GAAG;EACV,OAAO,EAAE,MAAM;EACf,IAAI,EAAE,mBAAmB;EACzB,MAAM,EAAE,IAAI;EACZ,EAAE,EAAE,2BAA2B;EAC/B,OAAO,EAAE,uCAAuC;EAChD,OAAO,EAAE,IAAI;EACb,QAAQ,EAAE,mCAAmC;EAC7C,UAAU,EAAE,oCAAoC;EAChD,IAAI,EAAE,+DAA+D;EACrE,IAAI,EAAE,8EAA8E;EACpF,GAAG,EAAE,mEAAmE;EACxE,KAAK,EAAE,IAAI;EACX,SAAS,EAAE,gEAAgE;EAC3E,IAAI,EAAE,SAAS;CAChB,CAAC;;AAEF,KAAK,CAAC,MAAM,GAAG,iBAAiB,CAAC;AACjC,KAAK,CAAC,IAAI,GAAG,4CAA4C,CAAC;AAC1D,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC;GACnC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC;IACrB,CAAC;;AAEL,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;GAC7B,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC;GACtB,IAAI,EAAE,uCAAuC,CAAC;GAC9C,KAAK,EAAE,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;IACzC,CAAC;;AAEL,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC;GACzC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;IAChB,CAAC;;AAEL,KAAK,CAAC,IAAI,GAAG,QAAQ;IACjB,oDAAoD;IACpD,qDAAqD;IACrD,yDAAyD,CAAC;;AAE9D,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;GAC7B,SAAS,EAAE,iBAAiB,CAAC;GAC7B,QAAQ,EAAE,sBAAsB,CAAC;GACjC,SAAS,EAAE,mCAAmC,CAAC;GAC/C,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC;IAClB,CAAC;;AAEL,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;GACvC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;GACf,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC;GACzB,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC;GAC3B,YAAY,EAAE,KAAK,CAAC,UAAU,CAAC;GAC/B,KAAK,EAAE,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC;GACxB,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;IAChB,CAAC;;;;;;AAML,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;;;;;;AAMhC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE;EAClC,MAAM,EAAE,4DAA4D;EACpE,SAAS,EAAE,GAAG;EACd,OAAO,EAAE,uCAAuC;CACjD,CAAC,CAAC;;AAEH,KAAK,CAAC,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC;GAC3C,KAAK,EAAE,KAAK;MACT,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,GAAG;MACnD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC;IAChD,CAAC;;;;;;AAML,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE;EAClC,OAAO,EAAE,+DAA+D;EACxE,KAAK,EAAE,2DAA2D;CACnE,CAAC,CAAC;;;;;;AAMH,SAAS,KAAK,CAAC,OAAO,EAAE;EACtB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;EACjB,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;EACvB,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC;EAC1C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;;EAE1B,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;IACpB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;MACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;KAC3B,MAAM;MACL,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;KACxB;GACF;CACF;;;;;;AAMD,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;;;;;;AAMpB,KAAK,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE,OAAO,EAAE;EACjC,IAAI,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;EAC/B,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACvB,CAAC;;;;;;AAMF,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,GAAG,EAAE;EAClC,GAAG,GAAG,GAAG;KACN,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC;KACzB,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;KACtB,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;KACvB,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;;EAE5B,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;CAC9B,CAAC;;;;;;AAMF,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE;;;EAC7C,IAAI,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;MAC/B,IAAI;MACJ,KAAK;MACL,GAAG;MACH,IAAI;MACJ,CAAC;MACD,IAAI;MACJ,KAAK;MACL,CAAC;MACD,CAAC,CAAC;;EAEN,OAAO,GAAG,EAAE;;IAEV,IAAI,GAAG,GAAGrC,MAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACtC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;QACrBA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;UACf,IAAI,EAAE,OAAO;SACd,CAAC,CAAC;OACJ;KACF;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACnC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;MACpCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,CAACA,MAAI,CAAC,OAAO,CAAC,QAAQ;YACxB,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YACvB,GAAG;OACR,CAAC,CAAC;MACH,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACrC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QACZ,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE;OACnB,CAAC,CAAC;MACH,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACtC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM;QACpB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;OACb,CAAC,CAAC;MACH,SAAS;KACV;;;IAGD,IAAI,GAAG,KAAK,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;MAC/C,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;;MAEnC,IAAI,GAAG;QACL,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC1D,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;QACvD,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;OAC7C,CAAC;;MAEF,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;UACnC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;SACzB,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;UAC3C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;SAC1B,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;UAC1C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;SACxB,MAAM;UACL,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;SACtB;OACF;;MAED,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;OAC/C;;MAEDA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;MAEvB,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACvC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC;QAC7B,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;OACb,CAAC,CAAC;MACH,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACjC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,IAAI;OACX,CAAC,CAAC;MACH,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACzC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;;MAEnCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,kBAAkB;OACzB,CAAC,CAAC;;MAEH,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;;;;;MAKrCA,MAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;;MAE3BA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,gBAAgB;OACvB,CAAC,CAAC;;MAEH,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACnC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;;MAEdA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC;OACzB,CAAC,CAAC;;;MAGH,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAACA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;;MAEpC,IAAI,GAAG,KAAK,CAAC;MACb,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC;MACf,CAAC,GAAG,CAAC,CAAC;;MAEN,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QACjB,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;;;;QAId,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QACpB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;;;;QAI9C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;UACxB,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC;UACrB,IAAI,GAAG,CAACA,MAAI,CAAC,OAAO,CAAC,QAAQ;cACzB,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,GAAG,KAAK,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;cACzD,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;SACnC;;;;QAID,IAAIA,MAAI,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;UAC1C,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;UACrC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;YACpD,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;YACxC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;WACX;SACF;;;;;QAKD,KAAK,GAAG,IAAI,IAAI,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;UACf,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,CAAC;UAC7C,IAAI,CAAC,KAAK,EAAE,EAAA,KAAK,GAAG,IAAI,CAAC,EAAA;SAC1B;;QAEDA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;UACf,IAAI,EAAE,KAAK;cACP,kBAAkB;cAClB,iBAAiB;SACtB,CAAC,CAAC;;;QAGHA,MAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;;QAE5BA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;UACf,IAAI,EAAE,eAAe;SACtB,CAAC,CAAC;OACJ;;MAEDA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,UAAU;OACjB,CAAC,CAAC;;MAEH,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACnC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAEA,MAAI,CAAC,OAAO,CAAC,QAAQ;YACvB,WAAW;YACX,MAAM;QACV,GAAG,EAAE,CAACA,MAAI,CAAC,OAAO,CAAC,SAAS;cACtB,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;QACpE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;OACb,CAAC,CAAC;MACH,SAAS;KACV;;;IAGD,IAAI,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;MACpD,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,GAAG;QACxC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QACZ,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;OACd,CAAC;MACF,SAAS;KACV;;;IAGD,IAAI,GAAG,KAAK,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;MAC7C,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;;MAEnC,IAAI,GAAG;QACL,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC1D,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC;QACvD,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;OACxD,CAAC;;MAEF,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;UACnC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC;SACzB,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;UAC3C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;SAC1B,MAAM,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;UAC1C,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;SACxB,MAAM;UACL,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;SACtB;OACF;;MAED,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;WAC1B,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;WAC/B,KAAK,CAAC,QAAQ,CAAC,CAAC;OACpB;;MAEDA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;MAEvB,SAAS;KACV;;;IAGD,IAAI,GAAG,KAAK,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;MACjD,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI;YAC3C,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACnB,GAAG,CAAC,CAAC,CAAC;OACX,CAAC,CAAC;MACH,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;;MAEnC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QACf,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;OACb,CAAC,CAAC;MACH,SAAS;KACV;;IAED,IAAI,GAAG,EAAE;MACP,MAAM;QACJ,KAAK,CAAC,yBAAyB,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;KACxD;GACF;;EAED,OAAO,IAAI,CAAC,MAAM,CAAC;CACpB,CAAC;;;;;;AAMF,IAAI,MAAM,GAAG;EACX,MAAM,EAAE,6BAA6B;EACrC,QAAQ,EAAE,0BAA0B;EACpC,GAAG,EAAE,IAAI;EACT,GAAG,EAAE,wDAAwD;EAC7D,IAAI,EAAE,yBAAyB;EAC/B,OAAO,EAAE,gCAAgC;EACzC,MAAM,EAAE,kCAAkC;EAC1C,MAAM,EAAE,gDAAgD;EACxD,EAAE,EAAE,uDAAuD;EAC3D,IAAI,EAAE,kCAAkC;EACxC,EAAE,EAAE,kBAAkB;EACtB,GAAG,EAAE,IAAI;EACT,IAAI,EAAE,oCAAoC;CAC3C,CAAC;;AAEF,MAAM,CAAC,OAAO,GAAG,wCAAwC,CAAC;AAC1D,MAAM,CAAC,KAAK,GAAG,gDAAgD,CAAC;;AAEhE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;GAC/B,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC;GACzB,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC;IACpB,CAAC;;AAEL,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;GACrC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC;IACxB,CAAC;;;;;;AAML,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;;;;;;AAMlC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE;EACzC,MAAM,EAAE,gEAAgE;EACxE,EAAE,EAAE,0DAA0D;CAC/D,CAAC,CAAC;;;;;;AAMH,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE;EACpC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE;EAC9C,GAAG,EAAE,sCAAsC;EAC3C,GAAG,EAAE,yBAAyB;EAC9B,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;KACvB,IAAI,EAAE,KAAK,CAAC;KACZ,GAAG,EAAE,aAAa,CAAC;MAClB;CACL,CAAC,CAAC;;;;;;AAMH,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,EAAE;EACpC,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;EACrC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;CAC9C,CAAC,CAAC;;;;;;AAMH,SAAS,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE;EACnC,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC;EAC1C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;EACnB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;EAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,QAAQ,CAAC;EACtD,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;;EAErC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;IACf,MAAM;MACJ,KAAK,CAAC,2CAA2C,CAAC,CAAC;GACtD;;EAED,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;IACpB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;MACvB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;KAC5B,MAAM;MACL,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC;KACzB;GACF,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;IAChC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC;GAC9B;CACF;;;;;;AAMD,WAAW,CAAC,KAAK,GAAG,MAAM,CAAC;;;;;;AAM3B,WAAW,CAAC,MAAM,GAAG,SAAS,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE;EACjD,IAAI,MAAM,GAAG,IAAI,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;EAC7C,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;CAC3B,CAAC;;;;;;AAMF,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,GAAG,EAAE;;;EAC3C,IAAI,GAAG,GAAG,EAAE;MACR,IAAI;MACJ,IAAI;MACJ,IAAI;MACJ,GAAG,CAAC;;EAER,OAAO,GAAG,EAAE;;IAEV,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACrC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;MACd,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACvC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;QAClB,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;YAC3BA,MAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAChCA,MAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,GAAGA,MAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;OACtC,MAAM;QACL,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,GAAG,IAAI,CAAC;OACb;MACD,GAAG,IAAIA,MAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;MAC5C,SAAS;KACV;;;IAGD,IAAI,CAACA,MAAI,CAAC,MAAM,KAAK,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;MACpD,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MACtB,IAAI,GAAG,IAAI,CAAC;MACZ,GAAG,IAAIA,MAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;MAC5C,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MAClC,IAAI,CAACA,MAAI,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;QACxCA,MAAI,CAAC,MAAM,GAAG,IAAI,CAAC;OACpB,MAAM,IAAIA,MAAI,CAAC,MAAM,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;QAChDA,MAAI,CAAC,MAAM,GAAG,KAAK,CAAC;OACrB;MACD,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,IAAIA,MAAI,CAAC,OAAO,CAAC,QAAQ;UACxBA,MAAI,CAAC,OAAO,CAAC,SAAS;YACpBA,MAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;UAChB,GAAG,CAAC,CAAC,CAAC,CAAA;MACV,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACnC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnCA,MAAI,CAAC,MAAM,GAAG,IAAI,CAAC;MACnB,GAAG,IAAIA,MAAI,CAAC,UAAU,CAAC,GAAG,EAAE;QAC1B,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QACZ,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;OACd,CAAC,CAAC;MACHA,MAAI,CAAC,MAAM,GAAG,KAAK,CAAC;MACpB,SAAS;KACV;;;IAGD,IAAI,CAAC,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;YAC/B,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;MAC1C,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;MAC/C,IAAI,GAAGA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;MACtC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QACvB,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QAChC,SAAS;OACV;MACDA,MAAI,CAAC,MAAM,GAAG,IAAI,CAAC;MACnB,GAAG,IAAIA,MAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;MAClCA,MAAI,CAAC,MAAM,GAAG,KAAK,CAAC;MACpB,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACrC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,IAAIA,MAAI,CAAC,QAAQ,CAAC,MAAM,CAACA,MAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC3D,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACjC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,IAAIA,MAAI,CAAC,QAAQ,CAAC,EAAE,CAACA,MAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MACvD,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACnC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,IAAIA,MAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;MACpD,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACjC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,IAAIA,MAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;MAC1B,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MAClC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,IAAIA,MAAI,CAAC,QAAQ,CAAC,GAAG,CAACA,MAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC9C,SAAS;KACV;;;IAGD,IAAI,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;MACnC,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;MACnC,GAAG,IAAIA,MAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAACA,MAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAC5D,SAAS;KACV;;IAED,IAAI,GAAG,EAAE;MACP,MAAM;QACJ,KAAK,CAAC,yBAAyB,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;KACxD;GACF;;EAED,OAAO,GAAG,CAAC;CACZ,CAAC;;;;;;AAMF,WAAW,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,GAAG,EAAE,IAAI,EAAE;EACrD,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;MACxB,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;;EAEnD,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;MAC3B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MACpD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACtD,CAAC;;;;;;AAMF,WAAW,CAAC,SAAS,CAAC,WAAW,GAAG,SAAS,IAAI,EAAE;EACjD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;EAC3C,OAAO,IAAI;;KAER,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC;;KAEzB,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC;;KAExB,OAAO,CAAC,yBAAyB,EAAE,UAAU,CAAC;;KAE9C,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;;KAEvB,OAAO,CAAC,8BAA8B,EAAE,UAAU,CAAC;;KAEnD,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;;KAEvB,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;CAChC,CAAC;;;;;;AAMF,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,IAAI,EAAE;EAC5C,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAA,OAAO,IAAI,CAAC,EAAA;EACtC,IAAI,GAAG,GAAG,EAAE;MACR,CAAC,GAAG,IAAI,CAAC,MAAM;MACf,CAAC,GAAG,CAAC;MACL,EAAE,CAAC;;EAEP,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;IACjB,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,EAAE;MACvB,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;KAC5B;IACD,GAAG,IAAI,IAAI,GAAG,EAAE,GAAG,GAAG,CAAC;GACxB;;EAED,OAAO,GAAG,CAAC;CACZ,CAAC;;;;;;AAMF,SAAS,QAAQ,CAAC,OAAO,EAAE;EACzB,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;CAC9B;;AAED,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE;EACtD,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;IAC1B,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7C,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,IAAI,EAAE;MAC/B,OAAO,GAAG,IAAI,CAAC;MACf,IAAI,GAAG,GAAG,CAAC;KACZ;GACF;;EAED,IAAI,CAAC,IAAI,EAAE;IACT,OAAO,aAAa;SACf,OAAO,GAAG,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACrC,iBAAiB,CAAC;GACvB;;EAED,OAAO,oBAAoB;MACvB,IAAI,CAAC,OAAO,CAAC,UAAU;MACvB,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC;MAClB,IAAI;OACH,OAAO,GAAG,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;MACrC,mBAAmB,CAAC;CACzB,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,UAAU,GAAG,SAAS,KAAK,EAAE;EAC9C,OAAO,gBAAgB,GAAG,KAAK,GAAG,iBAAiB,CAAC;CACrD,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE;EACvC,OAAO,IAAI,CAAC;CACb,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,OAAO,GAAG,SAAS,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE;EACtD,OAAO,IAAI;MACP,KAAK;MACL,OAAO;MACP,IAAI,CAAC,OAAO,CAAC,YAAY;MACzB,GAAG,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;MACzC,IAAI;MACJ,IAAI;MACJ,KAAK;MACL,KAAK;MACL,KAAK,CAAC;CACX,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,EAAE,GAAG,WAAW;EACjC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAC;CAClD,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,OAAO,EAAE;EAChD,IAAI,IAAI,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC;EACjC,OAAO,GAAG,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;CACxD,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,IAAI,EAAE;EAC3C,OAAO,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;CAClC,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,IAAI,EAAE;EAC5C,OAAO,KAAK,GAAG,IAAI,GAAG,QAAQ,CAAC;CAChC,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,MAAM,EAAE,IAAI,EAAE;EAChD,OAAO,WAAW;MACd,WAAW;MACX,MAAM;MACN,YAAY;MACZ,WAAW;MACX,IAAI;MACJ,YAAY;MACZ,YAAY,CAAC;CAClB,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,OAAO,EAAE;EAC9C,OAAO,QAAQ,GAAG,OAAO,GAAG,SAAS,CAAC;CACvC,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,SAAS,GAAG,SAAS,OAAO,EAAE,KAAK,EAAE;EACtD,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,GAAG,IAAI,CAAC;EACtC,IAAI,GAAG,GAAG,KAAK,CAAC,KAAK;MACjB,GAAG,GAAG,IAAI,GAAG,qBAAqB,GAAG,KAAK,CAAC,KAAK,GAAG,IAAI;MACvD,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC;EACrB,OAAO,GAAG,GAAG,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;CAC5C,CAAC;;;AAGF,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,IAAI,EAAE;EACzC,OAAO,UAAU,GAAG,IAAI,GAAG,WAAW,CAAC;CACxC,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,EAAE,GAAG,SAAS,IAAI,EAAE;EACrC,OAAO,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC;CAChC,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,QAAQ,GAAG,SAAS,IAAI,EAAE;EAC3C,OAAO,QAAQ,GAAG,IAAI,GAAG,SAAS,CAAC;CACpC,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,EAAE,GAAG,WAAW;EACjC,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC;CAC9C,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,GAAG,GAAG,SAAS,IAAI,EAAE;EACtC,OAAO,OAAO,GAAG,IAAI,GAAG,QAAQ,CAAC;CAClC,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;EACpD,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;IACzB,IAAI;MACF,IAAI,IAAI,GAAG,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SAC1C,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;SACtB,WAAW,EAAE,CAAC;KAClB,CAAC,OAAO,CAAC,EAAE;MACV,OAAO,EAAE,CAAC;KACX;IACD,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;MACxE,OAAO,EAAE,CAAC;KACX;GACF;EACD,IAAI,GAAG,GAAG,WAAW,GAAG,IAAI,GAAG,GAAG,CAAC;EACnC,IAAI,KAAK,EAAE;IACT,GAAG,IAAI,UAAU,GAAG,KAAK,GAAG,GAAG,CAAC;GACjC;EACD,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,MAAM,CAAC;EAC3B,OAAO,GAAG,CAAC;CACZ,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;EACrD,IAAI,GAAG,GAAG,YAAY,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,GAAG,GAAG,CAAC;EACvD,IAAI,KAAK,EAAE;IACT,GAAG,IAAI,UAAU,GAAG,KAAK,GAAG,GAAG,CAAC;GACjC;EACD,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,GAAG,GAAG,CAAC;EACvC,OAAO,GAAG,CAAC;CACZ,CAAC;;AAEF,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,SAAS,IAAI,EAAE;EACvC,OAAO,IAAI,CAAC;CACb,CAAC;;;;;;AAMF,SAAS,MAAM,CAAC,OAAO,EAAE;EACvB,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;EACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;EAClB,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC;EAC1C,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,QAAQ,CAAC;EAC9D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;EACtC,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;CACtC;;;;;;AAMD,MAAM,CAAC,KAAK,GAAG,SAAS,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE;EAC9C,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;EAC3C,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;CAC1B,CAAC;;;;;;AAMF,MAAM,CAAC,SAAS,CAAC,KAAK,GAAG,SAAS,GAAG,EAAE;;;EACrC,IAAI,CAAC,MAAM,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;EACtE,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;;EAE5B,IAAI,GAAG,GAAG,EAAE,CAAC;EACb,OAAO,IAAI,CAAC,IAAI,EAAE,EAAE;IAClB,GAAG,IAAIA,MAAI,CAAC,GAAG,EAAE,CAAC;GACnB;;EAED,OAAO,GAAG,CAAC;CACZ,CAAC;;;;;;AAMF,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,WAAW;EACjC,OAAO,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;CACvC,CAAC;;;;;;AAMF,MAAM,CAAC,SAAS,CAAC,IAAI,GAAG,WAAW;EACjC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;CACjD,CAAC;;;;;;AAMF,MAAM,CAAC,SAAS,CAAC,SAAS,GAAG,WAAW;;;EACtC,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;;EAE3B,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,MAAM,EAAE;IAClC,IAAI,IAAI,IAAI,GAAGA,MAAI,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC;GACjC;;EAED,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;CACjC,CAAC;;;;;;AAMF,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,WAAW;;;EAChC,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI;IACrB,KAAK,OAAO,EAAE;MACZ,OAAO,EAAE,CAAC;KACX;IACD,KAAK,IAAI,EAAE;MACT,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;KAC3B;IACD,KAAK,SAAS,EAAE;MACd,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO;QAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,KAAK;QAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KACpB;IACD,KAAK,MAAM,EAAE;MACX,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI;QACvC,IAAI,CAAC,KAAK,CAAC,IAAI;QACf,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;KACvB;IACD,KAAK,OAAO,EAAE;MACZ,IAAI,MAAM,GAAG,EAAE;UACX,IAAI,GAAG,EAAE;UACT,CAAC;UACD,GAAG;UACH,IAAI;UACJ,KAAK;UACL,CAAC,CAAC;;;MAGN,IAAI,GAAG,EAAE,CAAC;MACV,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC7C,KAAK,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAEA,MAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,IAAI,IAAIA,MAAI,CAAC,QAAQ,CAAC,SAAS;UAC7BA,MAAI,CAAC,MAAM,CAAC,MAAM,CAACA,MAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;UACxC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAEA,MAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;SAC7C,CAAC;OACH;MACD,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;;MAEvC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC5C,GAAG,GAAGA,MAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;;QAE1B,IAAI,GAAG,EAAE,CAAC;QACV,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;UAC/B,IAAI,IAAIA,MAAI,CAAC,QAAQ,CAAC,SAAS;YAC7BA,MAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1B,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAEA,MAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;WAC9C,CAAC;SACH;;QAED,IAAI,IAAIA,MAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;OACtC;MACD,OAAO,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;KAC1C;IACD,KAAK,kBAAkB,EAAE;MACvB,IAAI,IAAI,GAAG,EAAE,CAAC;;MAEd,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,gBAAgB,EAAE;QAC5C,IAAI,IAAIA,MAAI,CAAC,GAAG,EAAE,CAAC;OACpB;;MAED,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;KACvC;IACD,KAAK,YAAY,EAAE;MACjB,IAAI,IAAI,GAAG,EAAE;UACT,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;;MAEjC,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,UAAU,EAAE;QACtC,IAAI,IAAIA,MAAI,CAAC,GAAG,EAAE,CAAC;OACpB;;MAED,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;KAC1C;IACD,KAAK,iBAAiB,EAAE;MACtB,IAAI,IAAI,GAAG,EAAE,CAAC;;MAEd,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,eAAe,EAAE;QAC3C,IAAI,IAAIA,MAAI,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM;YAC9BA,MAAI,CAAC,SAAS,EAAE;YAChBA,MAAI,CAAC,GAAG,EAAE,CAAC;OAChB;;MAED,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACrC;IACD,KAAK,kBAAkB,EAAE;MACvB,IAAI,IAAI,GAAG,EAAE,CAAC;;MAEd,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,eAAe,EAAE;QAC3C,IAAI,IAAIA,MAAI,CAAC,GAAG,EAAE,CAAC;OACpB;;MAED,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACrC;IACD,KAAK,MAAM,EAAE;MACX,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;UAChD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;UACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;MACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACjC;IACD,KAAK,WAAW,EAAE;MAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;KACrE;IACD,KAAK,MAAM,EAAE;MACX,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;KAClD;GACF;CACF,CAAC;;;;;;AAMF,SAAS,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE;EAC5B,OAAO,IAAI;KACR,OAAO,CAAC,CAAC,MAAM,GAAG,cAAc,GAAG,IAAI,EAAE,OAAO,CAAC;KACjD,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;KACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;KACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;KACvB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;CAC3B;;AAED,SAAS,QAAQ,CAAC,IAAI,EAAE;;EAEtB,OAAO,IAAI,CAAC,OAAO,CAAC,2CAA2C,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE;IAC9E,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IACpB,IAAI,CAAC,KAAK,OAAO,EAAE,EAAA,OAAO,GAAG,CAAC,EAAA;IAC9B,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;MACvB,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG;UACtB,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;UACjD,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;KAC1C;IACD,OAAO,EAAE,CAAC;GACX,CAAC,CAAC;CACJ;;AAED,SAAS,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE;EAC3B,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;EACrB,GAAG,GAAG,GAAG,IAAI,EAAE,CAAC;EAChB,OAAO,SAAS,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE;IAC9B,IAAI,CAAC,IAAI,EAAE,EAAA,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,EAAA;IACzC,GAAG,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC;IACxB,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IACxC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACjC,OAAO,IAAI,CAAC;GACb,CAAC;CACH;;AAED,SAAS,IAAI,GAAG,EAAE;AAClB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;;AAEjB,SAAS,KAAK,CAAC,GAAG,EAAE;;;EAClB,IAAI,CAAC,GAAG,CAAC;MACL,MAAM;MACN,GAAG,CAAC;;EAER,OAAO,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAChC,MAAM,GAAGK,WAAS,CAAC,CAAC,CAAC,CAAC;IACtB,KAAK,GAAG,IAAI,MAAM,EAAE;MAClB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE;QACrD,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;OACxB;KACF;GACF;;EAED,OAAO,GAAG,CAAC;CACZ;;;;;;;AAOD,SAAS,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE;EAClC,IAAI,QAAQ,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;IACzC,IAAI,CAAC,QAAQ,EAAE;MACb,QAAQ,GAAG,GAAG,CAAC;MACf,GAAG,GAAG,IAAI,CAAC;KACZ;;IAED,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;;IAE5C,IAAI,SAAS,GAAG,GAAG,CAAC,SAAS;QACzB,MAAM;QACN,OAAO;QACP,CAAC,GAAG,CAAC,CAAC;;IAEV,IAAI;MACF,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;KAC7B,CAAC,OAAO,CAAC,EAAE;MACV,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;KACpB;;IAED,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;;IAExB,IAAI,IAAI,GAAG,SAAS,GAAG,EAAE;MACvB,IAAI,GAAG,EAAE;QACP,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;QAC1B,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC;OACtB;;MAED,IAAI,GAAG,CAAC;;MAER,IAAI;QACF,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;OACjC,CAAC,OAAO,CAAC,EAAE;QACV,GAAG,GAAG,CAAC,CAAC;OACT;;MAED,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;;MAE1B,OAAO,GAAG;UACN,QAAQ,CAAC,GAAG,CAAC;UACb,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KACzB,CAAC;;IAEF,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;MACtC,OAAO,IAAI,EAAE,CAAC;KACf;;IAED,OAAO,GAAG,CAAC,SAAS,CAAC;;IAErB,IAAI,CAAC,OAAO,EAAE,EAAA,OAAO,IAAI,EAAE,CAAC,EAAA;;IAE5B,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;MAC7B,CAAC,SAAS,KAAK,EAAE;QACf,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;UACzB,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,CAAC;SAC5B;QACD,OAAO,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,GAAG,EAAE,IAAI,EAAE;UAC3D,IAAI,GAAG,EAAE,EAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAA;UAC1B,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE;YACvC,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,CAAC;WAC5B;UACD,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;UAClB,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;UACrB,EAAE,OAAO,IAAI,IAAI,EAAE,CAAC;SACrB,CAAC,CAAC;OACJ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;KACf;;IAED,OAAO;GACR;EACD,IAAI;IACF,IAAI,GAAG,EAAE,EAAA,GAAG,GAAG,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,EAAA;IAC/C,OAAO,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;GAC/C,CAAC,OAAO,CAAC,EAAE;IACV,CAAC,CAAC,OAAO,IAAI,yDAAyD,CAAC;IACvE,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE;MACnC,OAAO,+BAA+B;UAClC,MAAM,CAAC,CAAC,CAAC,OAAO,GAAG,EAAE,EAAE,IAAI,CAAC;UAC5B,QAAQ,CAAC;KACd;IACD,MAAM,CAAC,CAAC;GACT;CACF;;;;;;AAMD,MAAM,CAAC,OAAO;AACd,MAAM,CAAC,UAAU,GAAG,SAAS,GAAG,EAAE;EAChC,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;EAC5B,OAAO,MAAM,CAAC;CACf,CAAC;;AAEF,MAAM,CAAC,QAAQ,GAAG;EAChB,GAAG,EAAE,IAAI;EACT,MAAM,EAAE,IAAI;EACZ,MAAM,EAAE,KAAK;EACb,QAAQ,EAAE,KAAK;EACf,QAAQ,EAAE,KAAK;EACf,SAAS,EAAE,IAAI;EACf,MAAM,EAAE,IAAI;EACZ,UAAU,EAAE,KAAK;EACjB,MAAM,EAAE,KAAK;EACb,SAAS,EAAE,IAAI;EACf,UAAU,EAAE,OAAO;EACnB,WAAW,EAAE,KAAK;EAClB,YAAY,EAAE,EAAE;EAChB,QAAQ,EAAE,IAAI,QAAQ;EACtB,KAAK,EAAE,KAAK;CACb,CAAC;;;;;;AAMF,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AACvB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC;;AAE7B,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;;AAE3B,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AACrB,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC;;AAEzB,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;AACjC,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC;;AAExC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC;;AAEtB,IAAI,QAAa,KAAK,WAAW,IAAI,QAAc,KAAK,QAAQ,EAAE;EAChE,cAAc,GAAG,MAAM,CAAC;CACzB,MAAM,IAAI,OAAOiC,SAAM,KAAK,UAAU,IAAIA,SAAM,CAAC,GAAG,EAAE;EACrDA,SAAM,CAAC,WAAW,EAAE,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC;CACvC,MAAM;EACL,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;CACtB;;CAEA,EAAE,IAAI,CAAC,WAAW;EACjB,OAAO,IAAI,KAAK,OAAO,MAAM,KAAK,WAAW,GAAG,MAAM,GAAG+B,cAAM,CAAC,CAAC;CAClE,EAAE,CAAC,CAAC;;;ACnwCL,MAAM,CAAC,UAAU,CAAC;EAChB,GAAG,EAAE,IAAI;EACT,WAAW,EAAE,IAAI;CAClB,CAAC,CAAC;;AAEH,eAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjC3E,IAAI,gBAAgB,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;EACzE,gBAAgB,CAAC,OAAO,CAAC,UAAA,EAAE,EAAC;IAC1BA,IAAI,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC;;IAE3B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACpCA,IAAI,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IAC9D,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;;IAEzB,EAAE,CAAC,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;GAChC,CAAC,CAAC;CACJ,CAAA;;;;;;;ACdD,IAAI,KAAK,GAAG,CAAC,OAAO,MAAM,KAAK,WAAW;GACvC,MAAM;;EAEP,CAAC,OAAO,iBAAiB,KAAK,WAAW,IAAI,IAAI,YAAY,iBAAiB;IAC5E,IAAI;IACJ,EAAE;EACJ,CAAC;;;;;;;;AAQH,IAAI,KAAK,GAAG,CAAC,UAAU;;;AAGvB,IAAI,IAAI,GAAG,0BAA0B,CAAC;AACtC,IAAI,QAAQ,GAAG,CAAC,CAAC;;AAEjB,IAAI,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG;CACrB,IAAI,EAAE;EACL,MAAM,EAAE,UAAU,MAAM,EAAE;GACzB,IAAI,MAAM,YAAY,KAAK,EAAE;IAC5B,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3E,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,OAAO,EAAE;IAC3C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM;IACN,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACnF;GACD;;EAED,IAAI,EAAE,UAAU,CAAC,EAAE;GAClB,OAAO,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;GACtE;;EAED,KAAK,EAAE,UAAU,GAAG,EAAE;GACrB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;IACjB,MAAM,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC1D;GACD,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC;GACnB;;;EAGD,KAAK,EAAE,UAAU,CAAC,EAAE;GACnB,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;GAE1B,QAAQ,IAAI;IACX,KAAK,QAAQ;KACZ,IAAI,KAAK,GAAG,EAAE,CAAC;;KAEf,KAAK,IAAI,GAAG,IAAI,CAAC,EAAE;MAClB,IAAI,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;OAC1B,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;OAClC;MACD;;KAED,OAAO,KAAK,CAAC;;IAEd,KAAK,OAAO;;KAEX,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAChE;;GAED,OAAO,CAAC,CAAC;GACT;EACD;;CAED,SAAS,EAAE;EACV,MAAM,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE;GAC5B,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;;GAEzC,KAAK,IAAI,GAAG,IAAI,KAAK,EAAE;IACtB,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IACvB;;GAED,OAAO,IAAI,CAAC;GACZ;;;;;;;;;;;EAWD,YAAY,EAAE,UAAU,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;GACrD,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,SAAS,CAAC;GAC3B,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;;GAE3B,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE;IAC1B,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;;IAEtB,KAAK,IAAI,QAAQ,IAAI,MAAM,EAAE;KAC5B,IAAI,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;MACpC,OAAO,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;MACrC;KACD;;IAED,OAAO,OAAO,CAAC;IACf;;GAED,IAAI,GAAG,GAAG,EAAE,CAAC;;GAEb,KAAK,IAAI,KAAK,IAAI,OAAO,EAAE;;IAE1B,IAAI,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;;KAElC,IAAI,KAAK,IAAI,MAAM,EAAE;;MAEpB,KAAK,IAAI,QAAQ,IAAI,MAAM,EAAE;;OAE5B,IAAI,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE;QACpC,GAAG,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjC;OACD;MACD;;KAED,GAAG,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;KAC5B;IACD;;;GAGD,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,SAAS,GAAG,EAAE,KAAK,EAAE;IACjD,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,MAAM,EAAE;KAC5C,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;KAChB;IACD,CAAC,CAAC;;GAEH,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;GAC1B;;;EAGD,GAAG,EAAE,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE;GACzC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;GACxB,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE;IAChB,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;KACxB,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC;;KAErC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;MACnE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;MACnC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;MAC/C;UACI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;MACvE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;MACnC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;MAC5C;KACD;IACD;GACD;EACD;CACD,OAAO,EAAE,EAAE;;CAEX,YAAY,EAAE,SAAS,KAAK,EAAE,QAAQ,EAAE;EACvC,IAAI,GAAG,GAAG;GACT,QAAQ,EAAE,QAAQ;GAClB,QAAQ,EAAE,kGAAkG;GAC5G,CAAC;;EAEF,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;;EAExC,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;;EAEvE,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG;GAChD,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,KAAK,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;GAC1D;EACD;;CAED,gBAAgB,EAAE,SAAS,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE;;EAEpD,IAAI,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;;EAExC,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;GAC9C,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;GAC3B;;EAED,IAAI,MAAM,EAAE;GACX,QAAQ,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;GACpE,OAAO,GAAG,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;GAChC;;;EAGD,OAAO,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,YAAY,GAAG,QAAQ,CAAC;;;EAGvG,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;;EAE5B,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;GACjC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,YAAY,GAAG,QAAQ,CAAC;GACrG;;EAED,IAAI,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC;;EAE/B,IAAI,GAAG,GAAG;GACT,OAAO,EAAE,OAAO;GAChB,QAAQ,EAAE,QAAQ;GAClB,OAAO,EAAE,OAAO;GAChB,IAAI,EAAE,IAAI;GACV,CAAC;;EAEF,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;;EAExC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;GAC9B,IAAI,GAAG,CAAC,IAAI,EAAE;IACb,GAAG,CAAC,OAAO,CAAC,WAAW,GAAG,GAAG,CAAC,IAAI,CAAC;IACnC;GACD,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;GAC7B,OAAO;GACP;;EAED,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;;EAErC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;GAC1B,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;;GAEpC,MAAM,CAAC,SAAS,GAAG,SAAS,GAAG,EAAE;IAChC,GAAG,CAAC,eAAe,GAAG,GAAG,CAAC,IAAI,CAAC;;IAE/B,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;;IAElC,GAAG,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG,CAAC,eAAe,CAAC;;IAE5C,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAC7B,CAAC;;GAEF,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC;IACjC,QAAQ,EAAE,GAAG,CAAC,QAAQ;IACtB,IAAI,EAAE,GAAG,CAAC,IAAI;IACd,cAAc,EAAE,IAAI;IACpB,CAAC,CAAC,CAAC;GACJ;OACI;GACJ,GAAG,CAAC,eAAe,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;;GAEvE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;;GAElC,GAAG,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG,CAAC,eAAe,CAAC;;GAE5C,QAAQ,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;GAEnC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;GACpC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;GAC7B;EACD;;CAED,SAAS,EAAE,UAAU,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE;EAC7C,IAAI,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;EACvC,OAAO,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;EACxD;;CAED,QAAQ,EAAE,SAAS,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE;EAC3C,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC;;EAEpB,IAAI,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC;;EAEpB,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;;EAExB,IAAI,IAAI,EAAE;GACT,KAAK,IAAI,KAAK,IAAI,IAAI,EAAE;IACvB,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B;;GAED,OAAO,OAAO,CAAC,IAAI,CAAC;GACpB;;EAED,SAAS,EAAE,KAAK,IAAI,KAAK,IAAI,OAAO,EAAE;GACrC,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;IACrD,SAAS;IACT;;GAED,IAAI,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;GAC9B,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,OAAO,IAAI,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC;;GAEvE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;IACzC,IAAI,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC;KACxB,MAAM,GAAG,OAAO,CAAC,MAAM;KACvB,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU;KACjC,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM;KACzB,gBAAgB,GAAG,CAAC;KACpB,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;;IAEvB,IAAI,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE;;KAEtC,IAAI,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;KAC5D,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,GAAG,GAAG,CAAC,CAAC;KAC9D;;IAED,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC;;;IAGrC,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE;;KAErE,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;;KAEpB,IAAI,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;;MAEhC,MAAM,SAAS,CAAC;MAChB;;KAED,IAAI,GAAG,YAAY,KAAK,EAAE;MACzB,SAAS;MACT;;KAED,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;;KAEtB,IAAI,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;SACzB,MAAM,GAAG,CAAC,CAAC;;;KAGf,IAAI,CAAC,KAAK,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;MAC/C,OAAO,CAAC,SAAS,GAAG,GAAG,CAAC;MACxB,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;MAC3B,IAAI,CAAC,KAAK,EAAE;OACX,MAAM;OACN;;MAED,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,IAAI,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;UACvD,EAAE,GAAG,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM;UAClC,CAAC,GAAG,CAAC;UACL,CAAC,GAAG,GAAG,CAAC;;MAEZ,KAAK,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE;OACrD,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;;OAEtB,IAAI,IAAI,IAAI,CAAC,EAAE;QACd,EAAE,CAAC,CAAC;QACJ,GAAG,GAAG,CAAC,CAAC;QACR;OACD;;;;;;MAMD,IAAI,MAAM,CAAC,CAAC,CAAC,YAAY,KAAK,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE;OACvD,SAAS;OACT;;;MAGD,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC;MACf,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;MACzB,KAAK,CAAC,KAAK,IAAI,GAAG,CAAC;MACnB;;KAED,IAAI,CAAC,KAAK,EAAE;MACX,SAAS;MACT;;KAED,GAAG,UAAU,EAAE;MACd,gBAAgB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;MACnC;;KAED,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,GAAG,gBAAgB;SACrC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC;SACxC,EAAE,GAAG,IAAI,GAAG,KAAK,CAAC,MAAM;SACxB,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;SAC3B,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;;KAE1B,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;;KAEvB,IAAI,MAAM,EAAE;MACX,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;MAClB;;KAED,IAAI,OAAO,GAAG,IAAI,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;;KAEhG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;KAEnB,IAAI,KAAK,EAAE;MACV,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;MACjB;;KAED,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;KAC3C;IACD;GACD;;EAED,OAAO,MAAM,CAAC;EACd;;CAED,KAAK,EAAE;EACN,GAAG,EAAE,EAAE;;EAEP,GAAG,EAAE,UAAU,IAAI,EAAE,QAAQ,EAAE;GAC9B,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC;;GAExB,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;;GAEhC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;GAC3B;;EAED,GAAG,EAAE,UAAU,IAAI,EAAE,GAAG,EAAE;GACzB,IAAI,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;;GAElC,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;IACpC,OAAO;IACP;;GAED,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG;IACnD,QAAQ,CAAC,GAAG,CAAC,CAAC;IACd;GACD;EACD;CACD,CAAC;;AAEF,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,SAAS,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE;CACxE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;CACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;CACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;;CAEnB,IAAI,CAAC,MAAM,GAAG,CAAC,UAAU,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;CAC1C,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;CACvB,CAAC;;AAEF,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE;CAC/C,IAAI,OAAO,CAAC,IAAI,QAAQ,EAAE;EACzB,OAAO,CAAC,CAAC;EACT;;CAED,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE;EAC/B,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,OAAO,EAAE;GAC9B,OAAO,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;GAC7C,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;EACZ;;CAED,IAAI,GAAG,GAAG;EACT,IAAI,EAAE,CAAC,CAAC,IAAI;EACZ,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC;EACrD,GAAG,EAAE,MAAM;EACX,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC;EAC1B,UAAU,EAAE,EAAE;EACd,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,MAAM;EACd,CAAC;;CAEF,IAAI,GAAG,CAAC,IAAI,IAAI,SAAS,EAAE;EAC1B,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC;EACtC;;CAED,IAAI,CAAC,CAAC,KAAK,EAAE;EACZ,IAAI,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,OAAO,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;EACrE,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;EACjD;;CAED,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;;CAEzB,IAAI,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE;EAC/D,OAAO,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,GAAG,CAAC;EAChF,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;CAEb,OAAO,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,UAAU,GAAG,GAAG,GAAG,UAAU,GAAG,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC;;CAElJ,CAAC;;AAEF,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;CACpB,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;;EAE5B,OAAO,KAAK,CAAC,KAAK,CAAC;EACnB;;CAED,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,GAAG,EAAE;EAC/C,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;MAC9B,IAAI,GAAG,OAAO,CAAC,QAAQ;MACvB,IAAI,GAAG,OAAO,CAAC,IAAI;MACnB,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;;EAE5C,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;EAC9D,IAAI,cAAc,EAAE;GACnB,KAAK,CAAC,KAAK,EAAE,CAAC;GACd;EACD,EAAE,KAAK,CAAC,CAAC;;CAEV,OAAO,KAAK,CAAC,KAAK,CAAC;CACnB;;;AAGD,IAAI,MAAM,GAAG,QAAQ,CAAC,aAAa,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;;AAEpG,IAAI,MAAM,EAAE;CACX,CAAC,CAAC,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC;;CAExB,IAAI,QAAQ,CAAC,gBAAgB,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE;EACrE,GAAG,QAAQ,CAAC,UAAU,KAAK,SAAS,EAAE;GACrC,IAAI,MAAM,CAAC,qBAAqB,EAAE;IACjC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IAC7C,MAAM;IACN,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IACtC;GACD;OACI;GACJ,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC;GAC9D;EACD;CACD;;AAED,OAAO,KAAK,CAAC,KAAK,CAAC;;CAElB,GAAG,CAAC;;AAEL,IAAI,QAAa,KAAK,WAAW,IAAI,MAAM,CAAC,OAAO,EAAE;CACpD,cAAc,GAAG,KAAK,CAAC;CACvB;;;AAGD,IAAI,OAAO2E,cAAM,KAAK,WAAW,EAAE;CAClCA,cAAM,CAAC,KAAK,GAAG,KAAK,CAAC;CACrB;;;;;;;AAOD,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG;CACxB,SAAS,EAAE,iBAAiB;CAC5B,QAAQ,EAAE,gBAAgB;CAC1B,SAAS,EAAE,qBAAqB;CAChC,OAAO,EAAE,yBAAyB;CAClC,KAAK,EAAE;EACN,OAAO,EAAE,uGAAuG;EAChH,MAAM,EAAE;GACP,KAAK,EAAE;IACN,OAAO,EAAE,iBAAiB;IAC1B,MAAM,EAAE;KACP,aAAa,EAAE,OAAO;KACtB,WAAW,EAAE,cAAc;KAC3B;IACD;GACD,YAAY,EAAE;IACb,OAAO,EAAE,iCAAiC;IAC1C,MAAM,EAAE;KACP,aAAa,EAAE,QAAQ;KACvB;IACD;GACD,aAAa,EAAE,MAAM;GACrB,WAAW,EAAE;IACZ,OAAO,EAAE,WAAW;IACpB,MAAM,EAAE;KACP,WAAW,EAAE,cAAc;KAC3B;IACD;;GAED;EACD;CACD,QAAQ,EAAE,mBAAmB;CAC7B,CAAC;;;AAGF,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,GAAG,EAAE;;CAErC,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;EAC1B,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;EAC5D;CACD,CAAC,CAAC;;AAEH,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;AAC7C,KAAK,CAAC,SAAS,CAAC,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;AAC9C,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;AAChD,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC;;;;;;;AAO7C,KAAK,CAAC,SAAS,CAAC,GAAG,GAAG;CACrB,SAAS,EAAE,kBAAkB;CAC7B,QAAQ,EAAE;EACT,OAAO,EAAE,2BAA2B;EACpC,MAAM,EAAE;GACP,MAAM,EAAE,SAAS;;GAEjB;EACD;CACD,KAAK,EAAE,8DAA8D;CACrE,UAAU,EAAE,8BAA8B;CAC1C,QAAQ,EAAE;EACT,OAAO,EAAE,6CAA6C;EACtD,MAAM,EAAE,IAAI;EACZ;CACD,UAAU,EAAE,wBAAwB;CACpC,WAAW,EAAE,iBAAiB;CAC9B,UAAU,EAAE,mBAAmB;CAC/B,aAAa,EAAE,UAAU;CACzB,CAAC;;AAEF,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;;AAElF,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE;CAC3B,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,EAAE;EAC7C,OAAO,EAAE;GACR,OAAO,EAAE,yCAAyC;GAClD,UAAU,EAAE,IAAI;GAChB,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG;GAC3B,KAAK,EAAE,cAAc;GACrB;EACD,CAAC,CAAC;;CAEH,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE;EACpD,YAAY,EAAE;GACb,OAAO,EAAE,sBAAsB;GAC/B,MAAM,EAAE;IACP,WAAW,EAAE;KACZ,OAAO,EAAE,YAAY;KACrB,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM;KACzC;IACD,aAAa,EAAE,uBAAuB;IACtC,YAAY,EAAE;KACb,OAAO,EAAE,KAAK;KACd,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG;KAC3B;IACD;GACD,KAAK,EAAE,cAAc;GACrB;EACD,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;CAC/B;;;;;;AAMD,KAAK,CAAC,SAAS,CAAC,KAAK,GAAG;CACvB,SAAS,EAAE;EACV;GACC,OAAO,EAAE,2BAA2B;GACpC,UAAU,EAAE,IAAI;GAChB;EACD;GACC,OAAO,EAAE,kBAAkB;GAC3B,UAAU,EAAE,IAAI;GAChB;EACD;CACD,QAAQ,EAAE;EACT,OAAO,EAAE,8CAA8C;EACvD,MAAM,EAAE,IAAI;EACZ;CACD,YAAY,EAAE;EACb,OAAO,EAAE,sGAAsG;EAC/G,UAAU,EAAE,IAAI;EAChB,MAAM,EAAE;GACP,WAAW,EAAE,SAAS;GACtB;EACD;CACD,SAAS,EAAE,0GAA0G;CACrH,SAAS,EAAE,kBAAkB;CAC7B,UAAU,EAAE,mBAAmB;CAC/B,QAAQ,EAAE,+CAA+C;CACzD,UAAU,EAAE,yDAAyD;CACrE,aAAa,EAAE,eAAe;CAC9B,CAAC;;;;;;;AAOF,KAAK,CAAC,SAAS,CAAC,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE;CAC5D,SAAS,EAAE,2TAA2T;CACtU,QAAQ,EAAE,8EAA8E;;CAExF,UAAU,EAAE,uDAAuD;CACnE,UAAU,EAAE,kEAAkE;CAC9E,CAAC,CAAC;;AAEH,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,SAAS,EAAE;CACrD,OAAO,EAAE;EACR,OAAO,EAAE,8EAA8E;EACvF,UAAU,EAAE,IAAI;EAChB,MAAM,EAAE,IAAI;EACZ;CACD,CAAC,CAAC;;AAEH,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE,QAAQ,EAAE;CACpD,iBAAiB,EAAE;EAClB,OAAO,EAAE,uBAAuB;EAChC,MAAM,EAAE,IAAI;EACZ,MAAM,EAAE;GACP,eAAe,EAAE;IAChB,OAAO,EAAE,aAAa;IACtB,MAAM,EAAE;KACP,2BAA2B,EAAE;MAC5B,OAAO,EAAE,WAAW;MACpB,KAAK,EAAE,aAAa;MACpB;KACD,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,UAAU;KAChC;IACD;GACD,QAAQ,EAAE,SAAS;GACnB;EACD;CACD,CAAC,CAAC;;AAEH,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE;CAC3B,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,EAAE;EAC7C,QAAQ,EAAE;GACT,OAAO,EAAE,2CAA2C;GACpD,UAAU,EAAE,IAAI;GAChB,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,UAAU;GAClC,KAAK,EAAE,qBAAqB;GAC5B;EACD,CAAC,CAAC;CACH;;AAED,KAAK,CAAC,SAAS,CAAC,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC;;;;;;AAMhD,CAAC,YAAY;CACZ,IAAI,OAAO,IAAI,KAAK,WAAW,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;EAC5F,OAAO;EACP;;CAED,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,WAAW;;EAErC,IAAI,UAAU,GAAG;GAChB,IAAI,EAAE,YAAY;GAClB,IAAI,EAAE,QAAQ;GACd,IAAI,EAAE,MAAM;GACZ,KAAK,EAAE,YAAY;GACnB,MAAM,EAAE,YAAY;GACpB,IAAI,EAAE,MAAM;GACZ,KAAK,EAAE,OAAO;GACd,GAAG,EAAE,GAAG;GACR,KAAK,EAAE,OAAO;GACd,CAAC;;EAEF,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE;GAC3B,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,GAAG,EAAE;IAC7F,IAAI,GAAG,GAAG,GAAG,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;;IAEvC,IAAI,QAAQ,EAAE,MAAM,GAAG,GAAG,CAAC;IAC3B,IAAI,IAAI,GAAG,gCAAgC,CAAC;IAC5C,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;KAC9C,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;KAC3B;;IAED,IAAI,MAAM,EAAE;KACX,QAAQ,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KACpD;;IAED,IAAI,CAAC,QAAQ,EAAE;KACd,IAAI,SAAS,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;KACrD,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC;KAC9C;;IAED,IAAI,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC1C,IAAI,CAAC,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;;IAExC,GAAG,CAAC,WAAW,GAAG,EAAE,CAAC;;IAErB,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;;IAE9B,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;;IAEtB,IAAI,GAAG,GAAG,IAAI,cAAc,EAAE,CAAC;;IAE/B,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;;IAE3B,GAAG,CAAC,kBAAkB,GAAG,YAAY;KACpC,IAAI,GAAG,CAAC,UAAU,IAAI,CAAC,EAAE;;MAExB,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,YAAY,EAAE;OACzC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,YAAY,CAAC;;OAEpC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;OAC7B;WACI,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE;OAC3B,IAAI,CAAC,WAAW,GAAG,UAAU,GAAG,GAAG,CAAC,MAAM,GAAG,wBAAwB,GAAG,GAAG,CAAC,UAAU,CAAC;OACvF;WACI;OACJ,IAAI,CAAC,WAAW,GAAG,0CAA0C,CAAC;OAC9D;MACD;KACD,CAAC;;IAEF,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC,CAAC;GACH;;EAED,CAAC;;CAEF,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;;CAExE,GAAG,CAAC;;;ACxxBL,aAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjC3E,IAAI,YAAY,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC;EAClE,YAAY,CAAC,OAAO,CAAC,UAAA,EAAE,EAAC;IACtBA,IAAI,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC;IAC7B,EAAE,CAAC,SAAS,GAAG,EAAE,CAAC;IAClBA,IAAI,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IAC3CA,IAAI,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAClC,IAAI,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE;;MAEnC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;MACpCA,IAAI,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;MAChC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,IAAI,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;MAC9D,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;MACzBA,IAAI,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;MACjC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;MACjB,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;KACnB,MAAM;MACL,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;KACnB;IACDA,IAAI,WAAW,GAAG,OAAO,CAAC;IAC1B,IAAI4E,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;MAC7B,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,WAAW,GAAG,QAAQ,CAAC,CAAC;MAChD,WAAW,GAAGA,KAAK,CAAC,SAAS,CAAC,OAAO,EAAEA,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;KACnE;IACD,CAAC,CAAC,SAAS,GAAG,WAAW,CAAC;GAC3B,CAAC,CAAC;CACJ,CAAA;;AC5BD,cAAe,SAAS,GAAG,EAAE,IAAI,EAAE;;EAEjC,IAAI,SAAS,GAAG,GAAG,CAAC,gBAAgB;IAClC,GAAG,CAAC,IAAI;IACR,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS;GACrC,CAAC;EACF,OAAO,SAAS,CAAC,QAAQ,EAAE,EAAE;IAC3B,IAAI,CAAC,GAAG,SAAS,CAAC,WAAW;QACzB,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC;IACvB,IAAI,IAAI,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE;MACzB,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;MACpB,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;MACzB,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC;KACpB;GACF;CACF,CAAA;;AAED,SAAS,UAAU,CAAC,IAAI,EAAE;EACxB,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;EAChC,IAAI,MAAM,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;EAC1L,OAAO,MAAM;SACN,MAAM,CAAC,QAAQ,KAAK,QAAQ;SAC5B,MAAM,CAAC,QAAQ,KAAK,OAAO;SAC3B,MAAM,CAAC,QAAQ,KAAK,MAAM;SAC1B,MAAM,CAAC,QAAQ,KAAK,KAAK;SACzB,MAAM,CAAC,QAAQ,KAAK,MAAM;SAC1B,MAAM,CAAC,QAAQ,KAAK,WAAW;SAC/B,MAAM,CAAC,QAAQ,KAAK,WAAW;SAC/B,MAAM,CAAC,QAAQ,KAAK,SAAS;SAC7B,MAAM,CAAC,QAAQ,KAAK,SAAS;SAC7B,MAAM,CAAC,QAAQ,KAAK,iBAAiB;SACrC,MAAM,CAAC,QAAQ,KAAK,WAAW;SAC/B,MAAM,CAAC,QAAQ,KAAK,CAAC;SACrB,CAAC,MAAM,CAAC;CAChB;;;;;;;;;;;;;AAaD,SAAS,WAAW,CAAC,IAAI,CAAC;;;EAGxB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;EACrC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;;;;;;;;;;;;;;;;EAgBtD,OAAO,IAAI,CAAC;CACb;;AAED,SAAS,MAAM,CAAC,IAAI,EAAE;;EAEpB,IAAI,GAAG,IAAI;KACR,OAAO,CAAC,4BAA4B,EAAE,YAAY,CAAC;KACnD,OAAO,CAAC,2CAA2C,EAAE,YAAY,CAAC;KAClE,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC;KAChC,OAAO,CAAC,cAAc,EAAE,YAAY,CAAC;KACrC,OAAO,CAAC,mBAAmB,EAAE,YAAY,CAAC;KAC1C,OAAO,CAAC,oCAAoC,EAAE,YAAY,CAAC;KAC3D,OAAO,CAAC,gEAAgE,EAAE,YAAY,CAAC;KACvF,OAAO,CAAC,+FAA+F,EAAE,UAAU,CAAC;KACpH,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC;KACzB,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC;KAC5B,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;;;EAG3B,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;EACjC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;EACjC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;EACjC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;;EAEjC,OAAO,IAAI,CAAC;CACb,AAED,AAMC,AAAC;;;;AClGF,eAAe,SAAS,GAAG,EAAE;EAC3B5E,IAAI,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;EACpC,CAAC,CAAC,WAAW,GAAG6E,MAAI,CAAC;EACrB,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;CAC1C,CAAA;;ACND;;AAEA,uBAAe,SAAS,IAAI,EAAE;;;EAG5B,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC;;EAE9B,IAAI,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;EACpD,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC;MAClG,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;MACrC,QAAQ,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,IAAI,eAAe,CAAC;;EAElG,IAAI,QAAQ;IACV,CAAC,SAAS,GAAG;;MAEX,EAAE,KAAK,EAAE;QACP,OAAO,EAAE,OAAO;QAChB,KAAK,EAAE,sCAAsC;QAC7C,WAAW,EAAE,2CAA2C;QACxD,oBAAoB,EAAE,wFAAwF;OAC/G,CAAC;;MAEF,EAAE,IAAI,EAAE;QACN,CAAC,YAAY,EAAE,QAAQ,CAAC;QACxB,CAAC,SAAS,EAAE,eAAe,CAAC;QAC5B,CAAC,SAAS,EAAE;UACV,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;UAC5C,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAC7C,CAAC;QACF,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EACzC,CAAC;;MAEF,CAAC,IAAI,EAAE;QACL,CAAC,OAAO,EAAE;;UAER,CAAC,gBAAgB,EAAE;YACjB,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;YAC3D,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;YAC1F,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YACzB,CAAC,QAAQ,EAAE;cACT,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;cACvB,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAC7B,CAAC,EACH,CAAC;;UAEF,CAAC,aAAa,EAAE;YACd,CAAC,gBAAgB,EAAE;cACjB,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;cAC1B,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,EAC3B,CAAC;YACF,CAAC,cAAc,EAAE;cACf,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EACtB,CAAC;YACF,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EACpB,CAAC;;UAEF,CAAC,eAAe,EAAE;YAChB,CAAC,MAAM,EAAE;cACP,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,EACpB,CAAC;YACF,EAAE,YAAY;cACZ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,MAAM,EAAE,GAAG,EAAE,SAAG;gBAChC,CAAC,WAAW,EAAE;kBACZ,EAAE,KAAK,EAAE;oBACP,gBAAgB,EAAE,QAAQ;oBAC1B,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,OAAO,GAAG,YAAY;mBAC7C,CAAC;kBACF,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC;kBAC9B,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC;kBAC1B,CAAC,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC;;iBAElC,CAAC;eACH,GAAA,CAAC;aACH;YACD,CAAC,gBAAgB,EAAE;gBACf,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;gBAC1B,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACrB,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;aAC7B,CAAC;YACF,EAAE,cAAc,EAAE;cAChB,CAAC,WAAW,EAAE,IAAI,CAAC,GAAG,CAAC;aACxB,CAAC;YACF,CAAC,QAAQ,EAAE;cACT,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;;cAEf,CAAC,QAAQ,EAAE,IAAI,CAAC,GAAG,CAAC,EACrB,CAAC;YACF,CAAC,aAAa;cACZ,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAA,GAAG,EAAC,SACnB,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,GAAA,CAAC;aAC/C;;WAEF,CAAC,EAEH,CAAC,EACH,CAAC,EACH,CAAC,CAAC;;EAEL,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC;CACtB,CAAA;;AAED,SAAS,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC;EAC7B,IAAI,GAAG,IAAI,SAAS,EAAE,EAAA,OAAO,EAAE,CAAC,EAAA;EAChC,IAAI,IAAI,GAAG,EAAE,CAAC;EACd,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;EAC/B,IAAI,OAAO,IAAI,GAAG;IAChB,EAAA,IAAI,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAA;EACxC,IAAI,QAAQ,IAAI,GAAG;IACjB,EAAA,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAA;EACzE,IAAI,SAAS,IAAI,GAAG;IAClB,EAAA,IAAI,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAA;EAC1C,IAAI,WAAW,IAAI,GAAG;IACpB,EAAA,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAA;EAC3C,IAAI,QAAQ,IAAI,GAAG;IACjB,EAAA,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAA;EAClC,IAAI,OAAO,IAAI,GAAG;IAChB,EAAA,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAA;EAChC,IAAI,KAAK,IAAI,GAAG;IACd,EAAA,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAA;EAC5B,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;CACxB;;AAED,SAAS,GAAG,CAAC,GAAG,EAAE;;EAEhB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,EAAA,OAAO,GAAG,CAAC,EAAA;EACxC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,EAAA,OAAO,EAAE,CAAC,GAAG,CAAC,EAAA;EAC3C7E,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;EAC5B,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,EAAA,OAAO,CAAC,KAAK,CAAC,kBAAkB,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC,EAAA;EACvEA,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;EACnB,IAAI,YAAY,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;EAC7B,IAAI,IAAI,GAAG,EAAE,CAAC;EACd,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9B,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,KAAK,IAAI,CAAC,KAAK,YAAY,EAAE;MAC3B,IAAI,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;MAC1B,IAAI,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;MACnC,IAAI,OAAO,IAAI,QAAQ,EAAE;QACvB,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;OACrB,MAAM;;QAEL,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;OACnB;KACF;GACF,MAAM;IACL,OAAO,GAAG,YAAY,CAAC;GACxB;EACD,IAAI,OAAO,IAAI,SAAS,CAAC;IACvB,OAAO,GAAG,WAAW,CAAA;GACtB;;EAEDA,IAAI,WAAW,GAAG,EAAE,CAAC;EACrB,KAAK,IAAI,CAAC,IAAI,IAAI,EAAE;IAClB,WAAW,IAAI,GAAE,GAAE,CAAC,QAAI,IAAE,IAAI,CAAC,CAAC,CAAC,CAAA,OAAG,CAAA;GACrC;;;EAGD,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACzB,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzC,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,UAAA,CAAC,EAAC,SAAG,IAAI,GAAG,CAAC,GAAA,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC/C,IAAI,MAAM,GAAG,GAAE,GAAE,IAAI,GAAG,WAAW,QAAI,GAAE,OAAO,SAAK,GAAE,IAAI,MAAE,CAAE;GAChE,MAAM;IACL,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;IACvB,IAAI,MAAM,GAAG,GAAE,GAAE,IAAI,GAAG,WAAW,MAAE,GAAE,OAAO,OAAG,GAAE,IAAI,MAAE,CAAE;GAC5D;EACD,OAAO,MAAM,CAAC;CACf;;;;ACpKD0C,IAAMC,MAAI,GAAG,8tCAoET,GAAE,IAAI,iLASV,CAAA;;AAEA,aAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjC3C,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;EACxC,GAAG,EAAE,EAAE;IACL,EAAE,CAAC,SAAS,GAAG2C,MAAI,CAAC;GACrB,MAAM;IACL3C,IAAI,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAC5C,MAAM,CAAC,SAAS,GAAG2C,MAAI,CAAC;IACxB3C,IAAI,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;GACtC;CACF,CAAA;;ACzFDA,IAAI2C,MAAI,GAAG,6yBAyCP,GAAE,IAAI,2ZAaV,CAAE;;AAEF,aAAe,SAAS,GAAG,EAAE,IAAI,EAAE;EACjC3C,IAAI,EAAE,GAAG,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;EACxC,GAAG,EAAE,EAAE;IACL,EAAE,CAAC,SAAS,GAAG2C,MAAI,CAAC;GACrB,MAAM;IACL3C,IAAI,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;IAC5C,MAAM,CAAC,SAAS,GAAG2C,MAAI,CAAC;IACxB3C,IAAI,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;GACvB;CACF,CAAA;;AC/CD,SAAS,iBAAiB,CAAC,GAAG,EAAE;EAC9B,IAAI,CAAC,GAAG,CAAC,CAAC;EACV,MAAM,CAAC,GAAG,CAAC,CAAC;CACb;;AAED,SAAS,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE;EAC/B,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACvB,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACxB,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACtB,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EAChB,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EAClB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACpB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACpB,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EAClB6E,MAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EAChB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACpB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACpB,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EACnB,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;CACrB;;;AAGD,GAAG,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE;EAC5B7E,IAAI,IAAI,GAAG,EAAE,CAAC;EACd,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;EACnC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,UAAC,KAAK,EAAE;IAC3D,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;;IAEpC,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE;MACpF,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;KAC/B;IACD,gBAAgB,CAAC,IAAI,CAAC,CAAC;;GAExB,CAAC,CAAC;CACJ;;;AAGD,SAAS0E,QAAM,CAAC,GAAG,EAAE,IAAI,EAAE;EACzB,iBAAiB,CAAC,GAAG,CAAC,CAAC;EACvB,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;;EAExB1E,IAAI,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,qCAAqC,CAAC,CAAC;EACjE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,AAAC;CAC5C;;;AAGD,SAAS,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE;EAC7B,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EAClB,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;EAC3B,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;CACnB,AAED,AACA,AACA,AAA8C;;;;;;;;"} \ No newline at end of file diff --git a/examples/article.html b/examples/article.html index f6ec6e3..476e7e4 100644 --- a/examples/article.html +++ b/examples/article.html @@ -1,6 +1,9 @@ + + +