site/node_modules/rehype-citation/dist/node/rehype-citation.mjs.map
2024-10-14 08:09:33 +02:00

1 line
1.1 MiB
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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

{"version":3,"file":"rehype-citation.mjs","sources":["../../src/regex.js","../../src/parse-citation.js","../../src/utils.js","../../src/html-transform-node.js","../../src/gen-citation.js","../../src/gen-biblio.js","../../src/gen-footnote.js","../../src/generator.js","../../src/citation-js/core/Cite/log.js","../../src/citation-js/core/Cite/validate.js","../../src/citation-js/core/Cite/options.js","../../src/citation-js/core/plugins/input/dataType.js","../../src/citation-js/core/plugins/input/graph.js","../../src/citation-js/core/logger.js","../../src/citation-js/core/plugins/input/type.js","../../src/citation-js/core/plugins/input/parser.js","../../src/citation-js/core/plugins/input/csl.js","../../src/citation-js/core/util/csl.js","../../src/citation-js/core/util/deepCopy.js","../../node_modules/webidl-conversions/lib/index.js","../../node_modules/whatwg-url/lib/utils.js","../../node_modules/tr46/index.js","../../node_modules/whatwg-url/lib/url-state-machine.js","../../node_modules/whatwg-url/lib/URL-impl.js","../../node_modules/whatwg-url/lib/URL.js","../../node_modules/whatwg-url/lib/public-api.js","../../node_modules/node-fetch/lib/index.mjs","../../node_modules/sync-fetch/shared.js","../../node_modules/sync-fetch/index.js","../../node_modules/fetch-ponyfill/node_modules/node-fetch/lib/index.mjs","../../node_modules/fetch-ponyfill/fetch-node.js","../../src/citation-js/core/util/fetchFile.js","../../src/citation-js/core/util/fetchId.js","../../src/citation-js/core/util/register.js","../../src/citation-js/core/util/grammar.js","../../src/citation-js/core/util/translator.js","../../src/citation-js/core/plugins/input/chain.js","../../src/citation-js/core/plugins/input/data.js","../../src/citation-js/core/plugins/input/register.js","../../src/citation-js/core/plugins/input/index.js","../../src/citation-js/core/Cite/set.js","../../src/citation-js/core/plugin-common/output/label.js","../../src/citation-js/core/Cite/sort.js","../../src/citation-js/core/plugins/output.js","../../src/citation-js/core/Cite/get.js","../../src/citation-js/core/Cite/async.js","../../src/citation-js/core/Cite/index.js","../../src/citation-js/core/plugins/dict.js","../../src/citation-js/core/plugins/config.js","../../src/citation-js/core/plugins/index.js","../../src/citation-js/core/plugin-common/input/empty.js","../../src/citation-js/core/plugin-common/input/json.js","../../src/citation-js/core/plugin-common/input/jquery.js","../../src/citation-js/core/plugin-common/input/html.js","../../src/citation-js/core/plugin-common/input/index.js","../../src/citation-js/core/plugin-common/output/json.js","../../src/citation-js/core/plugin-common/output/index.js","../../src/citation-js/core/plugin-common/index.js","../../src/citation-js/plugin-bibjson/json.js","../../src/citation-js/plugin-bibjson/index.js","../../node_modules/moo/moo.js","../../src/citation-js/plugin-bibtex/input/required.js","../../src/citation-js/plugin-bibtex/input/fieldTypes.js","../../src/citation-js/plugin-bibtex/input/unicode.js","../../src/citation-js/plugin-bibtex/input/constants.js","../../src/citation-js/plugin-bibtex/input/file.js","../../src/citation-js/plugin-bibtex/input/bibtxt.js","../../src/citation-js/plugin-bibtex/mapping/biblatexTypes.js","../../src/citation-js/plugin-bibtex/mapping/bibtexTypes.js","../../src/citation-js/plugin-bibtex/config.js","../../src/citation-js/plugin-bibtex/mapping/shared.js","../../src/citation-js/plugin-bibtex/mapping/biblatex.js","../../src/citation-js/plugin-bibtex/mapping/bibtex.js","../../src/citation-js/plugin-bibtex/mapping/index.js","../../src/citation-js/plugin-bibtex/input/name.js","../../src/citation-js/plugin-bibtex/input/value.js","../../src/citation-js/plugin-bibtex/input/entries.js","../../src/citation-js/plugin-bibtex/input/index.js","../../src/citation-js/plugin-bibtex/output/value.js","../../src/citation-js/plugin-bibtex/output/entries.js","../../src/citation-js/plugin-bibtex/output/bibtex.js","../../src/citation-js/plugin-bibtex/output/bibtxt.js","../../src/citation-js/plugin-bibtex/output/index.js","../../src/citation-js/plugin-bibtex/index.js","../../src/citation-js/plugin-csl/locales.js","../../src/citation-js/plugin-csl/styles.js","../../src/citation-js/plugin-csl/engines.js","../../src/citation-js/plugin-csl/attr.js","../../src/citation-js/plugin-csl/bibliography.js","../../src/citation-js/plugin-csl/citation.js","../../src/citation-js/plugin-csl/index.js","../../src/citation-js/plugin-yaml/index.js","../../src/citation-js/plugin-cff/index.js","../../src/cite.js","../../styles/mla.js","../../styles/chicago.js","../../styles/harvard1.js","../../styles/vancouver.js","../../src/index.js"],"sourcesContent":["// Regex adapted from https://github.com/Zettlr/Zettlr/blob/develop/source/common/util/extract-citations.ts\n\n/**\n * Citation detection: The first alternative matches \"full\" citations surrounded\n * by square brackets, whereas the second one matches in-text citations,\n * optionally with suffixes.\n *\n * * Group 1 matches regular \"full\" citations\n * * Group 2 matches in-text citations (not surrounded by brackets)\n * * Group 3 matches optional square-brackets suffixes to group 2 matches\n *\n * For more information, see https://pandoc.org/MANUAL.html#extension-citations\n *\n * @var {RegExp}\n */\nexport const citationRE =\n /(?:\\[([^[\\]]*@[^[\\]]+)\\])|(?<=\\s|^|(-))(?:@([\\p{L}\\d_][^\\s]*[\\p{L}\\d_]|\\{.+\\})(?:\\s+\\[(.*?)\\])?)/u\n\n/**\n * I hate everything at this. This can match every single possible variation on\n * whatever the f*** you can possibly do within square brackets according to the\n * documentation. I opted for named groups for these because otherwise I have no\n * idea what I have been doing here.\n *\n * * Group prefix: Contains the prefix, ends with a dash if we should suppress the author\n * * Group citekey: Contains the actual citekey, can be surrounded in curly brackets\n * * Group explicitLocator: Contains an explicit locator statement. If given, we MUST ignore any form of locator in the suffix\n * * Group explicitLocatorInSuffix: Same as above, but not concatenated to the citekey\n * * Group suffix: Contains the suffix, but may start with a locator (if explicitLocator and explicitLocatorInSuffix are not given)\n *\n * @var {RegExp}\n */\nexport const fullCitationRE =\n /(?<prefix>.+)?(?:@(?<citekey>[\\p{L}\\d_][^\\s{]*[\\p{L}\\d_]|\\{.+\\}))(?:\\{(?<explicitLocator>.*)\\})?(?:,\\s+(?:\\{(?<explicitLocatorInSuffix>.*)\\})?(?<suffix>.*))?/u\n\n/**\n * This regular expression matches locator ranges, like the following:\n *\n * * 23-45, and further (here it matches up to, not including the comma)\n * * 45\n * * 15423\n * * 14235-12532\n * * 12-34, 23, 56\n * * 12, 23-14, 23\n * * 12, 54, 12-23\n * * 1, 1-4\n * * 3\n * * NEW NEW NEW: Now also matches Roman numerals as sometimes used in forewords!\n *\n * @var {RegExp}\n */\nexport const locatorRE = /^(?:[\\d, -]*\\d|[ivxlcdm, -]*[ivxlcdm])/i\n","/**\n * @typedef {import('./types').CiteItem} CiteItem\n * @typedef {import('./types').CiteItemSuffix} CiteItemSuffix\n */\n\nimport { fullCitationRE, locatorRE } from './regex.js'\n\n/**\n * The locatorLabels have been sourced from the Citr library. Basically it's just\n * a map with valid CSL locator labels and an array of possible natural labels\n * which a user might want to write (instead of the standardized labels).\n *\n * @var {{ [key: string]: string[] }}}\n */\nconst locatorLabels = {\n book: ['Buch', 'Bücher', 'B.', 'book', 'books', 'bk.', 'bks.', 'livre', 'livres', 'liv.'],\n chapter: ['Kapitel', 'Kap.', 'chapter', 'chapters', 'chap.', 'chaps', 'chapitre', 'chapitres'],\n column: ['Spalte', 'Spalten', 'Sp.', 'column', 'columns', 'col.', 'cols', 'colonne', 'colonnes'],\n figure: ['Abbildung', 'Abbildungen', 'Abb.', 'figure', 'figures', 'fig.', 'figs'],\n folio: ['Blatt', 'Blätter', 'Fol.', 'folio', 'folios', 'fol.', 'fols', 'fᵒ', 'fᵒˢ'],\n issue: [\n 'Nummer',\n 'Nummern',\n 'Nr.',\n 'number',\n 'numbers',\n 'no.',\n 'nos.',\n 'numéro',\n 'numéros',\n 'nᵒ',\n 'nᵒˢ',\n ],\n line: ['Zeile', 'Zeilen', 'Z', 'line', 'lines', 'l.', 'll.', 'ligne', 'lignes'],\n note: ['Note', 'Noten', 'N.', 'note', 'notes', 'n.', 'nn.'],\n opus: ['Opus', 'Opera', 'op.', 'opus', 'opera', 'opp.'],\n page: ['Seite', 'Seiten', 'S.', 'page', 'pages', 'p.', 'pp.'],\n paragraph: [\n 'Absatz',\n 'Absätze',\n 'Abs.',\n '¶',\n '¶¶',\n 'paragraph',\n 'paragraphs',\n 'para.',\n 'paras',\n 'paragraphe',\n 'paragraphes',\n 'paragr.',\n ],\n part: ['Teil', 'Teile', 'part', 'parts', 'pt.', 'pts', 'partie', 'parties', 'part.'],\n section: [\n 'Abschnitt',\n 'Abschnitte',\n 'Abschn.',\n '§',\n '§§',\n 'section',\n 'sections',\n 'sec.',\n 'secs',\n 'sect.',\n ],\n 'sub verbo': ['sub verbo', 'sub verbis', 's.&#160;v.', 's.&#160;vv.', 's.v.', 's.vv.'],\n verse: ['Vers', 'Verse', 'V.', 'verse', 'verses', 'v.', 'vv.', 'verset', 'versets'],\n volume: ['Band', 'Bände', 'Bd.', 'Bde.', 'volume', 'volumes', 'vol.', 'vols.'],\n}\n\n/**\n * Parses a given citation string and return entries and isComposite flag required for cite-proc.\n * Adapted from https://github.com/Zettlr/Zettlr/blob/develop/source/common/util/extract-citations.ts\n *\n * @param {RegExpMatchArray} regexMatch Cite string in the form of '[@item]' or '@item'\n * @return {[CiteItem[], boolean]} [entries, isComposite]\n */\nexport const parseCitation = (regexMatch) => {\n /** @type {CiteItem[]} */\n let entries = []\n let isComposite = false\n const fullCitation = regexMatch[1]\n const inTextSuppressAuthor = regexMatch[2]\n const inTextCitation = regexMatch[3]\n const optionalSuffix = regexMatch[4]\n\n if (fullCitation !== undefined) {\n // Handle citations in the form of [@item1; @item2]\n for (const citationPart of fullCitation.split(';')) {\n const match = fullCitationRE.exec(citationPart.trim())\n if (match === null) {\n continue // Faulty citation\n }\n // Prefix is the portion before @ e.g. [see @item1] or an empty string\n // We explicitly cast groups since we have groups in our RegExp and as\n // such the groups object will be set.\n /** @type {CiteItem} */\n const thisCitation = {\n id: match.groups.citekey.replace(/{(.+)}/, '$1'),\n prefix: undefined,\n locator: undefined,\n label: 'page',\n 'suppress-author': false,\n suffix: undefined,\n }\n\n // First, deal with the prefix. The speciality here is that it can\n // indicate if we should suppress the author.\n const rawPrefix = match.groups.prefix\n if (rawPrefix !== undefined) {\n thisCitation['suppress-author'] = rawPrefix.trim().endsWith('-')\n if (thisCitation['suppress-author']) {\n thisCitation.prefix = rawPrefix.substring(0, rawPrefix.trim().length - 1).trim()\n } else {\n thisCitation.prefix = rawPrefix.trim()\n }\n }\n\n // Second, deal with the suffix. This one can be much more tricky than\n // the prefix. We have three alternatives where the locator may be\n // present: If we have an explicitLocator or an explicitLocatorInSuffix,\n // we should extract the locator from there and leave the actual suffix\n // untouched. Only if those two alternatives are not present, then we\n // have a look at the rawSuffix and extract a (potential) locator.\n const explicitLocator = match.groups.explicitLocator\n const explicitLocatorInSuffix = match.groups.explicitLocatorInSuffix\n const rawSuffix = match.groups.suffix\n\n let suffixToParse\n let containsLocator = true\n if (explicitLocator === undefined && explicitLocatorInSuffix === undefined) {\n // Potential locator in rawSuffix. Only in this case should we overwrite\n // the suffix (hence the same if-condition below)\n suffixToParse = rawSuffix\n containsLocator = false\n } else if (explicitLocatorInSuffix !== undefined || explicitLocator !== undefined) {\n suffixToParse = explicitLocator !== undefined ? explicitLocator : explicitLocatorInSuffix\n thisCitation.suffix = rawSuffix?.trim()\n }\n\n const { label, locator, suffix } = parseSuffix(suffixToParse, containsLocator)\n thisCitation.locator = locator\n\n if (label !== undefined) {\n thisCitation.label = label\n }\n\n if (explicitLocator === undefined && explicitLocatorInSuffix === undefined) {\n thisCitation.suffix = suffix\n } else if (suffix !== undefined && thisCitation.locator !== undefined) {\n // If we're here, we should not change the suffix, but parseSuffix may\n // have put something into the suffix return. If we're here, that will\n // definitely be a part of the locator.\n thisCitation.locator += suffix\n }\n\n entries.push(thisCitation)\n }\n } else {\n // We have an in-text citation, so we can take a shortcut\n isComposite = true\n entries.push({\n prefix: undefined,\n id: inTextCitation.replace(/{(.+)}/, '$1'),\n 'suppress-author': inTextSuppressAuthor !== undefined,\n ...parseSuffix(optionalSuffix, false), // Populate more depending on the suffix\n })\n }\n return [entries, isComposite]\n}\n\n/**\n * This takes a suffix and extracts optional label and locator from this. Pass\n * true for the containsLocator property to indicate to this function that what\n * it got was not a regular suffix with an optional locator, but an explicit\n * locator so it knows it just needs to look for an optional label.\n *\n * @param {string} suffix The suffix to parse\n * @param {boolean} containsLocator If true, forces parseSuffix to return a locator\n *\n * @return {CiteItemSuffix} An object containing three optional properties locator, label, or suffix.\n */\nfunction parseSuffix(suffix, containsLocator) {\n /** @type {CiteItemSuffix} */\n const retValue = {\n locator: undefined,\n label: 'page',\n suffix: undefined,\n }\n\n if (suffix === undefined) {\n return retValue\n }\n\n // Make sure the suffix does not start or end with spaces\n suffix = suffix.trim()\n\n // If there is a label, the suffix must start with it\n for (const label in locatorLabels) {\n for (const natural of locatorLabels[label]) {\n if (suffix.toLowerCase().startsWith(natural.toLowerCase())) {\n retValue.label = label\n if (containsLocator) {\n // The suffix actually is the full locator, we just had to extract\n // the label from it. There is no remaining suffix.\n retValue.locator = suffix.substr(natural.length).trim()\n } else {\n // The caller indicated that this is a regular suffix, so we must also\n // extract the locator from what is left after label extraction.\n retValue.suffix = suffix.substr(natural.length).trim()\n const match = locatorRE.exec(retValue.suffix)\n if (match !== null) {\n retValue.locator = match[0] // Extract the full match\n retValue.suffix = retValue.suffix.substr(match[0].length).trim()\n }\n }\n\n return retValue // Early exit\n }\n }\n }\n\n // If we're here, there was no explicit label given, but the caller has indicated\n // that this suffix MUST contain a locator. This means that the whole suffix is\n // the locator.\n if (containsLocator) {\n retValue.locator = suffix\n } else {\n // The caller has not indicated that the whole suffix is the locator, so it\n // can be at the beginning. We only accept simple page/number ranges here.\n // For everything, the user should please be more specific.\n const match = locatorRE.exec(suffix)\n if (match !== null) {\n retValue.locator = match[0] // Full match is the locator\n retValue.suffix = suffix.substr(match[0].length).trim() // The rest is the suffix.\n }\n }\n\n return retValue\n}\n","import fetch from 'cross-fetch'\n\nexport const isNode = typeof window === 'undefined'\n\nexport const readFile = async (path) => {\n if (isValidHttpUrl(path)) {\n return fetch(path)\n .then((response) => response.text())\n .then((data) => data)\n } else {\n if (isNode) {\n return import('fs').then((fs) => fs.readFileSync(path, 'utf8'))\n } else {\n throw new Error(`Cannot read non valid URL in node env.`)\n }\n }\n}\n\n/**\n * Check if valid URL\n * https://stackoverflow.com/questions/5717093/check-if-a-javascript-string-is-a-url\n *\n * @param {string} str\n * @return {boolean}\n */\nexport const isValidHttpUrl = (str) => {\n let url\n\n try {\n url = new URL(str)\n } catch (_) {\n return false\n }\n\n return url.protocol === 'http:' || url.protocol === 'https:'\n}\n\n/**\n * Get bibliography by merging options and vfile data\n *\n * @param {import('./generator.js').Options} options\n * @param {import('vfile').VFile} file\n */\nexport const getBibliography = async (options, file) => {\n /** @type {string[]} */\n let bibliography = []\n if (options.bibliography) {\n bibliography =\n typeof options.bibliography === 'string' ? [options.bibliography] : options.bibliography\n // @ts-ignore\n } else if (file?.data?.frontmatter?.bibliography) {\n // @ts-ignore\n bibliography =\n typeof file.data.frontmatter.bibliography === 'string'\n ? [file.data.frontmatter.bibliography]\n : file.data.frontmatter.bibliography\n // If local path, get absolute path\n for (let i = 0; i < bibliography.length; i++) {\n if (!isValidHttpUrl(bibliography[i])) {\n if (isNode) {\n bibliography[i] = await import('path').then((path) =>\n path.join(options.path || file.cwd, bibliography[i])\n )\n } else {\n throw new Error(`Cannot read non valid bibliography URL in node env.`)\n }\n }\n }\n }\n\n return bibliography\n}\n\n/**\n * Load CSL - supports predefined name from config.templates.data or http, file path (nodejs)\n *\n * @param {*} Cite cite object from citation-js\n * @param {string} format CSL name e.g. apa or file path to CSL file\n * @param {string} root optional root path\n */\nexport const loadCSL = async (Cite, format, root = '') => {\n const config = Cite.plugins.config.get('@csl')\n if (!Object.keys(config.templates.data).includes(format)) {\n const cslName = `customCSL-${Math.random().toString(36).slice(2, 7)}`\n let cslPath = ''\n if (isValidHttpUrl(format)) cslPath = format\n else {\n if (isNode) cslPath = await import('path').then((path) => path.join(root, format))\n }\n try {\n config.templates.add(cslName, await readFile(cslPath))\n } catch (err) {\n throw new Error(`Input CSL option, ${format}, is invalid or is an unknown file.`)\n }\n return cslName\n } else {\n return format\n }\n}\n\n/**\n * Load locale - supports predefined name from config.locales.data or http, file path (nodejs)\n *\n * @param {*} Cite cite object from citation-js\n * @param {string} format locale name\n * @param {string} root optional root path\n */\nexport const loadLocale = async (Cite, format, root = '') => {\n const config = Cite.plugins.config.get('@csl')\n if (!Object.keys(config.locales.data).includes(format)) {\n let localePath = ''\n if (isValidHttpUrl(format)) localePath = format\n else {\n if (isNode) localePath = await import('path').then((path) => path.join(root, format))\n }\n try {\n const file = await readFile(localePath)\n const xmlLangRe = /xml:lang=\"(.+)\"/\n const localeName = file.match(xmlLangRe)[1]\n config.locales.add(localeName, file)\n return localeName\n } catch (err) {\n throw new Error(`Input locale option, ${format}, is invalid or is an unknown file.`)\n }\n } else {\n return format\n }\n}\n\n/**\n * Get citation format\n *\n * @param {*} citeproc citeproc\n * @returns string\n */\nexport const getCitationFormat = (citeproc) => {\n const info = citeproc.cslXml.dataObj.children[0]\n const node = info.children.find((x) => x['attrs'] && x['attrs']['citation-format'])\n // citation-format takes 5 possible values\n // https://docs.citationstyles.org/en/stable/specification.html#toc-entry-14\n /** @type {'author-date' | 'author' | 'numeric' | 'note' | 'label'} */\n const citationFormat = node['attrs']['citation-format']\n return citationFormat\n}\n\n/**\n * Get registry objects that matches a list of relevantIds\n * If sorted is false, retrieve registry item in the order of the given relevantIds\n *\n * @param {*} citeproc citeproc\n * @param {string[]} relevantIds\n * @param {boolean} sorted\n * @return {*} registry objects that matches Ids, in the correct order\n */\nexport const getSortedRelevantRegistryItems = (citeproc, relevantIds, sorted) => {\n const res = []\n if (sorted) {\n // If sorted follow registry order\n for (const item of citeproc.registry.reflist) {\n if (relevantIds.includes(item.id)) res.push(item)\n }\n } else {\n // Otherwise follow the relevantIds\n for (const id of relevantIds) {\n res.push(citeproc.registry.reflist.find((x) => x.id === id))\n }\n }\n return res\n}\n\n/**\n * Split a string into two parts based on a given index position\n *\n * @param {string} str\n * @param {number} index\n * @return {string[]}\n */\nexport const split = (str, index) => {\n return [str.slice(0, index), str.slice(index)]\n}\n\n/**\n * Check if two registry objects belong to the same author\n * Currently only checks on family name\n *\n * @param {*} item registry object\n * @param {*} item2 registry object\n * @return {boolean}\n */\nexport const isSameAuthor = (item, item2) => {\n const authorList = item.ref.author\n const authorList2 = item2.ref.author\n if (authorList.length !== authorList2.length) return false\n for (let i = 0; i < authorList.length; i++) {\n if (authorList[i].family !== authorList2[i].family) return false\n }\n return true\n}\n","import { parseFragment } from 'parse5'\nimport { fromParse5 } from 'hast-util-from-parse5'\n\n/**\n * Convert HTML to HAST node\n *\n * @param {string} html\n */\nexport const htmlToHast = (html) => {\n const p5ast = parseFragment(html)\n // @ts-ignore\n return fromParse5(p5ast).children[0]\n}\n","/**\n * @typedef {import('./types').CiteItem} CiteItem\n * @typedef {import('./types').Mode} Mode\n * @typedef {import('./types').Options} Options\n */\n\nimport { getSortedRelevantRegistryItems, split, isSameAuthor } from './utils.js'\nimport { htmlToHast } from './html-transform-node.js'\n\n/**\n * Generate citation using citeproc\n * This accounts for prev citations and additional properties\n *\n * @param {*} citeproc\n * @param {Mode} mode\n * @param {CiteItem[]} entries\n * @param {string} citationIdRoot\n * @param {number} citationId\n * @param {any[]} citationPre\n * @param {Options} options\n * @param {boolean} isComposite\n * @param {import('./types').CitationFormat} citationFormat\n * @return {[string, string]}\n */\nexport const genCitation = (\n citeproc,\n mode,\n entries,\n citationIdRoot,\n citationId,\n citationPre,\n options,\n isComposite,\n citationFormat\n) => {\n const { inlineClass, linkCitations } = options\n const key = `${citationIdRoot}-${citationId}`\n const c = citeproc.processCitationCluster(\n {\n citationID: key,\n citationItems: entries,\n properties:\n mode === 'in-text'\n ? { noteIndex: 0, mode: isComposite ? 'composite' : '' }\n : { noteIndex: citationId, mode: isComposite ? 'composite' : '' },\n },\n citationPre.length > 0 ? citationPre : [],\n []\n )\n // c = [ { bibchange: true, citation_errors: [] }, [ [ 0, '(1)', 'CITATION-1' ] ]]\n\n const citationText = c[1].find((x) => x[2] === key)[1]\n const ids = `citation--${entries.map((x) => x.id.toLowerCase()).join('--')}--${citationId}`\n if (mode === 'note') {\n // Use cite-fn-{id} to denote footnote from citation, will clean it up later to follow gfm \"user-content\" format\n return [\n citationText,\n htmlToHast(\n `<span class=\"${(inlineClass ?? []).join(\n ' '\n )}\" id=${ids}><sup><a href=\"#cite-fn-${citationId}\" id=\"cite-fnref-${citationId}\" data-footnote-ref aria-describedby=\"footnote-label\">${citationId}</a></sup></span>`\n ),\n ]\n } else if (linkCitations && citationFormat === 'numeric') {\n // e.g. [1, 2]\n let i = 0\n const refIds = entries.map((e) => e.id)\n const output = citationText.replace(/\\d+/g, function (d) {\n const url = `<a href=\"#bib-${refIds[i].toLowerCase()}\">${d}</a>`\n i++\n return url\n })\n\n return [\n citationText,\n htmlToHast(`<span class=\"${(inlineClass ?? []).join(' ')}\" id=${ids}>${output}</span>`),\n ]\n } else if (linkCitations && citationFormat === 'author-date') {\n // E.g. (see Nash, 1950, pp. 1213, 1951); (Nash, 1950; Xie, 2016)\n if (entries.length === 1) {\n // Do not link bracket\n const output = isComposite\n ? `<a href=\"#bib-${entries[0].id.toLowerCase()}\">${citationText}</a>`\n : `${citationText.slice(\n 0,\n 1\n )}<a href=\"#bib-${entries[0].id.toLowerCase()}\">${citationText.slice(\n 1,\n -1\n )}</a>${citationText.slice(-1)}`\n return [\n citationText,\n htmlToHast(`<span class=\"${(inlineClass ?? []).join(' ')}\" id=${ids}>${output}</span>`),\n ]\n } else {\n // Retrieve the items in the correct order and attach link each of them\n const refIds = entries.map((e) => e.id)\n const results = getSortedRelevantRegistryItems(citeproc, refIds, citeproc.opt.sort_citations)\n const output = []\n let str = citationText\n\n for (const [i, item] of results.entries()) {\n // Need to compare author. If same just match on date.\n const id = item.id\n let citeMatch = item.ambig\n // If author is the same as the previous, some styles like apa collapse the author\n if (i > 0 && isSameAuthor(results[i - 1], item) && str.indexOf(citeMatch) === -1) {\n // Just match on year\n citeMatch = item.ref.issued.year.toString()\n }\n const startPos = str.indexOf(citeMatch)\n const [start, rest] = split(str, startPos)\n output.push(start) // Irrelevant parts\n const url = `<a href=\"#bib-${id.toLowerCase()}\">${rest.substring(0, citeMatch.length)}</a>`\n output.push(url)\n str = rest.substr(citeMatch.length)\n }\n output.push(str)\n return [\n citationText,\n htmlToHast(\n `<span class=\"${(inlineClass ?? []).join(' ')}\" id=${ids}>${output.join('')}</span>`\n ),\n ]\n }\n } else {\n return [\n citationText,\n htmlToHast(`<span class=\"${(inlineClass ?? []).join(' ')}\" id=${ids}>${citationText}</span>`),\n ]\n }\n}\n","import { htmlToHast } from './html-transform-node.js'\n\n/**\n * Generate bibliography in html and convert it to hast\n *\n * @param {*} citeproc\n */\nexport const genBiblioNode = (citeproc) => {\n const [params, bibBody] = citeproc.makeBibliography()\n const bibliography =\n '<div id=\"refs\" class=\"references csl-bib-body\">\\n' + bibBody.join('') + '</div>'\n const biblioNode = htmlToHast(bibliography)\n\n // Add citekey id to each bibliography entry.\n biblioNode.children\n .filter((node) => node.properties?.className?.includes('csl-entry'))\n .forEach((node, i) => {\n const citekey = params.entry_ids[i][0].toLowerCase()\n node.properties = node.properties || {}\n node.properties.id = 'bib-' + citekey\n })\n return biblioNode\n}\n","/**\n * @typedef {import('hast').Element} Element\n * @typedef {import('hast').ElementContent} ElementContent\n */\n\nimport { htmlToHast } from './html-transform-node.js'\n\n/**\n * Create new footnote section node based on footnoteArray mappings\n *\n * @param {{int: string}} citationDict\n * @param {{type: 'citation' | 'existing', oldId: string}[]} footnoteArray\n * @param {Element | undefined} footnoteSection\n * @return {Element}\n */\nexport const genFootnoteSection = (citationDict, footnoteArray, footnoteSection) => {\n /** @type {Element} */\n const list = {\n type: 'element',\n tagName: 'ol',\n properties: {},\n children: [{ type: 'text', value: '\\n' }],\n }\n let oldFootnoteList\n if (footnoteSection) {\n /** @type {Element} */ // @ts-ignore - for some reason, the type does not narrow even after filtering\n oldFootnoteList = footnoteSection.children.filter(n => (n.type == \"element\")).find((n) => (n.tagName === 'ol'))\n }\n for (const [idx, item] of footnoteArray.entries()) {\n const { type, oldId } = item\n if (type === 'citation') {\n list.children.push({\n type: 'element',\n tagName: 'li',\n properties: { id: `user-content-fn-${idx + 1}` },\n children: [\n {\n type: 'element',\n tagName: 'p',\n properties: {},\n children: [\n htmlToHast(`<span>${citationDict[oldId]}</span>`),\n {\n type: 'element',\n tagName: 'a',\n properties: {\n href: `#user-content-fnref-${idx + 1}`,\n dataFootnoteBackref: true,\n className: ['data-footnote-backref'],\n ariaLabel: 'Back to content',\n },\n children: [{ type: 'text', value: '↩' }],\n },\n ],\n },\n { type: 'text', value: '\\n' },\n ],\n })\n } else if (type === 'existing') {\n // @ts-ignore\n const liNode = oldFootnoteList.children.find(\n (n) => n.tagName === 'li' && n.properties.id === `user-content-fn-${oldId}`\n )\n liNode.properties.id = `user-content-fn-${idx + 1}`\n const aNode = liNode.children[1].children.find((n) => n.tagName === 'a')\n aNode.properties.href = `#user-content-fnref-${idx + 1}`\n list.children.push(liNode)\n }\n }\n\n /** @type {Element} */\n const newfootnoteSection = {\n type: 'element',\n tagName: 'section',\n properties: { dataFootnotes: true, className: ['footnotes'] },\n children: [\n {\n type: 'element',\n tagName: 'h2',\n properties: { className: ['sr-only'], id: 'footnote-label' },\n children: [{ type: 'text', value: 'Footnotes' }],\n },\n { type: 'text', value: '\\n' },\n list,\n ],\n }\n return newfootnoteSection\n}\n","/**\n * @typedef {import('hast').Node} Node\n * @typedef {import('hast').Parent} Parent\n * @typedef {import('hast').Root} Root\n * @typedef {import('hast').Element} Element\n * @typedef {import('unist-util-visit').Visitor<Node>} Visitor\n * @typedef {import('./types').CiteItem} CiteItem\n * @typedef {import('./types').Mode} Mode\n * @typedef {import('./types').Options} Options\n */\n\nimport { visit } from 'unist-util-visit'\nimport fetch from 'cross-fetch'\nimport { parseCitation } from './parse-citation.js'\nimport { genCitation } from './gen-citation.js'\nimport { genBiblioNode } from './gen-biblio.js'\nimport { genFootnoteSection } from './gen-footnote.js'\nimport { citationRE } from './regex.js'\nimport {\n isNode,\n isValidHttpUrl,\n readFile,\n getBibliography,\n loadCSL,\n loadLocale,\n getCitationFormat,\n} from './utils.js'\n\nconst defaultCiteFormat = 'apa'\nconst permittedTags = ['div', 'p', 'span', 'li', 'td', 'th']\nconst idRoot = 'CITATION'\n\n/**\n * Rehype plugin that formats citations in markdown documents and insert bibliography in html format\n *\n * [-@wadler1990] --> (1990)\n * [@hughes1989, sec 3.4] --> (Hughes 1989, sec 3.4)\n * [see @wadler1990; and @hughes1989, pp. 4] --> (see Wadler 1990 and Hughes 1989, pp. 4)\n *\n * @param {*} Cite cite object from citation-js configured with the required CSLs\n * @return {import('unified').Plugin<[Options?], Root>}\n */\nconst rehypeCitationGenerator = (Cite) => {\n return (options = {}) => {\n return async (tree, file) => {\n /** @type {string[]} */\n let bibtexFile = []\n /** @type {string} */ // @ts-ignore\n const inputCiteformat = options.csl || file?.data?.frontmatter?.csl || defaultCiteFormat\n const inputLang = options.lang || 'en-US'\n const config = Cite.plugins.config.get('@csl')\n const citeFormat = await loadCSL(Cite, inputCiteformat, options.path)\n const lang = await loadLocale(Cite, inputLang, options.path)\n\n let bibliography = await getBibliography(options, file)\n if (bibliography.length === 0) {\n return\n }\n\n for (let i = 0; i < bibliography.length; i++) {\n if (isValidHttpUrl(bibliography[i])) {\n const response = await fetch(bibliography[i])\n bibtexFile.push(await response.text())\n } else {\n if (isNode) {\n bibtexFile.push(await readFile(bibliography[i]))\n } else {\n throw new Error(`Cannot read non valid bibliography URL in node env.`)\n }\n }\n }\n const citations = new Cite(bibtexFile)\n const citationIds = citations.data.map((x) => x.id)\n const citationPre = []\n const citationDict = {}\n let citationId = 1\n const citeproc = config.engine(citations.data, citeFormat, lang, 'html')\n /** @type {Mode} */\n const mode = citeproc.opt.xclass\n const citationFormat = getCitationFormat(citeproc)\n\n visit(tree, 'text', (node, idx, parent) => {\n const match = node.value.match(citationRE)\n if (!match || ('tagName' in parent && !permittedTags.includes(parent.tagName))) return\n let citeStartIdx = match.index\n let citeEndIdx = match.index + match[0].length\n // If we have an in-text citation and we should suppress the author, the\n // match.index does NOT include the positive lookbehind, so we have to manually\n // shift \"from\" to one before.\n if (match[2] !== undefined) {\n citeStartIdx--\n }\n const newChildren = []\n // if preceding string\n if (citeStartIdx !== 0) {\n // create a new child node\n newChildren.push({\n type: 'text',\n value: node.value.slice(0, citeStartIdx),\n })\n }\n\n const [entries, isComposite] = parseCitation(match)\n\n // If id is not in citation file (e.g. route alias or js package), abort process\n for (const citeItem of entries) {\n if (!citationIds.includes(citeItem.id)) return\n }\n const [citedText, citedTextNode] = genCitation(\n citeproc,\n mode,\n entries,\n idRoot,\n citationId,\n citationPre,\n options,\n isComposite,\n citationFormat\n )\n citationDict[citationId] = citedText\n\n // Prepare citationPre and citationId for the next cite instance\n citationPre.push([`${idRoot}-${citationId}`, 0])\n citationId = citationId + 1\n\n newChildren.push(citedTextNode)\n\n // if trailing string\n if (citeEndIdx < node.value.length) {\n newChildren.push({\n type: 'text',\n value: node.value.slice(citeEndIdx),\n })\n }\n\n // insert into the parent\n // @ts-ignore\n parent.children = [\n ...parent.children.slice(0, idx),\n ...newChildren,\n ...parent.children.slice(idx + 1),\n ]\n })\n\n if (options.noCite) {\n citeproc.updateItems(options.noCite.map((x) => x.replace('@', '')))\n }\n\n if (\n citeproc.registry.mylist.length >= 1 &&\n (!options.suppressBibliography || options.inlineBibClass?.length > 0)\n ) {\n const biblioNode = genBiblioNode(citeproc)\n let bilioInserted = false\n\n const biblioMap = {}\n biblioNode.children\n .filter((node) => node.properties?.className?.includes('csl-entry'))\n .forEach((node) => {\n const citekey = node.properties.id.split('-').slice(1).join('-')\n biblioMap[citekey] = { ...node }\n biblioMap[citekey].properties = { id: 'inlinebib-' + citekey }\n })\n\n // Insert it at ^ref, if not found insert it as the last element of the tree\n visit(tree, 'element', (node, idx, parent) => {\n // Add inline bibliography\n if (\n options.inlineBibClass?.length > 0 &&\n node.properties?.id?.toString().startsWith('citation-')\n ) {\n // id is citation--nash1951--nash1950--1\n const [, ...citekeys] = node.properties.id.toString().split('--')\n const citationID = citekeys.pop()\n\n /** @type {Element} */\n const inlineBibNode = {\n type: 'element',\n tagName: 'div',\n properties: {\n className: options.inlineBibClass,\n id: `inlineBib--${citekeys.join('--')}--${citationID}`,\n },\n children: citekeys.map((citekey) => {\n const aBibNode = biblioMap[citekey]\n aBibNode.properties = {\n class: 'inline-entry',\n id: `inline--${citekey}--${citationID}`,\n }\n return aBibNode\n }),\n }\n parent.children.push(inlineBibNode)\n }\n\n // Add bibliography\n if (\n !options.suppressBibliography &&\n (node.tagName === 'p' || node.tagName === 'div') &&\n node.children.length >= 1 &&\n node.children[0].type === 'text' &&\n node.children[0].value === '[^ref]'\n ) {\n parent.children[idx] = biblioNode\n bilioInserted = true\n }\n })\n\n if (!options.suppressBibliography && !bilioInserted) {\n tree.children.push(biblioNode)\n }\n }\n\n let footnoteSection\n visit(tree, 'element', (node, index, parent) => {\n if (node.tagName === 'section' && node.properties.dataFootnotes) {\n footnoteSection = node\n parent.children.splice(index, 1)\n }\n })\n\n // Need to adjust footnote numbering based on existing ones already assigned\n // And insert them into the footnote section (if exists)\n // Footnote comes after bibliography\n if (mode === 'note' && Object.keys(citationDict).length > 0) {\n /** @type {{type: 'citation' | 'existing', oldId: string}[]} */\n let fnArray = []\n let index = 1\n visit(tree, 'element', (node) => {\n if (node.tagName === 'sup' && node.children[0].type === 'element') {\n let nextNode = node.children[0]\n if (nextNode.tagName === 'a') {\n /** @type {{href: string, id: string}} */ // @ts-ignore\n const { href, id } = nextNode.properties\n if (href.includes('fn') && id.includes('fnref')) {\n const oldId = href.split('-').pop()\n fnArray.push({\n type: href.includes('cite') ? 'citation' : 'existing',\n oldId,\n })\n // Update ref number\n nextNode.properties.href = `#user-content-fn-${index}`\n nextNode.properties.id = `user-content-fnref-${index}`\n // @ts-ignore\n nextNode.children[0].value = index.toString()\n index += 1\n }\n }\n }\n })\n // @ts-ignore\n const newFootnoteSection = genFootnoteSection(citationDict, fnArray, footnoteSection)\n tree.children.push(newFootnoteSection)\n } else {\n if (footnoteSection) tree.children.push(footnoteSection)\n }\n }\n }\n}\n\nexport default rehypeCitationGenerator\n","// @ts-nocheck\n/**\n * @memberof module: @citation-js / core.Cite#\n *\n * @return {Number} The latest version of the object\n */\nfunction currentVersion() {\n return this.log.length\n}\n\n/**\n * Returns an image of the object in the version specified.\n *\n * @memberof module:@citation-js/core.Cite#\n *\n * @param {Number} [versnum=1] - The number of the version you want to retrieve. Illegal numbers: numbers under or equal to zero, floats, numbers above the current version of the object.\n *\n * @return {module:@citation-js/core.Cite} The version of the object with the version number passed. `undefined` if an illegal number is passed.\n */\nfunction retrieveVersion(versnum = 1) {\n if (versnum <= 0 || versnum > this.currentVersion()) {\n return null\n } else {\n const [data, options] = this.log[versnum - 1]\n const image = new this.constructor(JSON.parse(data), JSON.parse(options))\n image.log = this.log.slice(0, versnum)\n return image\n }\n}\n\n/**\n * Returns the second to last saved image of the object.\n *\n * @memberof module:@citation-js/core.Cite#\n *\n * @param {Number} [number=1] - number of versions to go back.\n *\n * @return {module:@citation-js/core.Cite} The second to last version of the object. `undefined` if used on first version.\n */\nfunction undo(number = 1) {\n return this.retrieveVersion(this.currentVersion() - number)\n}\n\n/**\n * Returns the last saved image of the object.\n *\n * @memberof module:@citation-js/core.Cite#\n *\n * @return {module:@citation-js/core.Cite} The last version of the object. `undefined` if used on first version.\n */\nfunction retrieveLastVersion() {\n return this.retrieveVersion(this.currentVersion())\n}\n\n/**\n * Save an image of the current version of the object.\n *\n * @memberof module:@citation-js/core.Cite#\n *\n * @return {module:@citation-js/core.Cite} The current version of the object.\n */\nfunction save() {\n this.log.push([JSON.stringify(this.data), JSON.stringify(this._options)])\n\n return this\n}\n\nexport { currentVersion, retrieveVersion, retrieveLastVersion, undo, save }\n","// @ts-nocheck\nconst formats = ['real', 'string']\nconst types = ['json', 'html', 'string', 'rtf']\nconst styles = ['csl', 'bibtex', 'bibtxt', 'citation-*', 'ris', 'ndjson']\nconst wrapperTypes = ['string', 'function']\n\n/**\n * @access public\n * @method validateOutputOptions\n * @memberof module:@citation-js/core.Cite\n *\n * @deprecated\n * @param {module:@citation-js/core~OutputOptions} - options\n *\n * @return {Boolean} true (if valid)\n * @throws {TypeError} Options not an object\n * @throws {TypeError} Invalid options\n * @throws {Error} Invalid options combination\n *\n * @todo check registers if styles and langs are present\n */\n/* istanbul ignore next: deprecated */\nexport function validateOutputOptions(options) {\n if (typeof options !== 'object') {\n throw new TypeError('Options not an object!')\n }\n\n const { format, type, style, lang, append, prepend } = options\n\n if (format && !formats.includes(format)) {\n throw new TypeError(`Option format (\"${format}\") should be one of: ${formats}`)\n } else if (type && !types.includes(type)) {\n throw new TypeError(`Option type (\"${type}\") should be one of: ${types}`)\n } else if (style && !styles.includes(style) && !/^citation/.test(style)) {\n throw new TypeError(`Option style (\"${style}\") should be one of: ${styles}`)\n } else if (lang && typeof lang !== 'string') {\n throw new TypeError(`Option lang should be a string, but is a ${typeof lang}`)\n } else if (prepend && !wrapperTypes.includes(typeof prepend)) {\n throw new TypeError(\n `Option prepend should be a string or a function, but is a ${typeof prepend}`\n )\n } else if (append && !wrapperTypes.includes(typeof append)) {\n throw new TypeError(`Option append should be a string or a function, but is a ${typeof append}`)\n }\n\n if (/^citation/.test(style) && type === 'json') {\n throw new Error(`Combination type/style of json/citation-* is not valid: ${type}/${style}`)\n }\n\n return true\n}\n\n/**\n * @access public\n * @method valdiateOptions\n * @memberof module:@citation-js/core.Cite\n *\n * @param {module:@citation-js/core~InputOptions} - options\n *\n * @return {Boolean} true (if valid)\n * @throws {TypeError} Options not an object\n * @throws {TypeError} Invalid options\n *\n * @todo check registers if type is present\n */\nexport function validateOptions(options) {\n if (typeof options !== 'object') {\n throw new TypeError('Options should be an object')\n }\n\n /* istanbul ignore if: deprecated */\n if (options.output) {\n validateOutputOptions(options.output)\n } else if (options.maxChainLength && typeof options.maxChainLength !== 'number') {\n throw new TypeError('Option maxChainLength should be a number')\n } else if (options.forceType && typeof options.forceType !== 'string') {\n throw new TypeError('Option forceType should be a string')\n } else if (options.generateGraph != null && typeof options.generateGraph !== 'boolean') {\n throw new TypeError('Option generateGraph should be a boolean')\n } else if (options.strict != null && typeof options.strict !== 'boolean') {\n throw new TypeError('Option strict should be a boolean')\n } else if (options.target != null && typeof options.target !== 'string') {\n throw new TypeError('Option target should be a boolean')\n }\n\n return true\n}\n","import { validateOutputOptions as validate } from './validate.js'\n\n/**\n * @memberof module:@citation-js/core.Cite#\n *\n * @constant {module:@citation-js/core~OutputOptions} defaultOptions - default output options\n */\nconst defaultOptions = { format: 'real', type: 'json', style: 'csl', lang: 'en-US' }\n\n/**\n * Change the default options of a `Cite` object.\n *\n * @memberof Cite#\n *\n * @param {module:@citation-js/core~OutputOptions} options - The options for the output\n * @param {Boolean} [log=false] - Show this call in the log\n *\n * @return {module:@citation-js/core.Cite} The updated parent object\n */\nfunction options(options, log) {\n validate(options)\n\n if (log) {\n this.save()\n }\n\n Object.assign(this._options, options)\n\n return this\n}\n\nexport { options, defaultOptions }\n","/**\n * Gets the constructor name, with a special case for `null` and `undefined`\n *\n * @access public\n * @method typeOf\n * @memberof module:@citation-js/core.plugins.input.util\n *\n * @param {*} thing - input data or anything else\n *\n * @return {String} type\n */\nexport function typeOf(thing) {\n switch (thing) {\n case undefined:\n return 'Undefined'\n case null:\n return 'Null'\n default:\n return thing.constructor.name\n }\n}\n\n/**\n * @access public\n * @method dataTypeOf\n * @memberof module:@citation-js/core.plugins.input.util\n *\n * @param {*} thing - input data or anything else\n *\n * @return {module:@citation-js/core.plugins.input~dataType} dataType\n */\nexport function dataTypeOf(thing) {\n switch (typeof thing) {\n case 'string':\n return 'String'\n\n case 'object':\n if (Array.isArray(thing)) {\n return 'Array'\n } else if (typeOf(thing) === 'Object') {\n return 'SimpleObject'\n } else if (typeOf(thing) !== 'Null') {\n return 'ComplexObject'\n }\n // fall through when thing === null, return default value\n\n default:\n return 'Primitive'\n }\n}\n","/**\n * Apply a parse chain graph to an element\n *\n * @access protected\n * @method applyGraph\n * @memberof module:@citation-js/core.plugins.input.util\n *\n * @param {module:@citation-js/core~CSL} entry\n * @param {Array<Object>} graph\n *\n * @return {module:@citation-js/core~CSL} entry\n */\nexport function applyGraph(entry, graph) {\n if (entry._graph) {\n const index = graph.findIndex(({ type }) => type === '@else/list+object')\n if (index !== -1) {\n graph.splice(index + 1, 0, ...entry._graph.slice(0, -1))\n }\n }\n\n entry._graph = graph\n return entry\n}\n\n/**\n * Remove the parse chain graph from an element\n *\n * @access protected\n * @method removeGraph\n * @memberof module:@citation-js/core.plugins.input.util\n *\n * @param {module:@citation-js/core~CSL} entry\n *\n * @return {module:@citation-js/core~CSL} entry\n */\nexport function removeGraph(entry) {\n delete entry._graph\n return entry\n}\n","/**\n * @memberof module:@citation-js/core\n * @var {Object} logger\n * @property _output\n * @property {Console} _console\n * @property {Array<String>} _log\n * @property {Array<module:@citation-js/core~logLevel>} _levels\n * @property {module:@citation-js/core~logLevel} level\n */\nconst logger = {\n _output(level, scope, msg) {\n this._log.push(scope, msg)\n\n if (this._levels.indexOf(level) < this._levels.indexOf(this.level)) {\n return\n }\n\n this._console.log(scope, ...msg)\n },\n _console: null,\n _log: [],\n\n /**\n * @typedef {String} module:@citation-js/core~logLevel\n */\n _levels: ['http', 'debug', 'unmapped', 'info', 'warn', 'error', 'silent'],\n\n level: 'silent',\n}\n\nfor (const level of logger._levels) {\n logger[level] = (scope, ...msg) => logger._output(level, scope, msg)\n}\n\nif (typeof console.Console === 'function') {\n logger._console = new console.Console(process.stderr)\n} else {\n logger._console = console\n}\n\nexport default logger\n","// @ts-nocheck\nimport logger from '../../logger.js'\nimport { dataTypeOf } from './dataType.js'\n\n// register\nconst types = {}\nconst dataTypes = {}\n\n// extensions not registered as such\nconst unregExts = {}\n\n/**\n * Hard-coded, for reasons\n *\n * @access private\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {module:@citation-js/core~InputData} input\n * @param {module:@citation-js/core.plugins.input~dataType} dataType\n * @return {module:@citation-js/core.plugins.input~format} native format\n */\nfunction parseNativeTypes(input, dataType) {\n switch (dataType) {\n case 'Array':\n if (input.length === 0 || input.every((entry) => type(entry) === '@csl/object')) {\n return '@csl/list+object'\n } else {\n return '@else/list+object'\n }\n\n case 'SimpleObject':\n case 'ComplexObject':\n // might, of course, be something completely else, but this is how the parser works\n return '@csl/object'\n\n default:\n return '@invalid'\n }\n}\n\n/**\n * @access private\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {Array<module:@citation-js/core.plugins.input~format>} [typeList=[]]\n * @param {module:@citation-js/core~InputData} data\n *\n * @return {module:@citation-js/core.plugins.input~format} native format\n */\nfunction matchType(typeList = [], data) {\n for (const type of typeList) {\n if (types[type].predicate(data)) {\n return matchType(types[type].extensions, data) || type\n }\n }\n}\n\n/**\n * @access public\n * @method type\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {module:@citation-js/core~InputData} input\n *\n * @return {module:@citation-js/core.plugins.input~format} type\n */\nexport function type(input) {\n const dataType = dataTypeOf(input)\n\n // Empty array should be @csl/list+object too\n if (dataType === 'Array' && input.length === 0) {\n // Off-load to parseNativeTypes() to not repeat the name\n // '@csl/list+object' here as well, as it might change\n return parseNativeTypes(input, dataType)\n }\n\n const match = matchType(dataTypes[dataType], input)\n\n // If no matching formats found, test if native format,\n // else invalid input.\n return match || parseNativeTypes(input, dataType)\n}\n\n/**\n * @access public\n * @method addTypeParser\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {module:@citation-js/core.plugins.input~format} format\n * @param {module:@citation-js/core.plugins.input.util.TypeParser} typeParser\n */\nexport function addTypeParser(format, { dataType, predicate, extends: extend }) {\n // 1. check if any subclass formats are waiting for this format\n let extensions = []\n if (format in unregExts) {\n extensions = unregExts[format]\n delete unregExts[format]\n logger.debug(\n '[core]',\n `Subclasses \"${extensions}\" finally registered to parent type \"${format}\"`\n )\n }\n\n // 2. create object with parser info\n const object = { predicate, extensions }\n types[format] = object\n\n // 3. determine which type lists the type should be added to\n if (extend) {\n // 3.1. if format is subclass, check if parent type is registered\n const parentTypeParser = types[extend]\n\n if (parentTypeParser) {\n // 3.1.1. if it is, add the type parser\n parentTypeParser.extensions.push(format)\n } else {\n // 3.1.2. if it isn't, register type as waiting\n if (!unregExts[extend]) {\n unregExts[extend] = []\n }\n unregExts[extend].push(format)\n logger.debug('[core]', `Subclass \"${format}\" is waiting on parent type \"${extend}\"`)\n }\n } else {\n // 3.2. else, add\n const typeList = dataTypes[dataType] || (dataTypes[dataType] = [])\n typeList.push(format)\n }\n}\n\n/**\n * @access public\n * @method hasTypeParser\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {module:@citation-js/core.plugins.input~format} type\n *\n * @return {Boolean} type parser is registered\n */\nexport function hasTypeParser(type) {\n return Object.prototype.hasOwnProperty.call(types, type)\n}\n\n/**\n * @access public\n * @method removeTypeParser\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {module:@citation-js/core.plugins.input~format} type\n */\nexport function removeTypeParser(type) {\n delete types[type]\n\n // Removing orphaned type refs\n const typeLists = [\n ...Object.keys(dataTypes).map((key) => dataTypes[key]),\n ...Object.keys(types)\n .map((type) => types[type].extensions)\n .filter((list) => list.length > 0),\n ]\n typeLists.forEach((typeList) => {\n const index = typeList.indexOf(type)\n if (index > -1) {\n typeList.splice(index, 1)\n }\n })\n}\n\n/**\n * @access public\n * @method listTypeParser\n * @memberof module:@citation-js/core.plugins.input\n *\n * @return {Array<module:@citation-js/core.plugins.input~format>} list of registered type parsers\n */\nexport function listTypeParser() {\n return Object.keys(types)\n}\n\n/**\n * @access public\n * @method treeTypeParser\n * @memberof module:@citation-js/core.plugins.input\n *\n * @return {Object} tree structure\n */\n/* istanbul ignore next: debugging */\nexport function treeTypeParser() {\n const attachNode = (name) => ({ name, children: types[name].extensions.map(attachNode) })\n return {\n name: 'Type tree',\n children: Object.keys(dataTypes).map((name) => ({\n name,\n children: dataTypes[name].map(attachNode),\n })),\n }\n}\n\n/**\n * Validate and parse the format name\n *\n * @access public\n * @method typeMatcher\n * @memberof module:@citation-js/core.plugins.input\n * @type {RegExp}\n */\nexport const typeMatcher = /^(?:@(.+?))(?:\\/(?:(.+?)\\+)?(?:(.+)))?$/\n","// @ts-nocheck\nimport { type, typeMatcher } from './type.js'\n\n/**\n * @memberof module:@citation-js/core.plugins.input.util\n * @param {module:@citation-js/core.plugins.input~typeParser} data\n */\nclass TypeParser {\n /**\n * @access protected\n * @type {Array<module:@citation-js/core.plugins.input~dataType>}\n */\n validDataTypes = ['String', 'Array', 'SimpleObject', 'ComplexObject', 'Primitive']\n\n constructor(data) {\n this.data = data\n }\n\n // ==========================================================================\n // Validation\n // ==========================================================================\n\n /**\n * @access protected\n * @throws {RangeError} if dataType is not valid\n */\n validateDataType() {\n const dataType = this.data.dataType\n if (dataType && !this.validDataTypes.includes(dataType)) {\n throw new RangeError(`dataType was ${dataType}; expected one of ${this.validDataTypes}`)\n }\n }\n\n /**\n * @access protected\n * @throws {TypeError} if predicate is not valid\n */\n validateParseType() {\n const predicate = this.data.predicate\n if (predicate && !(predicate instanceof RegExp || typeof predicate === 'function')) {\n throw new TypeError(`predicate was ${typeof predicate}; expected RegExp or function`)\n }\n }\n\n /**\n * @access protected\n * @throws {TypeError} if predicate is not valid\n */\n validateTokenList() {\n const tokenList = this.data.tokenList\n if (tokenList && typeof tokenList !== 'object') {\n throw new TypeError(`tokenList was ${typeof tokenList}; expected object or RegExp`)\n }\n }\n\n /**\n * @access protected\n * @throws {TypeError} if propertyConstraint is not valid\n */\n validatePropertyConstraint() {\n const propertyConstraint = this.data.propertyConstraint\n if (propertyConstraint && typeof propertyConstraint !== 'object') {\n throw new TypeError(\n `propertyConstraint was ${typeof propertyConstraint}; expected array or object`\n )\n }\n }\n\n /**\n * @access protected\n * @throws {TypeError} if elementConstraint is not valid\n */\n validateElementConstraint() {\n const elementConstraint = this.data.elementConstraint\n if (elementConstraint && typeof elementConstraint !== 'string') {\n throw new TypeError(`elementConstraint was ${typeof elementConstraint}; expected string`)\n }\n }\n\n /**\n * @access protected\n * @throws {TypeError} if extends is not valid\n */\n validateExtends() {\n const extend = this.data.extends\n if (extend && typeof extend !== 'string') {\n throw new TypeError(`extends was ${typeof extend}; expected string`)\n }\n }\n\n /**\n * @access public\n * @throws {TypeError|RangeError} if typeParser is not valid\n */\n validate() {\n if (this.data === null || typeof this.data !== 'object') {\n throw new TypeError(`typeParser was ${typeof this.data}; expected object`)\n }\n this.validateDataType()\n this.validateParseType()\n this.validateTokenList()\n this.validatePropertyConstraint()\n this.validateElementConstraint()\n this.validateExtends()\n }\n\n // ==========================================================================\n // Simplification helpers\n // ==========================================================================\n\n /**\n * @access protected\n * @return {Array<module:@citation-js/core.plugins.input~predicate>}\n */\n parseTokenList() {\n let tokenList = this.data.tokenList\n\n if (!tokenList) {\n return []\n } else if (tokenList instanceof RegExp) {\n tokenList = { token: tokenList }\n }\n\n const { token, split = /\\s+/, trim = true, every = true } = tokenList\n\n const trimInput = (input) => (trim ? input.trim() : input)\n const testTokens = every ? 'every' : 'some'\n\n const predicate = (input) =>\n trimInput(input)\n .split(split)\n [testTokens]((part) => token.test(part))\n\n return [predicate]\n }\n\n /**\n * @access protected\n * @return {Array<module:@citation-js/core.plugins.input~predicate>}\n */\n parsePropertyConstraint() {\n const constraints = [].concat(this.data.propertyConstraint || [])\n\n return constraints.map(({ props, match, value }) => {\n props = [].concat(props)\n\n switch (match) {\n case 'any': // fall-through\n case 'some':\n return (input) => props.some((prop) => prop in input && (!value || value(input[prop])))\n case 'none':\n return (input) => !props.some((prop) => prop in input && (!value || value(input[prop])))\n case 'every': // fall-through\n default:\n return (input) => props.every((prop) => prop in input && (!value || value(input[prop])))\n }\n })\n }\n\n /**\n * @access protected\n * @return {Array<module:@citation-js/core.plugins.input~predicate>}\n */\n parseElementConstraint() {\n const constraint = this.data.elementConstraint\n return !constraint ? [] : [(input) => input.every((entry) => type(entry) === constraint)]\n }\n\n /**\n * @access protected\n * @return {Array<module:@citation-js/core.plugins.input~predicate>}\n */\n parsePredicate() {\n if (this.data.predicate instanceof RegExp) {\n return [this.data.predicate.test.bind(this.data.predicate)]\n } else if (this.data.predicate) {\n return [this.data.predicate]\n } else {\n return []\n }\n }\n\n /**\n * @access protected\n * @return {module:@citation-js/core.plugins.input~predicate}\n */\n getCombinedPredicate() {\n const predicates = [\n ...this.parsePredicate(),\n ...this.parseTokenList(),\n ...this.parsePropertyConstraint(),\n ...this.parseElementConstraint(),\n ]\n\n if (predicates.length === 0) {\n return () => true\n } else if (predicates.length === 1) {\n return predicates[0]\n } else {\n return (input) => predicates.every((predicate) => predicate(input))\n }\n }\n\n /**\n * @access protected\n * @return {module:@citation-js/core.plugins.input~dataType}\n */\n getDataType() {\n if (this.data.dataType) {\n return this.data.dataType\n } else if (this.data.predicate instanceof RegExp) {\n return 'String'\n } else if (this.data.tokenList) {\n return 'String'\n } else if (this.data.elementConstraint) {\n return 'Array'\n } else {\n return 'Primitive'\n }\n }\n\n // ==========================================================================\n // Data simplification\n // ==========================================================================\n\n /**\n * @type {module:@citation-js/core.plugins.input~dataType}\n */\n get dataType() {\n return this.getDataType()\n }\n\n /**\n * @type {module:@citation-js/core.plugins.input~predicate}\n */\n get predicate() {\n return this.getCombinedPredicate()\n }\n\n /**\n * @type {module:@citation-js/core.plugins.input~format}\n */\n get extends() {\n return this.data.extends\n }\n}\n\n/**\n * @memberof module:@citation-js/core.plugins.input.util\n * @param {module:@citation-js/core.plugins.input~dataParser|module:@citation-js/core.plugins.input~asyncDataParser} parser\n * @param {Object} options\n * @param {Boolean} [options.async=false]\n */\nclass DataParser {\n constructor(parser, { async } = {}) {\n this.parser = parser\n this.async = async\n }\n\n // ==========================================================================\n // Validation\n // ==========================================================================\n\n /**\n * @throws {TypeError} if dataParser is not valid\n */\n validate() {\n const parser = this.parser\n if (typeof parser !== 'function') {\n throw new TypeError(`parser was ${typeof parser}; expected function`)\n }\n }\n}\n\n/**\n * @memberof module:@citation-js/core.plugins.input.util\n * @param {module:@citation-js/core.plugins.input~format} format\n * @param {module:@citation-js/core.plugins.input~parsers} parsers\n */\nclass FormatParser {\n constructor(format, parsers = {}) {\n this.format = format\n\n if (parsers.parseType) {\n this.typeParser = new TypeParser(parsers.parseType)\n }\n if (parsers.parse) {\n this.dataParser = new DataParser(parsers.parse, { async: false })\n }\n if (parsers.parseAsync) {\n this.asyncDataParser = new DataParser(parsers.parseAsync, { async: true })\n }\n }\n\n // ==========================================================================\n // Validation\n // ==========================================================================\n\n /**\n * @access protected\n * @throws {TypeError} if format is not valid\n */\n validateFormat() {\n const format = this.format\n if (!typeMatcher.test(format)) {\n throw new TypeError(`format name was \"${format}\"; didn't match expected pattern`)\n }\n }\n\n /**\n * @throws {TypeError} if formatParser is not valid\n */\n validate() {\n this.validateFormat()\n if (this.typeParser) {\n this.typeParser.validate()\n }\n if (this.dataParser) {\n this.dataParser.validate()\n }\n if (this.asyncDataParser) {\n this.asyncDataParser.validate()\n }\n }\n}\n\nexport { TypeParser, DataParser, FormatParser }\n","// @ts-nocheck\nimport { parse as parseName } from '@citation-js/name'\n\nconst NAME = 1\nconst NAME_LIST = 2\nconst DATE = 3\nconst TYPE = 4\n\n/**\n * Data from https://github.com/citation-style-language/schema/blob/master/schemas/input/csl-data.json\n *\n * - true if a valid type\n * - string if another type should be used\n *\n * @access private\n * @constant entryTypes\n * @memberof module:@citation-js/core.plugins.input\n */\nconst entryTypes = {\n article: true,\n 'article-journal': true,\n 'article-magazine': true,\n 'article-newspaper': true,\n bill: true,\n book: true,\n broadcast: true,\n chapter: true,\n classic: true,\n collection: true,\n dataset: true,\n document: true,\n entry: true,\n 'entry-dictionary': true,\n 'entry-encyclopedia': true,\n event: true,\n figure: true,\n graphic: true,\n hearing: true,\n interview: true,\n legal_case: true,\n legislation: true,\n manuscript: true,\n map: true,\n motion_picture: true,\n musical_score: true,\n pamphlet: true,\n 'paper-conference': true,\n patent: true,\n performance: true,\n periodical: true,\n personal_communication: true,\n post: true,\n 'post-weblog': true,\n regulation: true,\n report: true,\n review: true,\n 'review-book': true,\n software: true,\n song: true,\n speech: true,\n standard: true,\n thesis: true,\n treaty: true,\n webpage: true,\n\n // From https://github.com/CrossRef/rest-api-doc/issues/187\n 'journal-article': 'article-journal',\n 'book-chapter': 'chapter',\n 'posted-content': 'manuscript',\n 'proceedings-article': 'paper-conference',\n}\n\n/**\n * Object containing type info on CSL-JSON fields.\n *\n * * string: primitive value type\n * * array: list of primitive value types\n * * number: special type\n *\n * Data from https://github.com/citation-style-language/schema/blob/master/csl-data.json\n *\n * @access private\n * @constant fieldTypes\n * @memberof module:@citation-js/core.plugins.input\n */\nconst fieldTypes = {\n author: NAME_LIST,\n chair: NAME_LIST,\n 'collection-editor': NAME_LIST,\n compiler: NAME_LIST,\n composer: NAME_LIST,\n 'container-author': NAME_LIST,\n contributor: NAME_LIST,\n curator: NAME_LIST,\n director: NAME_LIST,\n editor: NAME_LIST,\n 'editorial-director': NAME_LIST,\n 'executive-producer': NAME_LIST,\n guest: NAME_LIST,\n host: NAME_LIST,\n interviewer: NAME_LIST,\n illustrator: NAME_LIST,\n narrator: NAME_LIST,\n organizer: NAME_LIST,\n 'original-author': NAME_LIST,\n performer: NAME_LIST,\n producer: NAME_LIST,\n 'reviewed-author': NAME_LIST,\n recipient: NAME_LIST,\n 'script-writer': NAME_LIST,\n 'series-creator': NAME_LIST,\n translator: NAME_LIST,\n\n accessed: DATE,\n 'available-date': DATE,\n container: DATE,\n 'event-date': DATE,\n issued: DATE,\n 'original-date': DATE,\n submitted: DATE,\n\n type: TYPE,\n\n categories: 'object', // TODO Array<String>\n custom: 'object',\n\n id: ['string', 'number'],\n language: 'string',\n journalAbbreviation: 'string',\n shortTitle: 'string',\n abstract: 'string',\n annote: 'string',\n archive: 'string',\n archive_collection: 'string',\n archive_location: 'string',\n 'archive-place': 'string',\n authority: 'string',\n 'call-number': 'string',\n 'chapter-number': 'string',\n 'citation-number': 'string',\n 'citation-key': 'string',\n 'citation-label': 'string',\n 'collection-number': 'string',\n 'collection-title': 'string',\n 'container-title': 'string',\n 'container-title-short': 'string',\n dimensions: 'string',\n division: 'string',\n DOI: 'string',\n edition: ['string', 'number'],\n event: 'string', // deprecated\n 'event-title': 'string',\n 'event-place': 'string',\n 'first-reference-note-number': 'string',\n genre: 'string',\n ISBN: 'string',\n ISSN: 'string',\n issue: ['string', 'number'],\n jurisdiction: 'string',\n keyword: 'string',\n locator: 'string',\n medium: 'string',\n note: 'string',\n number: ['string', 'number'],\n 'number-of-pages': 'string',\n 'number-of-volumes': ['string', 'number'],\n 'original-publisher': 'string',\n 'original-publisher-place': 'string',\n 'original-title': 'string',\n page: 'string',\n 'page-first': 'string',\n 'part-number': ['string', 'number'],\n 'part-title': 'string',\n PMCID: 'string',\n PMID: 'string',\n printing: 'string',\n publisher: 'string',\n 'publisher-place': 'string',\n references: 'string',\n 'reviewed-title': 'string',\n 'reviewed-genre': 'string',\n scale: 'string',\n section: 'string',\n source: 'string',\n status: 'string',\n supplement: ['string', 'number'],\n title: 'string',\n 'title-short': 'string',\n URL: 'string',\n version: 'string',\n volume: ['string', 'number'],\n 'volume-title': 'string',\n 'volume-title-short': 'string',\n 'year-suffix': 'string',\n}\n\n/**\n * Correct a name.\n *\n * @access private\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {*} name - name\n * @param {Boolean} bestGuessConversions - make some best guess conversions on type mismatch\n *\n * @return {Object} returns the (corrected) value if possible, otherwise undefined\n */\nfunction correctName(name, bestGuessConversions) {\n if (typeof name === 'object' && name !== null && (name.literal || name.given || name.family)) {\n return name\n } else if (!bestGuessConversions) {\n return undefined\n } else if (typeof name === 'string') {\n return parseName(name)\n }\n}\n\n/**\n * Correct a name field.\n *\n * @access private\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {*} nameList - name list\n * @param {Boolean} bestGuessConversions - make some best guess conversions on type mismatch\n *\n * @return {Array<Object>|undefined} returns the (corrected) value if possible, otherwise undefined\n */\nfunction correctNameList(nameList, bestGuessConversions) {\n if (nameList instanceof Array) {\n const names = nameList.map((name) => correctName(name, bestGuessConversions)).filter(Boolean)\n return names.length ? names : undefined\n }\n}\n\n/**\n * Correct date parts\n *\n * @access private\n * @memberof module:@citation-js/core.plugins.input.util\n *\n * @param {Array} dateParts\n * @param {Boolean} bestGuessConversions - make some best guess conversions on type mismatch\n *\n * @return {Array<Number>|undefined}\n */\nfunction correctDateParts(dateParts, bestGuessConversions) {\n if (dateParts.every((part) => typeof part === 'number')) {\n return dateParts\n } else if (!bestGuessConversions || dateParts.some((part) => isNaN(parseInt(part)))) {\n return undefined\n } else {\n return dateParts.map((part) => parseInt(part))\n }\n}\n\n/**\n * Correct a date field.\n *\n * @access private\n * @memberof module:@citation-js/core.plugins.input.util\n *\n * @param {*} date - date\n * @param {Boolean} bestGuessConversions - make some best guess conversions on type mismatch\n *\n * @return {Array<Object>|undefined} returns the (corrected) value if possible, otherwise undefined\n */\nfunction correctDate(date, bestGuessConversions) {\n const dp = 'date-parts'\n\n if (typeof date !== 'object' || date === null) {\n return undefined\n\n // \"{'date-parts': [[2000, 1, 1], ...]}\"\n } else if (date[dp] instanceof Array && date[dp].every((part) => part instanceof Array)) {\n const range = date[dp]\n .map((dateParts) => correctDateParts(dateParts, bestGuessConversions))\n .filter(Boolean)\n return range.length ? { ...date, 'date-parts': range } : undefined\n\n // LEGACY support\n // \"[{'date-parts': [2000, 1, 1]}, ...]\"\n } else if (date instanceof Array && date.every((part) => part[dp] instanceof Array)) {\n const range = date\n .map((dateParts) => correctDateParts(dateParts[dp], bestGuessConversions))\n .filter(Boolean)\n return range.length ? { 'date-parts': range } : undefined\n\n // LEGACY support\n // \"{'date-parts': [2000, 1, 1]}\"\n } else if (date[dp] instanceof Array) {\n const dateParts = correctDateParts(date[dp], bestGuessConversions)\n return dateParts && { 'date-parts': [dateParts] }\n\n // No separate date-parts\n } else if ('literal' in date || 'raw' in date) {\n return date\n }\n}\n\n/**\n * Correct a type field.\n *\n * @access private\n * @memberof module:@citation-js/core.plugins.input.util\n *\n * @param {String|*} type - type\n * @param {Boolean} bestGuessConversions - make some best guess conversions on type mismatch\n *\n * @return {String|undefined} returns the (corrected) value if possible, otherwise undefined\n */\nfunction correctType(type, bestGuessConversions) {\n // Also anything that can be converted to a string. Taking `language` as a field\n // with similar string constraints, as fields like `title` might take HTML into\n // account in the future.\n type = correctField('language', type, bestGuessConversions)\n\n if (entryTypes[type] === true) {\n return type\n } else if (bestGuessConversions && type in entryTypes) {\n return entryTypes[type]\n } else {\n return undefined\n }\n}\n\n/**\n * Correct a field.\n *\n * @access private\n * @memberof module:@citation-js/core.plugins.input.util\n *\n * @param {String} fieldName - field name\n * @param {*} value - value\n * @param {Boolean} bestGuessConversions - make some best guess conversions on type mismatch\n *\n * @return {*|undefined} returns the (corrected) value if possible, otherwise undefined\n */\nfunction correctField(fieldName, value, bestGuessConversions) {\n const fieldType = [].concat(fieldTypes[fieldName])\n\n switch (fieldTypes[fieldName]) {\n /* istanbul ignore next: no field has this */\n case NAME:\n return correctName(value, bestGuessConversions)\n case NAME_LIST:\n return correctNameList(value, bestGuessConversions)\n case DATE:\n return correctDate(value, bestGuessConversions)\n case TYPE:\n return correctType(value, bestGuessConversions)\n }\n\n if (bestGuessConversions) {\n if (\n typeof value === 'string' &&\n fieldType.includes('number') &&\n !fieldType.includes('string') &&\n !isNaN(+value)\n ) {\n return parseFloat(value)\n } else if (\n typeof value === 'number' &&\n fieldType.includes('string') &&\n !fieldType.includes('number')\n ) {\n return value.toString()\n } else if (Array.isArray(value) && value.length) {\n return correctField(fieldName, value[0], bestGuessConversions)\n }\n }\n\n if (fieldType.includes(typeof value)) {\n return value\n }\n}\n\n/**\n * Make CSL JSON conform to standards so that plugins don't have to typecheck all the time.\n *\n * @access protected\n * @method clean\n * @memberof module:@citation-js/core.plugins.input.util\n *\n * @param {Array<module:@citation-js/core~CSL>} data - Array of CSL\n * @param {Boolean} [bestGuessConversions=true] - make some best guess conversions on type mismatch\n *\n * @return {Array<module:@citation-js/core~CSL>} Array of clean CSL\n */\nfunction parseCsl(data, bestGuessConversions = true) {\n return data.map(function (entry) {\n const clean = {}\n\n for (const field in entry) {\n const correction = correctField(field, entry[field], bestGuessConversions)\n if (correction !== undefined) {\n clean[field] = correction\n }\n }\n\n return clean\n })\n}\n\nexport { parseCsl as clean }\n","/**\n * Upgrade CSL item from 1.0.1 to 1.0.2\n *\n * @method upgradeCsl\n * @memberof module:@citation-js/core.util\n *\n * @param {Object} item - Input object\n *\n * @return {Object} upgraded item\n */\nexport function upgradeCsl(item) {\n if (Array.isArray(item)) {\n return item.map(upgradeCsl)\n }\n\n item = { ...item }\n if ('event' in item) {\n item['event-title'] = item.event\n delete item.event\n }\n if (item.type === 'book' && 'version' in item) {\n item.type = 'software'\n }\n return item\n}\n\n/**\n * Downgrade CSL item from 1.0.2 to 1.0.1\n *\n * @method downgradeCsl\n * @memberof module:@citation-js/core.util\n *\n * @param {Object} item - Input object\n *\n * @return {Object} downgraded item\n */\nexport function downgradeCsl(item) {\n if (Array.isArray(item)) {\n return item.map(downgradeCsl)\n }\n\n item = { ...item }\n if ('event-title' in item) {\n item.event = item['event-title']\n delete item['event-title']\n }\n if (item.type === 'software') {\n item.type = 'book'\n }\n return item\n}\n","// @ts-nocheck\n/**\n * Duplicate objects to prevent Cite changing values outside of own scope\n *\n * @access protected\n * @method deepCopy\n * @memberof module:@citation-js/core.util\n *\n * @param {Object} obj - Input object\n * @param {Set} [seen]\n *\n * @return {Object} Duplicated object\n * @throws {TypeError}\n */\nexport function deepCopy(value, seen = new Set()) {\n if (\n typeof value !== 'object' ||\n value === null ||\n (value.constructor !== Object && value.constructor !== Array)\n ) {\n return value\n }\n\n if (seen.has(value)) {\n throw new TypeError('Recursively copying circular structure')\n }\n\n seen.add(value)\n let copy\n\n if (value.constructor === Array) {\n copy = value.map((value) => deepCopy(value, seen))\n } else {\n const object = {}\n for (const key in value) {\n object[key] = deepCopy(value[key], seen)\n }\n copy = object\n }\n\n seen.delete(value)\n return copy\n}\n\n// // Unfortunately too costly performance-wise, but the\n// // proper way to clone any object (apart from arrays perhaps):\n// const object = Object.create(Object.getPrototypeOf(value))\n// const descriptors = Object.getOwnPropertyDescriptors(value)\n// for (let key in descriptors) {\n// const descriptor = descriptors[key]\n// if (descriptor.value) { descriptor.value = deepCopy(descriptor.value) }\n// Object.defineProperty(object, key, descriptor)\n// }\n\nexport default deepCopy\n","\"use strict\";\n\nvar conversions = {};\nmodule.exports = conversions;\n\nfunction sign(x) {\n return x < 0 ? -1 : 1;\n}\n\nfunction evenRound(x) {\n // Round x to the nearest integer, choosing the even integer if it lies halfway between two.\n if ((x % 1) === 0.5 && (x & 1) === 0) { // [even number].5; round down (i.e. floor)\n return Math.floor(x);\n } else {\n return Math.round(x);\n }\n}\n\nfunction createNumberConversion(bitLength, typeOpts) {\n if (!typeOpts.unsigned) {\n --bitLength;\n }\n const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength);\n const upperBound = Math.pow(2, bitLength) - 1;\n\n const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength);\n const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1);\n\n return function(V, opts) {\n if (!opts) opts = {};\n\n let x = +V;\n\n if (opts.enforceRange) {\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite number\");\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n if (x < lowerBound || x > upperBound) {\n throw new TypeError(\"Argument is not in byte range\");\n }\n\n return x;\n }\n\n if (!isNaN(x) && opts.clamp) {\n x = evenRound(x);\n\n if (x < lowerBound) x = lowerBound;\n if (x > upperBound) x = upperBound;\n return x;\n }\n\n if (!Number.isFinite(x) || x === 0) {\n return 0;\n }\n\n x = sign(x) * Math.floor(Math.abs(x));\n x = x % moduloVal;\n\n if (!typeOpts.unsigned && x >= moduloBound) {\n return x - moduloVal;\n } else if (typeOpts.unsigned) {\n if (x < 0) {\n x += moduloVal;\n } else if (x === -0) { // don't return negative zero\n return 0;\n }\n }\n\n return x;\n }\n}\n\nconversions[\"void\"] = function () {\n return undefined;\n};\n\nconversions[\"boolean\"] = function (val) {\n return !!val;\n};\n\nconversions[\"byte\"] = createNumberConversion(8, { unsigned: false });\nconversions[\"octet\"] = createNumberConversion(8, { unsigned: true });\n\nconversions[\"short\"] = createNumberConversion(16, { unsigned: false });\nconversions[\"unsigned short\"] = createNumberConversion(16, { unsigned: true });\n\nconversions[\"long\"] = createNumberConversion(32, { unsigned: false });\nconversions[\"unsigned long\"] = createNumberConversion(32, { unsigned: true });\n\nconversions[\"long long\"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 });\nconversions[\"unsigned long long\"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 });\n\nconversions[\"double\"] = function (V) {\n const x = +V;\n\n if (!Number.isFinite(x)) {\n throw new TypeError(\"Argument is not a finite floating-point value\");\n }\n\n return x;\n};\n\nconversions[\"unrestricted double\"] = function (V) {\n const x = +V;\n\n if (isNaN(x)) {\n throw new TypeError(\"Argument is NaN\");\n }\n\n return x;\n};\n\n// not quite valid, but good enough for JS\nconversions[\"float\"] = conversions[\"double\"];\nconversions[\"unrestricted float\"] = conversions[\"unrestricted double\"];\n\nconversions[\"DOMString\"] = function (V, opts) {\n if (!opts) opts = {};\n\n if (opts.treatNullAsEmptyString && V === null) {\n return \"\";\n }\n\n return String(V);\n};\n\nconversions[\"ByteString\"] = function (V, opts) {\n const x = String(V);\n let c = undefined;\n for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) {\n if (c > 255) {\n throw new TypeError(\"Argument is not a valid bytestring\");\n }\n }\n\n return x;\n};\n\nconversions[\"USVString\"] = function (V) {\n const S = String(V);\n const n = S.length;\n const U = [];\n for (let i = 0; i < n; ++i) {\n const c = S.charCodeAt(i);\n if (c < 0xD800 || c > 0xDFFF) {\n U.push(String.fromCodePoint(c));\n } else if (0xDC00 <= c && c <= 0xDFFF) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n if (i === n - 1) {\n U.push(String.fromCodePoint(0xFFFD));\n } else {\n const d = S.charCodeAt(i + 1);\n if (0xDC00 <= d && d <= 0xDFFF) {\n const a = c & 0x3FF;\n const b = d & 0x3FF;\n U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b));\n ++i;\n } else {\n U.push(String.fromCodePoint(0xFFFD));\n }\n }\n }\n }\n\n return U.join('');\n};\n\nconversions[\"Date\"] = function (V, opts) {\n if (!(V instanceof Date)) {\n throw new TypeError(\"Argument is not a Date object\");\n }\n if (isNaN(V)) {\n return undefined;\n }\n\n return V;\n};\n\nconversions[\"RegExp\"] = function (V, opts) {\n if (!(V instanceof RegExp)) {\n V = new RegExp(V);\n }\n\n return V;\n};\n","\"use strict\";\n\nmodule.exports.mixin = function mixin(target, source) {\n const keys = Object.getOwnPropertyNames(source);\n for (let i = 0; i < keys.length; ++i) {\n Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));\n }\n};\n\nmodule.exports.wrapperSymbol = Symbol(\"wrapper\");\nmodule.exports.implSymbol = Symbol(\"impl\");\n\nmodule.exports.wrapperForImpl = function (impl) {\n return impl[module.exports.wrapperSymbol];\n};\n\nmodule.exports.implForWrapper = function (wrapper) {\n return wrapper[module.exports.implSymbol];\n};\n\n","\"use strict\";\n\nvar punycode = require(\"punycode\");\nvar mappingTable = require(\"./lib/mappingTable.json\");\n\nvar PROCESSING_OPTIONS = {\n TRANSITIONAL: 0,\n NONTRANSITIONAL: 1\n};\n\nfunction normalize(str) { // fix bug in v8\n return str.split('\\u0000').map(function (s) { return s.normalize('NFC'); }).join('\\u0000');\n}\n\nfunction findStatus(val) {\n var start = 0;\n var end = mappingTable.length - 1;\n\n while (start <= end) {\n var mid = Math.floor((start + end) / 2);\n\n var target = mappingTable[mid];\n if (target[0][0] <= val && target[0][1] >= val) {\n return target;\n } else if (target[0][0] > val) {\n end = mid - 1;\n } else {\n start = mid + 1;\n }\n }\n\n return null;\n}\n\nvar regexAstralSymbols = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n\nfunction countSymbols(string) {\n return string\n // replace every surrogate pair with a BMP symbol\n .replace(regexAstralSymbols, '_')\n // then get the length\n .length;\n}\n\nfunction mapChars(domain_name, useSTD3, processing_option) {\n var hasError = false;\n var processed = \"\";\n\n var len = countSymbols(domain_name);\n for (var i = 0; i < len; ++i) {\n var codePoint = domain_name.codePointAt(i);\n var status = findStatus(codePoint);\n\n switch (status[1]) {\n case \"disallowed\":\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n break;\n case \"ignored\":\n break;\n case \"mapped\":\n processed += String.fromCodePoint.apply(String, status[2]);\n break;\n case \"deviation\":\n if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) {\n processed += String.fromCodePoint.apply(String, status[2]);\n } else {\n processed += String.fromCodePoint(codePoint);\n }\n break;\n case \"valid\":\n processed += String.fromCodePoint(codePoint);\n break;\n case \"disallowed_STD3_mapped\":\n if (useSTD3) {\n hasError = true;\n processed += String.fromCodePoint(codePoint);\n } else {\n processed += String.fromCodePoint.apply(String, status[2]);\n }\n break;\n case \"disallowed_STD3_valid\":\n if (useSTD3) {\n hasError = true;\n }\n\n processed += String.fromCodePoint(codePoint);\n break;\n }\n }\n\n return {\n string: processed,\n error: hasError\n };\n}\n\nvar combiningMarksRegex = /[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08E4-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C03\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D01-\\u0D03\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D82\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF2-\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF5\\u1DFC-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA880\\uA881\\uA8B4-\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2D]|\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD804[\\uDC00-\\uDC02\\uDC38-\\uDC46\\uDC7F-\\uDC82\\uDCB0-\\uDCBA\\uDD00-\\uDD02\\uDD27-\\uDD34\\uDD73\\uDD80-\\uDD82\\uDDB3-\\uDDC0\\uDE2C-\\uDE37\\uDEDF-\\uDEEA\\uDF01-\\uDF03\\uDF3C\\uDF3E-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF57\\uDF62\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDCB0-\\uDCC3\\uDDAF-\\uDDB5\\uDDB8-\\uDDC0\\uDE30-\\uDE40\\uDEAB-\\uDEB7]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF51-\\uDF7E\\uDF8F-\\uDF92]|\\uD82F[\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD83A[\\uDCD0-\\uDCD6]|\\uDB40[\\uDD00-\\uDDEF]/;\n\nfunction validateLabel(label, processing_option) {\n if (label.substr(0, 4) === \"xn--\") {\n label = punycode.toUnicode(label);\n processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL;\n }\n\n var error = false;\n\n if (normalize(label) !== label ||\n (label[3] === \"-\" && label[4] === \"-\") ||\n label[0] === \"-\" || label[label.length - 1] === \"-\" ||\n label.indexOf(\".\") !== -1 ||\n label.search(combiningMarksRegex) === 0) {\n error = true;\n }\n\n var len = countSymbols(label);\n for (var i = 0; i < len; ++i) {\n var status = findStatus(label.codePointAt(i));\n if ((processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== \"valid\") ||\n (processing === PROCESSING_OPTIONS.NONTRANSITIONAL &&\n status[1] !== \"valid\" && status[1] !== \"deviation\")) {\n error = true;\n break;\n }\n }\n\n return {\n label: label,\n error: error\n };\n}\n\nfunction processing(domain_name, useSTD3, processing_option) {\n var result = mapChars(domain_name, useSTD3, processing_option);\n result.string = normalize(result.string);\n\n var labels = result.string.split(\".\");\n for (var i = 0; i < labels.length; ++i) {\n try {\n var validation = validateLabel(labels[i]);\n labels[i] = validation.label;\n result.error = result.error || validation.error;\n } catch(e) {\n result.error = true;\n }\n }\n\n return {\n string: labels.join(\".\"),\n error: result.error\n };\n}\n\nmodule.exports.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) {\n var result = processing(domain_name, useSTD3, processing_option);\n var labels = result.string.split(\".\");\n labels = labels.map(function(l) {\n try {\n return punycode.toASCII(l);\n } catch(e) {\n result.error = true;\n return l;\n }\n });\n\n if (verifyDnsLength) {\n var total = labels.slice(0, labels.length - 1).join(\".\").length;\n if (total.length > 253 || total.length === 0) {\n result.error = true;\n }\n\n for (var i=0; i < labels.length; ++i) {\n if (labels.length > 63 || labels.length === 0) {\n result.error = true;\n break;\n }\n }\n }\n\n if (result.error) return null;\n return labels.join(\".\");\n};\n\nmodule.exports.toUnicode = function(domain_name, useSTD3) {\n var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL);\n\n return {\n domain: result.string,\n error: result.error\n };\n};\n\nmodule.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS;\n","\"use strict\";\r\nconst punycode = require(\"punycode\");\r\nconst tr46 = require(\"tr46\");\r\n\r\nconst specialSchemes = {\r\n ftp: 21,\r\n file: null,\r\n gopher: 70,\r\n http: 80,\r\n https: 443,\r\n ws: 80,\r\n wss: 443\r\n};\r\n\r\nconst failure = Symbol(\"failure\");\r\n\r\nfunction countSymbols(str) {\r\n return punycode.ucs2.decode(str).length;\r\n}\r\n\r\nfunction at(input, idx) {\r\n const c = input[idx];\r\n return isNaN(c) ? undefined : String.fromCodePoint(c);\r\n}\r\n\r\nfunction isASCIIDigit(c) {\r\n return c >= 0x30 && c <= 0x39;\r\n}\r\n\r\nfunction isASCIIAlpha(c) {\r\n return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A);\r\n}\r\n\r\nfunction isASCIIAlphanumeric(c) {\r\n return isASCIIAlpha(c) || isASCIIDigit(c);\r\n}\r\n\r\nfunction isASCIIHex(c) {\r\n return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66);\r\n}\r\n\r\nfunction isSingleDot(buffer) {\r\n return buffer === \".\" || buffer.toLowerCase() === \"%2e\";\r\n}\r\n\r\nfunction isDoubleDot(buffer) {\r\n buffer = buffer.toLowerCase();\r\n return buffer === \"..\" || buffer === \"%2e.\" || buffer === \".%2e\" || buffer === \"%2e%2e\";\r\n}\r\n\r\nfunction isWindowsDriveLetterCodePoints(cp1, cp2) {\r\n return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124);\r\n}\r\n\r\nfunction isWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === \":\" || string[1] === \"|\");\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetterString(string) {\r\n return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === \":\";\r\n}\r\n\r\nfunction containsForbiddenHostCodePoint(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|%|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction containsForbiddenHostCodePointExcludingPercent(string) {\r\n return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction isSpecialScheme(scheme) {\r\n return specialSchemes[scheme] !== undefined;\r\n}\r\n\r\nfunction isSpecial(url) {\r\n return isSpecialScheme(url.scheme);\r\n}\r\n\r\nfunction defaultPort(scheme) {\r\n return specialSchemes[scheme];\r\n}\r\n\r\nfunction percentEncode(c) {\r\n let hex = c.toString(16).toUpperCase();\r\n if (hex.length === 1) {\r\n hex = \"0\" + hex;\r\n }\r\n\r\n return \"%\" + hex;\r\n}\r\n\r\nfunction utf8PercentEncode(c) {\r\n const buf = new Buffer(c);\r\n\r\n let str = \"\";\r\n\r\n for (let i = 0; i < buf.length; ++i) {\r\n str += percentEncode(buf[i]);\r\n }\r\n\r\n return str;\r\n}\r\n\r\nfunction utf8PercentDecode(str) {\r\n const input = new Buffer(str);\r\n const output = [];\r\n for (let i = 0; i < input.length; ++i) {\r\n if (input[i] !== 37) {\r\n output.push(input[i]);\r\n } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) {\r\n output.push(parseInt(input.slice(i + 1, i + 3).toString(), 16));\r\n i += 2;\r\n } else {\r\n output.push(input[i]);\r\n }\r\n }\r\n return new Buffer(output).toString();\r\n}\r\n\r\nfunction isC0ControlPercentEncode(c) {\r\n return c <= 0x1F || c > 0x7E;\r\n}\r\n\r\nconst extraPathPercentEncodeSet = new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]);\r\nfunction isPathPercentEncode(c) {\r\n return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c);\r\n}\r\n\r\nconst extraUserinfoPercentEncodeSet =\r\n new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]);\r\nfunction isUserinfoPercentEncode(c) {\r\n return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c);\r\n}\r\n\r\nfunction percentEncodeChar(c, encodeSetPredicate) {\r\n const cStr = String.fromCodePoint(c);\r\n\r\n if (encodeSetPredicate(c)) {\r\n return utf8PercentEncode(cStr);\r\n }\r\n\r\n return cStr;\r\n}\r\n\r\nfunction parseIPv4Number(input) {\r\n let R = 10;\r\n\r\n if (input.length >= 2 && input.charAt(0) === \"0\" && input.charAt(1).toLowerCase() === \"x\") {\r\n input = input.substring(2);\r\n R = 16;\r\n } else if (input.length >= 2 && input.charAt(0) === \"0\") {\r\n input = input.substring(1);\r\n R = 8;\r\n }\r\n\r\n if (input === \"\") {\r\n return 0;\r\n }\r\n\r\n const regex = R === 10 ? /[^0-9]/ : (R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/);\r\n if (regex.test(input)) {\r\n return failure;\r\n }\r\n\r\n return parseInt(input, R);\r\n}\r\n\r\nfunction parseIPv4(input) {\r\n const parts = input.split(\".\");\r\n if (parts[parts.length - 1] === \"\") {\r\n if (parts.length > 1) {\r\n parts.pop();\r\n }\r\n }\r\n\r\n if (parts.length > 4) {\r\n return input;\r\n }\r\n\r\n const numbers = [];\r\n for (const part of parts) {\r\n if (part === \"\") {\r\n return input;\r\n }\r\n const n = parseIPv4Number(part);\r\n if (n === failure) {\r\n return input;\r\n }\r\n\r\n numbers.push(n);\r\n }\r\n\r\n for (let i = 0; i < numbers.length - 1; ++i) {\r\n if (numbers[i] > 255) {\r\n return failure;\r\n }\r\n }\r\n if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) {\r\n return failure;\r\n }\r\n\r\n let ipv4 = numbers.pop();\r\n let counter = 0;\r\n\r\n for (const n of numbers) {\r\n ipv4 += n * Math.pow(256, 3 - counter);\r\n ++counter;\r\n }\r\n\r\n return ipv4;\r\n}\r\n\r\nfunction serializeIPv4(address) {\r\n let output = \"\";\r\n let n = address;\r\n\r\n for (let i = 1; i <= 4; ++i) {\r\n output = String(n % 256) + output;\r\n if (i !== 4) {\r\n output = \".\" + output;\r\n }\r\n n = Math.floor(n / 256);\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseIPv6(input) {\r\n const address = [0, 0, 0, 0, 0, 0, 0, 0];\r\n let pieceIndex = 0;\r\n let compress = null;\r\n let pointer = 0;\r\n\r\n input = punycode.ucs2.decode(input);\r\n\r\n if (input[pointer] === 58) {\r\n if (input[pointer + 1] !== 58) {\r\n return failure;\r\n }\r\n\r\n pointer += 2;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n }\r\n\r\n while (pointer < input.length) {\r\n if (pieceIndex === 8) {\r\n return failure;\r\n }\r\n\r\n if (input[pointer] === 58) {\r\n if (compress !== null) {\r\n return failure;\r\n }\r\n ++pointer;\r\n ++pieceIndex;\r\n compress = pieceIndex;\r\n continue;\r\n }\r\n\r\n let value = 0;\r\n let length = 0;\r\n\r\n while (length < 4 && isASCIIHex(input[pointer])) {\r\n value = value * 0x10 + parseInt(at(input, pointer), 16);\r\n ++pointer;\r\n ++length;\r\n }\r\n\r\n if (input[pointer] === 46) {\r\n if (length === 0) {\r\n return failure;\r\n }\r\n\r\n pointer -= length;\r\n\r\n if (pieceIndex > 6) {\r\n return failure;\r\n }\r\n\r\n let numbersSeen = 0;\r\n\r\n while (input[pointer] !== undefined) {\r\n let ipv4Piece = null;\r\n\r\n if (numbersSeen > 0) {\r\n if (input[pointer] === 46 && numbersSeen < 4) {\r\n ++pointer;\r\n } else {\r\n return failure;\r\n }\r\n }\r\n\r\n if (!isASCIIDigit(input[pointer])) {\r\n return failure;\r\n }\r\n\r\n while (isASCIIDigit(input[pointer])) {\r\n const number = parseInt(at(input, pointer));\r\n if (ipv4Piece === null) {\r\n ipv4Piece = number;\r\n } else if (ipv4Piece === 0) {\r\n return failure;\r\n } else {\r\n ipv4Piece = ipv4Piece * 10 + number;\r\n }\r\n if (ipv4Piece > 255) {\r\n return failure;\r\n }\r\n ++pointer;\r\n }\r\n\r\n address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece;\r\n\r\n ++numbersSeen;\r\n\r\n if (numbersSeen === 2 || numbersSeen === 4) {\r\n ++pieceIndex;\r\n }\r\n }\r\n\r\n if (numbersSeen !== 4) {\r\n return failure;\r\n }\r\n\r\n break;\r\n } else if (input[pointer] === 58) {\r\n ++pointer;\r\n if (input[pointer] === undefined) {\r\n return failure;\r\n }\r\n } else if (input[pointer] !== undefined) {\r\n return failure;\r\n }\r\n\r\n address[pieceIndex] = value;\r\n ++pieceIndex;\r\n }\r\n\r\n if (compress !== null) {\r\n let swaps = pieceIndex - compress;\r\n pieceIndex = 7;\r\n while (pieceIndex !== 0 && swaps > 0) {\r\n const temp = address[compress + swaps - 1];\r\n address[compress + swaps - 1] = address[pieceIndex];\r\n address[pieceIndex] = temp;\r\n --pieceIndex;\r\n --swaps;\r\n }\r\n } else if (compress === null && pieceIndex !== 8) {\r\n return failure;\r\n }\r\n\r\n return address;\r\n}\r\n\r\nfunction serializeIPv6(address) {\r\n let output = \"\";\r\n const seqResult = findLongestZeroSequence(address);\r\n const compress = seqResult.idx;\r\n let ignore0 = false;\r\n\r\n for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) {\r\n if (ignore0 && address[pieceIndex] === 0) {\r\n continue;\r\n } else if (ignore0) {\r\n ignore0 = false;\r\n }\r\n\r\n if (compress === pieceIndex) {\r\n const separator = pieceIndex === 0 ? \"::\" : \":\";\r\n output += separator;\r\n ignore0 = true;\r\n continue;\r\n }\r\n\r\n output += address[pieceIndex].toString(16);\r\n\r\n if (pieceIndex !== 7) {\r\n output += \":\";\r\n }\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction parseHost(input, isSpecialArg) {\r\n if (input[0] === \"[\") {\r\n if (input[input.length - 1] !== \"]\") {\r\n return failure;\r\n }\r\n\r\n return parseIPv6(input.substring(1, input.length - 1));\r\n }\r\n\r\n if (!isSpecialArg) {\r\n return parseOpaqueHost(input);\r\n }\r\n\r\n const domain = utf8PercentDecode(input);\r\n const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false);\r\n if (asciiDomain === null) {\r\n return failure;\r\n }\r\n\r\n if (containsForbiddenHostCodePoint(asciiDomain)) {\r\n return failure;\r\n }\r\n\r\n const ipv4Host = parseIPv4(asciiDomain);\r\n if (typeof ipv4Host === \"number\" || ipv4Host === failure) {\r\n return ipv4Host;\r\n }\r\n\r\n return asciiDomain;\r\n}\r\n\r\nfunction parseOpaqueHost(input) {\r\n if (containsForbiddenHostCodePointExcludingPercent(input)) {\r\n return failure;\r\n }\r\n\r\n let output = \"\";\r\n const decoded = punycode.ucs2.decode(input);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n output += percentEncodeChar(decoded[i], isC0ControlPercentEncode);\r\n }\r\n return output;\r\n}\r\n\r\nfunction findLongestZeroSequence(arr) {\r\n let maxIdx = null;\r\n let maxLen = 1; // only find elements > 1\r\n let currStart = null;\r\n let currLen = 0;\r\n\r\n for (let i = 0; i < arr.length; ++i) {\r\n if (arr[i] !== 0) {\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n currStart = null;\r\n currLen = 0;\r\n } else {\r\n if (currStart === null) {\r\n currStart = i;\r\n }\r\n ++currLen;\r\n }\r\n }\r\n\r\n // if trailing zeros\r\n if (currLen > maxLen) {\r\n maxIdx = currStart;\r\n maxLen = currLen;\r\n }\r\n\r\n return {\r\n idx: maxIdx,\r\n len: maxLen\r\n };\r\n}\r\n\r\nfunction serializeHost(host) {\r\n if (typeof host === \"number\") {\r\n return serializeIPv4(host);\r\n }\r\n\r\n // IPv6 serializer\r\n if (host instanceof Array) {\r\n return \"[\" + serializeIPv6(host) + \"]\";\r\n }\r\n\r\n return host;\r\n}\r\n\r\nfunction trimControlChars(url) {\r\n return url.replace(/^[\\u0000-\\u001F\\u0020]+|[\\u0000-\\u001F\\u0020]+$/g, \"\");\r\n}\r\n\r\nfunction trimTabAndNewline(url) {\r\n return url.replace(/\\u0009|\\u000A|\\u000D/g, \"\");\r\n}\r\n\r\nfunction shortenPath(url) {\r\n const path = url.path;\r\n if (path.length === 0) {\r\n return;\r\n }\r\n if (url.scheme === \"file\" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) {\r\n return;\r\n }\r\n\r\n path.pop();\r\n}\r\n\r\nfunction includesCredentials(url) {\r\n return url.username !== \"\" || url.password !== \"\";\r\n}\r\n\r\nfunction cannotHaveAUsernamePasswordPort(url) {\r\n return url.host === null || url.host === \"\" || url.cannotBeABaseURL || url.scheme === \"file\";\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetter(string) {\r\n return /^[A-Za-z]:$/.test(string);\r\n}\r\n\r\nfunction URLStateMachine(input, base, encodingOverride, url, stateOverride) {\r\n this.pointer = 0;\r\n this.input = input;\r\n this.base = base || null;\r\n this.encodingOverride = encodingOverride || \"utf-8\";\r\n this.stateOverride = stateOverride;\r\n this.url = url;\r\n this.failure = false;\r\n this.parseError = false;\r\n\r\n if (!this.url) {\r\n this.url = {\r\n scheme: \"\",\r\n username: \"\",\r\n password: \"\",\r\n host: null,\r\n port: null,\r\n path: [],\r\n query: null,\r\n fragment: null,\r\n\r\n cannotBeABaseURL: false\r\n };\r\n\r\n const res = trimControlChars(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n }\r\n\r\n const res = trimTabAndNewline(this.input);\r\n if (res !== this.input) {\r\n this.parseError = true;\r\n }\r\n this.input = res;\r\n\r\n this.state = stateOverride || \"scheme start\";\r\n\r\n this.buffer = \"\";\r\n this.atFlag = false;\r\n this.arrFlag = false;\r\n this.passwordTokenSeenFlag = false;\r\n\r\n this.input = punycode.ucs2.decode(this.input);\r\n\r\n for (; this.pointer <= this.input.length; ++this.pointer) {\r\n const c = this.input[this.pointer];\r\n const cStr = isNaN(c) ? undefined : String.fromCodePoint(c);\r\n\r\n // exec state machine\r\n const ret = this[\"parse \" + this.state](c, cStr);\r\n if (!ret) {\r\n break; // terminate algorithm\r\n } else if (ret === failure) {\r\n this.failure = true;\r\n break;\r\n }\r\n }\r\n}\r\n\r\nURLStateMachine.prototype[\"parse scheme start\"] = function parseSchemeStart(c, cStr) {\r\n if (isASCIIAlpha(c)) {\r\n this.buffer += cStr.toLowerCase();\r\n this.state = \"scheme\";\r\n } else if (!this.stateOverride) {\r\n this.state = \"no scheme\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse scheme\"] = function parseScheme(c, cStr) {\r\n if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) {\r\n this.buffer += cStr.toLowerCase();\r\n } else if (c === 58) {\r\n if (this.stateOverride) {\r\n if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) {\r\n return false;\r\n }\r\n\r\n if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === \"file\") {\r\n return false;\r\n }\r\n\r\n if (this.url.scheme === \"file\" && (this.url.host === \"\" || this.url.host === null)) {\r\n return false;\r\n }\r\n }\r\n this.url.scheme = this.buffer;\r\n this.buffer = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n if (this.url.scheme === \"file\") {\r\n if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file\";\r\n } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) {\r\n this.state = \"special relative or authority\";\r\n } else if (isSpecial(this.url)) {\r\n this.state = \"special authority slashes\";\r\n } else if (this.input[this.pointer + 1] === 47) {\r\n this.state = \"path or authority\";\r\n ++this.pointer;\r\n } else {\r\n this.url.cannotBeABaseURL = true;\r\n this.url.path.push(\"\");\r\n this.state = \"cannot-be-a-base-URL path\";\r\n }\r\n } else if (!this.stateOverride) {\r\n this.buffer = \"\";\r\n this.state = \"no scheme\";\r\n this.pointer = -1;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse no scheme\"] = function parseNoScheme(c) {\r\n if (this.base === null || (this.base.cannotBeABaseURL && c !== 35)) {\r\n return failure;\r\n } else if (this.base.cannotBeABaseURL && c === 35) {\r\n this.url.scheme = this.base.scheme;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.url.cannotBeABaseURL = true;\r\n this.state = \"fragment\";\r\n } else if (this.base.scheme === \"file\") {\r\n this.state = \"file\";\r\n --this.pointer;\r\n } else {\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special relative or authority\"] = function parseSpecialRelativeOrAuthority(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"relative\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path or authority\"] = function parsePathOrAuthority(c) {\r\n if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative\"] = function parseRelative(c) {\r\n this.url.scheme = this.base.scheme;\r\n if (isNaN(c)) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 47) {\r\n this.state = \"relative slash\";\r\n } else if (c === 63) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n this.state = \"relative slash\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.url.path = this.base.path.slice(0, this.base.path.length - 1);\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative slash\"] = function parseRelativeSlash(c) {\r\n if (isSpecial(this.url) && (c === 47 || c === 92)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"special authority ignore slashes\";\r\n } else if (c === 47) {\r\n this.state = \"authority\";\r\n } else {\r\n this.url.username = this.base.username;\r\n this.url.password = this.base.password;\r\n this.url.host = this.base.host;\r\n this.url.port = this.base.port;\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority slashes\"] = function parseSpecialAuthoritySlashes(c) {\r\n if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n this.state = \"special authority ignore slashes\";\r\n ++this.pointer;\r\n } else {\r\n this.parseError = true;\r\n this.state = \"special authority ignore slashes\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority ignore slashes\"] = function parseSpecialAuthorityIgnoreSlashes(c) {\r\n if (c !== 47 && c !== 92) {\r\n this.state = \"authority\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse authority\"] = function parseAuthority(c, cStr) {\r\n if (c === 64) {\r\n this.parseError = true;\r\n if (this.atFlag) {\r\n this.buffer = \"%40\" + this.buffer;\r\n }\r\n this.atFlag = true;\r\n\r\n // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars\r\n const len = countSymbols(this.buffer);\r\n for (let pointer = 0; pointer < len; ++pointer) {\r\n const codePoint = this.buffer.codePointAt(pointer);\r\n\r\n if (codePoint === 58 && !this.passwordTokenSeenFlag) {\r\n this.passwordTokenSeenFlag = true;\r\n continue;\r\n }\r\n const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode);\r\n if (this.passwordTokenSeenFlag) {\r\n this.url.password += encodedCodePoints;\r\n } else {\r\n this.url.username += encodedCodePoints;\r\n }\r\n }\r\n this.buffer = \"\";\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n if (this.atFlag && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.pointer -= countSymbols(this.buffer) + 1;\r\n this.buffer = \"\";\r\n this.state = \"host\";\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse hostname\"] =\r\nURLStateMachine.prototype[\"parse host\"] = function parseHostName(c, cStr) {\r\n if (this.stateOverride && this.url.scheme === \"file\") {\r\n --this.pointer;\r\n this.state = \"file host\";\r\n } else if (c === 58 && !this.arrFlag) {\r\n if (this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"port\";\r\n if (this.stateOverride === \"hostname\") {\r\n return false;\r\n }\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92)) {\r\n --this.pointer;\r\n if (isSpecial(this.url) && this.buffer === \"\") {\r\n this.parseError = true;\r\n return failure;\r\n } else if (this.stateOverride && this.buffer === \"\" &&\r\n (includesCredentials(this.url) || this.url.port !== null)) {\r\n this.parseError = true;\r\n return false;\r\n }\r\n\r\n const host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n\r\n this.url.host = host;\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n } else {\r\n if (c === 91) {\r\n this.arrFlag = true;\r\n } else if (c === 93) {\r\n this.arrFlag = false;\r\n }\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse port\"] = function parsePort(c, cStr) {\r\n if (isASCIIDigit(c)) {\r\n this.buffer += cStr;\r\n } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n (isSpecial(this.url) && c === 92) ||\r\n this.stateOverride) {\r\n if (this.buffer !== \"\") {\r\n const port = parseInt(this.buffer);\r\n if (port > Math.pow(2, 16) - 1) {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n this.url.port = port === defaultPort(this.url.scheme) ? null : port;\r\n this.buffer = \"\";\r\n }\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n --this.pointer;\r\n } else {\r\n this.parseError = true;\r\n return failure;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nconst fileOtherwiseCodePoints = new Set([47, 92, 63, 35]);\r\n\r\nURLStateMachine.prototype[\"parse file\"] = function parseFile(c) {\r\n this.url.scheme = \"file\";\r\n\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file slash\";\r\n } else if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNaN(c)) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n } else if (c === 63) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n this.url.query = this.base.query;\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n if (this.input.length - this.pointer - 1 === 0 || // remaining consists of 0 code points\r\n !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) ||\r\n (this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points\r\n !fileOtherwiseCodePoints.has(this.input[this.pointer + 2]))) {\r\n this.url.host = this.base.host;\r\n this.url.path = this.base.path.slice();\r\n shortenPath(this.url);\r\n } else {\r\n this.parseError = true;\r\n }\r\n\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n } else {\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file slash\"] = function parseFileSlash(c) {\r\n if (c === 47 || c === 92) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"file host\";\r\n } else {\r\n if (this.base !== null && this.base.scheme === \"file\") {\r\n if (isNormalizedWindowsDriveLetterString(this.base.path[0])) {\r\n this.url.path.push(this.base.path[0]);\r\n } else {\r\n this.url.host = this.base.host;\r\n }\r\n }\r\n this.state = \"path\";\r\n --this.pointer;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file host\"] = function parseFileHost(c, cStr) {\r\n if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) {\r\n --this.pointer;\r\n if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) {\r\n this.parseError = true;\r\n this.state = \"path\";\r\n } else if (this.buffer === \"\") {\r\n this.url.host = \"\";\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n this.state = \"path start\";\r\n } else {\r\n let host = parseHost(this.buffer, isSpecial(this.url));\r\n if (host === failure) {\r\n return failure;\r\n }\r\n if (host === \"localhost\") {\r\n host = \"\";\r\n }\r\n this.url.host = host;\r\n\r\n if (this.stateOverride) {\r\n return false;\r\n }\r\n\r\n this.buffer = \"\";\r\n this.state = \"path start\";\r\n }\r\n } else {\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path start\"] = function parsePathStart(c) {\r\n if (isSpecial(this.url)) {\r\n if (c === 92) {\r\n this.parseError = true;\r\n }\r\n this.state = \"path\";\r\n\r\n if (c !== 47 && c !== 92) {\r\n --this.pointer;\r\n }\r\n } else if (!this.stateOverride && c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (!this.stateOverride && c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else if (c !== undefined) {\r\n this.state = \"path\";\r\n if (c !== 47) {\r\n --this.pointer;\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path\"] = function parsePath(c) {\r\n if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) ||\r\n (!this.stateOverride && (c === 63 || c === 35))) {\r\n if (isSpecial(this.url) && c === 92) {\r\n this.parseError = true;\r\n }\r\n\r\n if (isDoubleDot(this.buffer)) {\r\n shortenPath(this.url);\r\n if (c !== 47 && !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n }\r\n } else if (isSingleDot(this.buffer) && c !== 47 &&\r\n !(isSpecial(this.url) && c === 92)) {\r\n this.url.path.push(\"\");\r\n } else if (!isSingleDot(this.buffer)) {\r\n if (this.url.scheme === \"file\" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) {\r\n if (this.url.host !== \"\" && this.url.host !== null) {\r\n this.parseError = true;\r\n this.url.host = \"\";\r\n }\r\n this.buffer = this.buffer[0] + \":\";\r\n }\r\n this.url.path.push(this.buffer);\r\n }\r\n this.buffer = \"\";\r\n if (this.url.scheme === \"file\" && (c === undefined || c === 63 || c === 35)) {\r\n while (this.url.path.length > 1 && this.url.path[0] === \"\") {\r\n this.parseError = true;\r\n this.url.path.shift();\r\n }\r\n }\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n }\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += percentEncodeChar(c, isPathPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse cannot-be-a-base-URL path\"] = function parseCannotBeABaseURLPath(c) {\r\n if (c === 63) {\r\n this.url.query = \"\";\r\n this.state = \"query\";\r\n } else if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n } else {\r\n // TODO: Add: not a URL code point\r\n if (!isNaN(c) && c !== 37) {\r\n this.parseError = true;\r\n }\r\n\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n if (!isNaN(c)) {\r\n this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse query\"] = function parseQuery(c, cStr) {\r\n if (isNaN(c) || (!this.stateOverride && c === 35)) {\r\n if (!isSpecial(this.url) || this.url.scheme === \"ws\" || this.url.scheme === \"wss\") {\r\n this.encodingOverride = \"utf-8\";\r\n }\r\n\r\n const buffer = new Buffer(this.buffer); // TODO: Use encoding override instead\r\n for (let i = 0; i < buffer.length; ++i) {\r\n if (buffer[i] < 0x21 || buffer[i] > 0x7E || buffer[i] === 0x22 || buffer[i] === 0x23 ||\r\n buffer[i] === 0x3C || buffer[i] === 0x3E) {\r\n this.url.query += percentEncode(buffer[i]);\r\n } else {\r\n this.url.query += String.fromCodePoint(buffer[i]);\r\n }\r\n }\r\n\r\n this.buffer = \"\";\r\n if (c === 35) {\r\n this.url.fragment = \"\";\r\n this.state = \"fragment\";\r\n }\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.buffer += cStr;\r\n }\r\n\r\n return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse fragment\"] = function parseFragment(c) {\r\n if (isNaN(c)) { // do nothing\r\n } else if (c === 0x0) {\r\n this.parseError = true;\r\n } else {\r\n // TODO: If c is not a URL code point and not \"%\", parse error.\r\n if (c === 37 &&\r\n (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n !isASCIIHex(this.input[this.pointer + 2]))) {\r\n this.parseError = true;\r\n }\r\n\r\n this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nfunction serializeURL(url, excludeFragment) {\r\n let output = url.scheme + \":\";\r\n if (url.host !== null) {\r\n output += \"//\";\r\n\r\n if (url.username !== \"\" || url.password !== \"\") {\r\n output += url.username;\r\n if (url.password !== \"\") {\r\n output += \":\" + url.password;\r\n }\r\n output += \"@\";\r\n }\r\n\r\n output += serializeHost(url.host);\r\n\r\n if (url.port !== null) {\r\n output += \":\" + url.port;\r\n }\r\n } else if (url.host === null && url.scheme === \"file\") {\r\n output += \"//\";\r\n }\r\n\r\n if (url.cannotBeABaseURL) {\r\n output += url.path[0];\r\n } else {\r\n for (const string of url.path) {\r\n output += \"/\" + string;\r\n }\r\n }\r\n\r\n if (url.query !== null) {\r\n output += \"?\" + url.query;\r\n }\r\n\r\n if (!excludeFragment && url.fragment !== null) {\r\n output += \"#\" + url.fragment;\r\n }\r\n\r\n return output;\r\n}\r\n\r\nfunction serializeOrigin(tuple) {\r\n let result = tuple.scheme + \"://\";\r\n result += serializeHost(tuple.host);\r\n\r\n if (tuple.port !== null) {\r\n result += \":\" + tuple.port;\r\n }\r\n\r\n return result;\r\n}\r\n\r\nmodule.exports.serializeURL = serializeURL;\r\n\r\nmodule.exports.serializeURLOrigin = function (url) {\r\n // https://url.spec.whatwg.org/#concept-url-origin\r\n switch (url.scheme) {\r\n case \"blob\":\r\n try {\r\n return module.exports.serializeURLOrigin(module.exports.parseURL(url.path[0]));\r\n } catch (e) {\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n case \"ftp\":\r\n case \"gopher\":\r\n case \"http\":\r\n case \"https\":\r\n case \"ws\":\r\n case \"wss\":\r\n return serializeOrigin({\r\n scheme: url.scheme,\r\n host: url.host,\r\n port: url.port\r\n });\r\n case \"file\":\r\n // spec says \"exercise to the reader\", chrome says \"file://\"\r\n return \"file://\";\r\n default:\r\n // serializing an opaque origin returns \"null\"\r\n return \"null\";\r\n }\r\n};\r\n\r\nmodule.exports.basicURLParse = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride);\r\n if (usm.failure) {\r\n return \"failure\";\r\n }\r\n\r\n return usm.url;\r\n};\r\n\r\nmodule.exports.setTheUsername = function (url, username) {\r\n url.username = \"\";\r\n const decoded = punycode.ucs2.decode(username);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.setThePassword = function (url, password) {\r\n url.password = \"\";\r\n const decoded = punycode.ucs2.decode(password);\r\n for (let i = 0; i < decoded.length; ++i) {\r\n url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n }\r\n};\r\n\r\nmodule.exports.serializeHost = serializeHost;\r\n\r\nmodule.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort;\r\n\r\nmodule.exports.serializeInteger = function (integer) {\r\n return String(integer);\r\n};\r\n\r\nmodule.exports.parseURL = function (input, options) {\r\n if (options === undefined) {\r\n options = {};\r\n }\r\n\r\n // We don't handle blobs, so this just delegates:\r\n return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride });\r\n};\r\n","\"use strict\";\nconst usm = require(\"./url-state-machine\");\n\nexports.implementation = class URLImpl {\n constructor(constructorArgs) {\n const url = constructorArgs[0];\n const base = constructorArgs[1];\n\n let parsedBase = null;\n if (base !== undefined) {\n parsedBase = usm.basicURLParse(base);\n if (parsedBase === \"failure\") {\n throw new TypeError(\"Invalid base URL\");\n }\n }\n\n const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase });\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n\n // TODO: query stuff\n }\n\n get href() {\n return usm.serializeURL(this._url);\n }\n\n set href(v) {\n const parsedURL = usm.basicURLParse(v);\n if (parsedURL === \"failure\") {\n throw new TypeError(\"Invalid URL\");\n }\n\n this._url = parsedURL;\n }\n\n get origin() {\n return usm.serializeURLOrigin(this._url);\n }\n\n get protocol() {\n return this._url.scheme + \":\";\n }\n\n set protocol(v) {\n usm.basicURLParse(v + \":\", { url: this._url, stateOverride: \"scheme start\" });\n }\n\n get username() {\n return this._url.username;\n }\n\n set username(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setTheUsername(this._url, v);\n }\n\n get password() {\n return this._url.password;\n }\n\n set password(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n usm.setThePassword(this._url, v);\n }\n\n get host() {\n const url = this._url;\n\n if (url.host === null) {\n return \"\";\n }\n\n if (url.port === null) {\n return usm.serializeHost(url.host);\n }\n\n return usm.serializeHost(url.host) + \":\" + usm.serializeInteger(url.port);\n }\n\n set host(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"host\" });\n }\n\n get hostname() {\n if (this._url.host === null) {\n return \"\";\n }\n\n return usm.serializeHost(this._url.host);\n }\n\n set hostname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n usm.basicURLParse(v, { url: this._url, stateOverride: \"hostname\" });\n }\n\n get port() {\n if (this._url.port === null) {\n return \"\";\n }\n\n return usm.serializeInteger(this._url.port);\n }\n\n set port(v) {\n if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n return;\n }\n\n if (v === \"\") {\n this._url.port = null;\n } else {\n usm.basicURLParse(v, { url: this._url, stateOverride: \"port\" });\n }\n }\n\n get pathname() {\n if (this._url.cannotBeABaseURL) {\n return this._url.path[0];\n }\n\n if (this._url.path.length === 0) {\n return \"\";\n }\n\n return \"/\" + this._url.path.join(\"/\");\n }\n\n set pathname(v) {\n if (this._url.cannotBeABaseURL) {\n return;\n }\n\n this._url.path = [];\n usm.basicURLParse(v, { url: this._url, stateOverride: \"path start\" });\n }\n\n get search() {\n if (this._url.query === null || this._url.query === \"\") {\n return \"\";\n }\n\n return \"?\" + this._url.query;\n }\n\n set search(v) {\n // TODO: query stuff\n\n const url = this._url;\n\n if (v === \"\") {\n url.query = null;\n return;\n }\n\n const input = v[0] === \"?\" ? v.substring(1) : v;\n url.query = \"\";\n usm.basicURLParse(input, { url, stateOverride: \"query\" });\n }\n\n get hash() {\n if (this._url.fragment === null || this._url.fragment === \"\") {\n return \"\";\n }\n\n return \"#\" + this._url.fragment;\n }\n\n set hash(v) {\n if (v === \"\") {\n this._url.fragment = null;\n return;\n }\n\n const input = v[0] === \"#\" ? v.substring(1) : v;\n this._url.fragment = \"\";\n usm.basicURLParse(input, { url: this._url, stateOverride: \"fragment\" });\n }\n\n toJSON() {\n return this.href;\n }\n};\n","\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\nconst Impl = require(\".//URL-impl.js\");\n\nconst impl = utils.implSymbol;\n\nfunction URL(url) {\n if (!this || this[impl] || !(this instanceof URL)) {\n throw new TypeError(\"Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.\");\n }\n if (arguments.length < 1) {\n throw new TypeError(\"Failed to construct 'URL': 1 argument required, but only \" + arguments.length + \" present.\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 2; ++i) {\n args[i] = arguments[i];\n }\n args[0] = conversions[\"USVString\"](args[0]);\n if (args[1] !== undefined) {\n args[1] = conversions[\"USVString\"](args[1]);\n }\n\n module.exports.setup(this, args);\n}\n\nURL.prototype.toJSON = function toJSON() {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n const args = [];\n for (let i = 0; i < arguments.length && i < 0; ++i) {\n args[i] = arguments[i];\n }\n return this[impl].toJSON.apply(this[impl], args);\n};\nObject.defineProperty(URL.prototype, \"href\", {\n get() {\n return this[impl].href;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].href = V;\n },\n enumerable: true,\n configurable: true\n});\n\nURL.prototype.toString = function () {\n if (!this || !module.exports.is(this)) {\n throw new TypeError(\"Illegal invocation\");\n }\n return this.href;\n};\n\nObject.defineProperty(URL.prototype, \"origin\", {\n get() {\n return this[impl].origin;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"protocol\", {\n get() {\n return this[impl].protocol;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].protocol = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"username\", {\n get() {\n return this[impl].username;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].username = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"password\", {\n get() {\n return this[impl].password;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].password = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"host\", {\n get() {\n return this[impl].host;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].host = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hostname\", {\n get() {\n return this[impl].hostname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hostname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"port\", {\n get() {\n return this[impl].port;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].port = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"pathname\", {\n get() {\n return this[impl].pathname;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].pathname = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"search\", {\n get() {\n return this[impl].search;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].search = V;\n },\n enumerable: true,\n configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hash\", {\n get() {\n return this[impl].hash;\n },\n set(V) {\n V = conversions[\"USVString\"](V);\n this[impl].hash = V;\n },\n enumerable: true,\n configurable: true\n});\n\n\nmodule.exports = {\n is(obj) {\n return !!obj && obj[impl] instanceof Impl.implementation;\n },\n create(constructorArgs, privateData) {\n let obj = Object.create(URL.prototype);\n this.setup(obj, constructorArgs, privateData);\n return obj;\n },\n setup(obj, constructorArgs, privateData) {\n if (!privateData) privateData = {};\n privateData.wrapper = obj;\n\n obj[impl] = new Impl.implementation(constructorArgs, privateData);\n obj[impl][utils.wrapperSymbol] = obj;\n },\n interface: URL,\n expose: {\n Window: { URL: URL },\n Worker: { URL: URL }\n }\n};\n\n","\"use strict\";\n\nexports.URL = require(\"./URL\").interface;\nexports.serializeURL = require(\"./url-state-machine\").serializeURL;\nexports.serializeURLOrigin = require(\"./url-state-machine\").serializeURLOrigin;\nexports.basicURLParse = require(\"./url-state-machine\").basicURLParse;\nexports.setTheUsername = require(\"./url-state-machine\").setTheUsername;\nexports.setThePassword = require(\"./url-state-machine\").setThePassword;\nexports.serializeHost = require(\"./url-state-machine\").serializeHost;\nexports.serializeInteger = require(\"./url-state-machine\").serializeInteger;\nexports.parseURL = require(\"./url-state-machine\").parseURL;\n","import Stream from 'stream';\nimport http from 'http';\nimport Url from 'url';\nimport whatwgUrl from 'whatwg-url';\nimport https from 'https';\nimport zlib from 'zlib';\n\n// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js\n\n// fix for \"Readable\" isn't a named export issue\nconst Readable = Stream.Readable;\n\nconst BUFFER = Symbol('buffer');\nconst TYPE = Symbol('type');\n\nclass Blob {\n\tconstructor() {\n\t\tthis[TYPE] = '';\n\n\t\tconst blobParts = arguments[0];\n\t\tconst options = arguments[1];\n\n\t\tconst buffers = [];\n\t\tlet size = 0;\n\n\t\tif (blobParts) {\n\t\t\tconst a = blobParts;\n\t\t\tconst length = Number(a.length);\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tconst element = a[i];\n\t\t\t\tlet buffer;\n\t\t\t\tif (element instanceof Buffer) {\n\t\t\t\t\tbuffer = element;\n\t\t\t\t} else if (ArrayBuffer.isView(element)) {\n\t\t\t\t\tbuffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);\n\t\t\t\t} else if (element instanceof ArrayBuffer) {\n\t\t\t\t\tbuffer = Buffer.from(element);\n\t\t\t\t} else if (element instanceof Blob) {\n\t\t\t\t\tbuffer = element[BUFFER];\n\t\t\t\t} else {\n\t\t\t\t\tbuffer = Buffer.from(typeof element === 'string' ? element : String(element));\n\t\t\t\t}\n\t\t\t\tsize += buffer.length;\n\t\t\t\tbuffers.push(buffer);\n\t\t\t}\n\t\t}\n\n\t\tthis[BUFFER] = Buffer.concat(buffers);\n\n\t\tlet type = options && options.type !== undefined && String(options.type).toLowerCase();\n\t\tif (type && !/[^\\u0020-\\u007E]/.test(type)) {\n\t\t\tthis[TYPE] = type;\n\t\t}\n\t}\n\tget size() {\n\t\treturn this[BUFFER].length;\n\t}\n\tget type() {\n\t\treturn this[TYPE];\n\t}\n\ttext() {\n\t\treturn Promise.resolve(this[BUFFER].toString());\n\t}\n\tarrayBuffer() {\n\t\tconst buf = this[BUFFER];\n\t\tconst ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\treturn Promise.resolve(ab);\n\t}\n\tstream() {\n\t\tconst readable = new Readable();\n\t\treadable._read = function () {};\n\t\treadable.push(this[BUFFER]);\n\t\treadable.push(null);\n\t\treturn readable;\n\t}\n\ttoString() {\n\t\treturn '[object Blob]';\n\t}\n\tslice() {\n\t\tconst size = this.size;\n\n\t\tconst start = arguments[0];\n\t\tconst end = arguments[1];\n\t\tlet relativeStart, relativeEnd;\n\t\tif (start === undefined) {\n\t\t\trelativeStart = 0;\n\t\t} else if (start < 0) {\n\t\t\trelativeStart = Math.max(size + start, 0);\n\t\t} else {\n\t\t\trelativeStart = Math.min(start, size);\n\t\t}\n\t\tif (end === undefined) {\n\t\t\trelativeEnd = size;\n\t\t} else if (end < 0) {\n\t\t\trelativeEnd = Math.max(size + end, 0);\n\t\t} else {\n\t\t\trelativeEnd = Math.min(end, size);\n\t\t}\n\t\tconst span = Math.max(relativeEnd - relativeStart, 0);\n\n\t\tconst buffer = this[BUFFER];\n\t\tconst slicedBuffer = buffer.slice(relativeStart, relativeStart + span);\n\t\tconst blob = new Blob([], { type: arguments[2] });\n\t\tblob[BUFFER] = slicedBuffer;\n\t\treturn blob;\n\t}\n}\n\nObject.defineProperties(Blob.prototype, {\n\tsize: { enumerable: true },\n\ttype: { enumerable: true },\n\tslice: { enumerable: true }\n});\n\nObject.defineProperty(Blob.prototype, Symbol.toStringTag, {\n\tvalue: 'Blob',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * fetch-error.js\n *\n * FetchError interface for operational errors\n */\n\n/**\n * Create FetchError instance\n *\n * @param String message Error message for human\n * @param String type Error type for machine\n * @param String systemError For Node.js system error\n * @return FetchError\n */\nfunction FetchError(message, type, systemError) {\n Error.call(this, message);\n\n this.message = message;\n this.type = type;\n\n // when err.type is `system`, err.code contains system error code\n if (systemError) {\n this.code = this.errno = systemError.code;\n }\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nFetchError.prototype = Object.create(Error.prototype);\nFetchError.prototype.constructor = FetchError;\nFetchError.prototype.name = 'FetchError';\n\nlet convert;\ntry {\n\tconvert = require('encoding').convert;\n} catch (e) {}\n\nconst INTERNALS = Symbol('Body internals');\n\n// fix an issue where \"PassThrough\" isn't a named export for node <10\nconst PassThrough = Stream.PassThrough;\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nfunction Body(body) {\n\tvar _this = this;\n\n\tvar _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n\t _ref$size = _ref.size;\n\n\tlet size = _ref$size === undefined ? 0 : _ref$size;\n\tvar _ref$timeout = _ref.timeout;\n\tlet timeout = _ref$timeout === undefined ? 0 : _ref$timeout;\n\n\tif (body == null) {\n\t\t// body is undefined or null\n\t\tbody = null;\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\tbody = Buffer.from(body.toString());\n\t} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\tbody = Buffer.from(body);\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t} else if (body instanceof Stream) ; else {\n\t\t// none of the above\n\t\t// coerce to string then buffer\n\t\tbody = Buffer.from(String(body));\n\t}\n\tthis[INTERNALS] = {\n\t\tbody,\n\t\tdisturbed: false,\n\t\terror: null\n\t};\n\tthis.size = size;\n\tthis.timeout = timeout;\n\n\tif (body instanceof Stream) {\n\t\tbody.on('error', function (err) {\n\t\t\tconst error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);\n\t\t\t_this[INTERNALS].error = error;\n\t\t});\n\t}\n}\n\nBody.prototype = {\n\tget body() {\n\t\treturn this[INTERNALS].body;\n\t},\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t},\n\n\t/**\n * Decode response as ArrayBuffer\n *\n * @return Promise\n */\n\tarrayBuffer() {\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\t});\n\t},\n\n\t/**\n * Return raw response as Blob\n *\n * @return Promise\n */\n\tblob() {\n\t\tlet ct = this.headers && this.headers.get('content-type') || '';\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn Object.assign(\n\t\t\t// Prevent copying\n\t\t\tnew Blob([], {\n\t\t\t\ttype: ct.toLowerCase()\n\t\t\t}), {\n\t\t\t\t[BUFFER]: buf\n\t\t\t});\n\t\t});\n\t},\n\n\t/**\n * Decode response as json\n *\n * @return Promise\n */\n\tjson() {\n\t\tvar _this2 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(buffer.toString());\n\t\t\t} catch (err) {\n\t\t\t\treturn Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n * Decode response as text\n *\n * @return Promise\n */\n\ttext() {\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn buffer.toString();\n\t\t});\n\t},\n\n\t/**\n * Decode response as buffer (non-spec api)\n *\n * @return Promise\n */\n\tbuffer() {\n\t\treturn consumeBody.call(this);\n\t},\n\n\t/**\n * Decode response as text, while automatically detecting the encoding and\n * trying to decode to UTF-8 (non-spec api)\n *\n * @return Promise\n */\n\ttextConverted() {\n\t\tvar _this3 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn convertBody(buffer, _this3.headers);\n\t\t});\n\t}\n};\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: { enumerable: true },\n\tbodyUsed: { enumerable: true },\n\tarrayBuffer: { enumerable: true },\n\tblob: { enumerable: true },\n\tjson: { enumerable: true },\n\ttext: { enumerable: true }\n});\n\nBody.mixIn = function (proto) {\n\tfor (const name of Object.getOwnPropertyNames(Body.prototype)) {\n\t\t// istanbul ignore else: future proof\n\t\tif (!(name in proto)) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(Body.prototype, name);\n\t\t\tObject.defineProperty(proto, name, desc);\n\t\t}\n\t}\n};\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return Promise\n */\nfunction consumeBody() {\n\tvar _this4 = this;\n\n\tif (this[INTERNALS].disturbed) {\n\t\treturn Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));\n\t}\n\n\tthis[INTERNALS].disturbed = true;\n\n\tif (this[INTERNALS].error) {\n\t\treturn Body.Promise.reject(this[INTERNALS].error);\n\t}\n\n\tlet body = this.body;\n\n\t// body is null\n\tif (body === null) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is blob\n\tif (isBlob(body)) {\n\t\tbody = body.stream();\n\t}\n\n\t// body is buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn Body.Promise.resolve(body);\n\t}\n\n\t// istanbul ignore if: should never happen\n\tif (!(body instanceof Stream)) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is stream\n\t// get ready to actually consume the body\n\tlet accum = [];\n\tlet accumBytes = 0;\n\tlet abort = false;\n\n\treturn new Body.Promise(function (resolve, reject) {\n\t\tlet resTimeout;\n\n\t\t// allow timeout on slow response body\n\t\tif (_this4.timeout) {\n\t\t\tresTimeout = setTimeout(function () {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));\n\t\t\t}, _this4.timeout);\n\t\t}\n\n\t\t// handle stream errors\n\t\tbody.on('error', function (err) {\n\t\t\tif (err.name === 'AbortError') {\n\t\t\t\t// if the request was aborted, reject with this Error\n\t\t\t\tabort = true;\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\t// other errors, such as incorrect content-encoding\n\t\t\t\treject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\n\t\tbody.on('data', function (chunk) {\n\t\t\tif (abort || chunk === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_this4.size && accumBytes + chunk.length > _this4.size) {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t});\n\n\t\tbody.on('end', function () {\n\t\t\tif (abort) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tclearTimeout(resTimeout);\n\n\t\t\ttry {\n\t\t\t\tresolve(Buffer.concat(accum, accumBytes));\n\t\t\t} catch (err) {\n\t\t\t\t// handle streams that have accumulated too much data (issue #414)\n\t\t\t\treject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect buffer encoding and convert to target encoding\n * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding\n *\n * @param Buffer buffer Incoming buffer\n * @param String encoding Target encoding\n * @return String\n */\nfunction convertBody(buffer, headers) {\n\tif (typeof convert !== 'function') {\n\t\tthrow new Error('The package `encoding` must be installed to use the textConverted() function');\n\t}\n\n\tconst ct = headers.get('content-type');\n\tlet charset = 'utf-8';\n\tlet res, str;\n\n\t// header\n\tif (ct) {\n\t\tres = /charset=([^;]*)/i.exec(ct);\n\t}\n\n\t// no charset in content type, peek at response body for at most 1024 bytes\n\tstr = buffer.slice(0, 1024).toString();\n\n\t// html5\n\tif (!res && str) {\n\t\tres = /<meta.+?charset=(['\"])(.+?)\\1/i.exec(str);\n\t}\n\n\t// html4\n\tif (!res && str) {\n\t\tres = /<meta[\\s]+?http-equiv=(['\"])content-type\\1[\\s]+?content=(['\"])(.+?)\\2/i.exec(str);\n\t\tif (!res) {\n\t\t\tres = /<meta[\\s]+?content=(['\"])(.+?)\\1[\\s]+?http-equiv=(['\"])content-type\\3/i.exec(str);\n\t\t\tif (res) {\n\t\t\t\tres.pop(); // drop last quote\n\t\t\t}\n\t\t}\n\n\t\tif (res) {\n\t\t\tres = /charset=(.*)/i.exec(res.pop());\n\t\t}\n\t}\n\n\t// xml\n\tif (!res && str) {\n\t\tres = /<\\?xml.+?encoding=(['\"])(.+?)\\1/i.exec(str);\n\t}\n\n\t// found charset\n\tif (res) {\n\t\tcharset = res.pop();\n\n\t\t// prevent decode issues when sites use incorrect encoding\n\t\t// ref: https://hsivonen.fi/encoding-menu/\n\t\tif (charset === 'gb2312' || charset === 'gbk') {\n\t\t\tcharset = 'gb18030';\n\t\t}\n\t}\n\n\t// turn raw buffers into a single utf-8 buffer\n\treturn convert(buffer, 'UTF-8', charset).toString();\n}\n\n/**\n * Detect a URLSearchParams object\n * ref: https://github.com/bitinn/node-fetch/issues/296#issuecomment-307598143\n *\n * @param Object obj Object to detect by type or brand\n * @return String\n */\nfunction isURLSearchParams(obj) {\n\t// Duck-typing as a necessary condition.\n\tif (typeof obj !== 'object' || typeof obj.append !== 'function' || typeof obj.delete !== 'function' || typeof obj.get !== 'function' || typeof obj.getAll !== 'function' || typeof obj.has !== 'function' || typeof obj.set !== 'function') {\n\t\treturn false;\n\t}\n\n\t// Brand-checking and more duck-typing as optional condition.\n\treturn obj.constructor.name === 'URLSearchParams' || Object.prototype.toString.call(obj) === '[object URLSearchParams]' || typeof obj.sort === 'function';\n}\n\n/**\n * Check if `obj` is a W3C `Blob` object (which `File` inherits from)\n * @param {*} obj\n * @return {boolean}\n */\nfunction isBlob(obj) {\n\treturn typeof obj === 'object' && typeof obj.arrayBuffer === 'function' && typeof obj.type === 'string' && typeof obj.stream === 'function' && typeof obj.constructor === 'function' && typeof obj.constructor.name === 'string' && /^(Blob|File)$/.test(obj.constructor.name) && /^(Blob|File)$/.test(obj[Symbol.toStringTag]);\n}\n\n/**\n * Clone body given Res/Req instance\n *\n * @param Mixed instance Response or Request instance\n * @return Mixed\n */\nfunction clone(instance) {\n\tlet p1, p2;\n\tlet body = instance.body;\n\n\t// don't allow cloning a used body\n\tif (instance.bodyUsed) {\n\t\tthrow new Error('cannot clone body after it is used');\n\t}\n\n\t// check that body is a stream and not form-data object\n\t// note: we can't clone the form-data object without having it as a dependency\n\tif (body instanceof Stream && typeof body.getBoundary !== 'function') {\n\t\t// tee instance body\n\t\tp1 = new PassThrough();\n\t\tp2 = new PassThrough();\n\t\tbody.pipe(p1);\n\t\tbody.pipe(p2);\n\t\t// set instance body to teed body and return the other teed body\n\t\tinstance[INTERNALS].body = p1;\n\t\tbody = p2;\n\t}\n\n\treturn body;\n}\n\n/**\n * Performs the operation \"extract a `Content-Type` value from |object|\" as\n * specified in the specification:\n * https://fetch.spec.whatwg.org/#concept-bodyinit-extract\n *\n * This function assumes that instance.body is present.\n *\n * @param Mixed instance Any options.body input\n */\nfunction extractContentType(body) {\n\tif (body === null) {\n\t\t// body is null\n\t\treturn null;\n\t} else if (typeof body === 'string') {\n\t\t// body is string\n\t\treturn 'text/plain;charset=UTF-8';\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\treturn 'application/x-www-form-urlencoded;charset=UTF-8';\n\t} else if (isBlob(body)) {\n\t\t// body is blob\n\t\treturn body.type || null;\n\t} else if (Buffer.isBuffer(body)) {\n\t\t// body is buffer\n\t\treturn null;\n\t} else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\treturn null;\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\treturn null;\n\t} else if (typeof body.getBoundary === 'function') {\n\t\t// detect form data input from form-data module\n\t\treturn `multipart/form-data;boundary=${body.getBoundary()}`;\n\t} else if (body instanceof Stream) {\n\t\t// body is stream\n\t\t// can't really do much about this\n\t\treturn null;\n\t} else {\n\t\t// Body constructor defaults other things to string\n\t\treturn 'text/plain;charset=UTF-8';\n\t}\n}\n\n/**\n * The Fetch Standard treats this as if \"total bytes\" is a property on the body.\n * For us, we have to explicitly get it with a function.\n *\n * ref: https://fetch.spec.whatwg.org/#concept-body-total-bytes\n *\n * @param Body instance Instance of Body\n * @return Number? Number of bytes, or null if not possible\n */\nfunction getTotalBytes(instance) {\n\tconst body = instance.body;\n\n\n\tif (body === null) {\n\t\t// body is null\n\t\treturn 0;\n\t} else if (isBlob(body)) {\n\t\treturn body.size;\n\t} else if (Buffer.isBuffer(body)) {\n\t\t// body is buffer\n\t\treturn body.length;\n\t} else if (body && typeof body.getLengthSync === 'function') {\n\t\t// detect form data input from form-data module\n\t\tif (body._lengthRetrievers && body._lengthRetrievers.length == 0 || // 1.x\n\t\tbody.hasKnownLength && body.hasKnownLength()) {\n\t\t\t// 2.x\n\t\t\treturn body.getLengthSync();\n\t\t}\n\t\treturn null;\n\t} else {\n\t\t// body is stream\n\t\treturn null;\n\t}\n}\n\n/**\n * Write a Body to a Node.js WritableStream (e.g. http.Request) object.\n *\n * @param Body instance Instance of Body\n * @return Void\n */\nfunction writeToStream(dest, instance) {\n\tconst body = instance.body;\n\n\n\tif (body === null) {\n\t\t// body is null\n\t\tdest.end();\n\t} else if (isBlob(body)) {\n\t\tbody.stream().pipe(dest);\n\t} else if (Buffer.isBuffer(body)) {\n\t\t// body is buffer\n\t\tdest.write(body);\n\t\tdest.end();\n\t} else {\n\t\t// body is stream\n\t\tbody.pipe(dest);\n\t}\n}\n\n// expose Promise\nBody.Promise = global.Promise;\n\n/**\n * headers.js\n *\n * Headers class offers convenient helpers\n */\n\nconst invalidTokenRegex = /[^\\^_`a-zA-Z\\-0-9!#$%&'*+.|~]/;\nconst invalidHeaderCharRegex = /[^\\t\\x20-\\x7e\\x80-\\xff]/;\n\nfunction validateName(name) {\n\tname = `${name}`;\n\tif (invalidTokenRegex.test(name) || name === '') {\n\t\tthrow new TypeError(`${name} is not a legal HTTP header name`);\n\t}\n}\n\nfunction validateValue(value) {\n\tvalue = `${value}`;\n\tif (invalidHeaderCharRegex.test(value)) {\n\t\tthrow new TypeError(`${value} is not a legal HTTP header value`);\n\t}\n}\n\n/**\n * Find the key in the map object given a header name.\n *\n * Returns undefined if not found.\n *\n * @param String name Header name\n * @return String|Undefined\n */\nfunction find(map, name) {\n\tname = name.toLowerCase();\n\tfor (const key in map) {\n\t\tif (key.toLowerCase() === name) {\n\t\t\treturn key;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nconst MAP = Symbol('map');\nclass Headers {\n\t/**\n * Headers class\n *\n * @param Object headers Response headers\n * @return Void\n */\n\tconstructor() {\n\t\tlet init = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n\t\tthis[MAP] = Object.create(null);\n\n\t\tif (init instanceof Headers) {\n\t\t\tconst rawHeaders = init.raw();\n\t\t\tconst headerNames = Object.keys(rawHeaders);\n\n\t\t\tfor (const headerName of headerNames) {\n\t\t\t\tfor (const value of rawHeaders[headerName]) {\n\t\t\t\t\tthis.append(headerName, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// We don't worry about converting prop to ByteString here as append()\n\t\t// will handle it.\n\t\tif (init == null) ; else if (typeof init === 'object') {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\tif (method != null) {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// sequence<sequence<ByteString>>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tconst pairs = [];\n\t\t\t\tfor (const pair of init) {\n\t\t\t\t\tif (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be iterable');\n\t\t\t\t\t}\n\t\t\t\t\tpairs.push(Array.from(pair));\n\t\t\t\t}\n\n\t\t\t\tfor (const pair of pairs) {\n\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t}\n\t\t\t\t\tthis.append(pair[0], pair[1]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// record<ByteString, ByteString>\n\t\t\t\tfor (const key of Object.keys(init)) {\n\t\t\t\t\tconst value = init[key];\n\t\t\t\t\tthis.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Provided initializer must be an object');\n\t\t}\n\t}\n\n\t/**\n * Return combined header value given name\n *\n * @param String name Header name\n * @return Mixed\n */\n\tget(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this[MAP][key].join(', ');\n\t}\n\n\t/**\n * Iterate over all headers\n *\n * @param Function callback Executed for each item with parameters (value, name, thisArg)\n * @param Boolean thisArg `this` context for callback function\n * @return Void\n */\n\tforEach(callback) {\n\t\tlet thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n\t\tlet pairs = getHeaders(this);\n\t\tlet i = 0;\n\t\twhile (i < pairs.length) {\n\t\t\tvar _pairs$i = pairs[i];\n\t\t\tconst name = _pairs$i[0],\n\t\t\t value = _pairs$i[1];\n\n\t\t\tcallback.call(thisArg, value, name, this);\n\t\t\tpairs = getHeaders(this);\n\t\t\ti++;\n\t\t}\n\t}\n\n\t/**\n * Overwrite header values given name\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tset(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tthis[MAP][key !== undefined ? key : name] = [value];\n\t}\n\n\t/**\n * Append a value onto existing header\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tappend(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tthis[MAP][key].push(value);\n\t\t} else {\n\t\t\tthis[MAP][name] = [value];\n\t\t}\n\t}\n\n\t/**\n * Check for header name existence\n *\n * @param String name Header name\n * @return Boolean\n */\n\thas(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\treturn find(this[MAP], name) !== undefined;\n\t}\n\n\t/**\n * Delete all header values given name\n *\n * @param String name Header name\n * @return Void\n */\n\tdelete(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tdelete this[MAP][key];\n\t\t}\n\t}\n\n\t/**\n * Return raw headers (non-spec api)\n *\n * @return Object\n */\n\traw() {\n\t\treturn this[MAP];\n\t}\n\n\t/**\n * Get an iterator on keys.\n *\n * @return Iterator\n */\n\tkeys() {\n\t\treturn createHeadersIterator(this, 'key');\n\t}\n\n\t/**\n * Get an iterator on values.\n *\n * @return Iterator\n */\n\tvalues() {\n\t\treturn createHeadersIterator(this, 'value');\n\t}\n\n\t/**\n * Get an iterator on entries.\n *\n * This is the default iterator of the Headers object.\n *\n * @return Iterator\n */\n\t[Symbol.iterator]() {\n\t\treturn createHeadersIterator(this, 'key+value');\n\t}\n}\nHeaders.prototype.entries = Headers.prototype[Symbol.iterator];\n\nObject.defineProperty(Headers.prototype, Symbol.toStringTag, {\n\tvalue: 'Headers',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Headers.prototype, {\n\tget: { enumerable: true },\n\tforEach: { enumerable: true },\n\tset: { enumerable: true },\n\tappend: { enumerable: true },\n\thas: { enumerable: true },\n\tdelete: { enumerable: true },\n\tkeys: { enumerable: true },\n\tvalues: { enumerable: true },\n\tentries: { enumerable: true }\n});\n\nfunction getHeaders(headers) {\n\tlet kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';\n\n\tconst keys = Object.keys(headers[MAP]).sort();\n\treturn keys.map(kind === 'key' ? function (k) {\n\t\treturn k.toLowerCase();\n\t} : kind === 'value' ? function (k) {\n\t\treturn headers[MAP][k].join(', ');\n\t} : function (k) {\n\t\treturn [k.toLowerCase(), headers[MAP][k].join(', ')];\n\t});\n}\n\nconst INTERNAL = Symbol('internal');\n\nfunction createHeadersIterator(target, kind) {\n\tconst iterator = Object.create(HeadersIteratorPrototype);\n\titerator[INTERNAL] = {\n\t\ttarget,\n\t\tkind,\n\t\tindex: 0\n\t};\n\treturn iterator;\n}\n\nconst HeadersIteratorPrototype = Object.setPrototypeOf({\n\tnext() {\n\t\t// istanbul ignore if\n\t\tif (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {\n\t\t\tthrow new TypeError('Value of `this` is not a HeadersIterator');\n\t\t}\n\n\t\tvar _INTERNAL = this[INTERNAL];\n\t\tconst target = _INTERNAL.target,\n\t\t kind = _INTERNAL.kind,\n\t\t index = _INTERNAL.index;\n\n\t\tconst values = getHeaders(target, kind);\n\t\tconst len = values.length;\n\t\tif (index >= len) {\n\t\t\treturn {\n\t\t\t\tvalue: undefined,\n\t\t\t\tdone: true\n\t\t\t};\n\t\t}\n\n\t\tthis[INTERNAL].index = index + 1;\n\n\t\treturn {\n\t\t\tvalue: values[index],\n\t\t\tdone: false\n\t\t};\n\t}\n}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));\n\nObject.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {\n\tvalue: 'HeadersIterator',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * Export the Headers object in a form that Node.js can consume.\n *\n * @param Headers headers\n * @return Object\n */\nfunction exportNodeCompatibleHeaders(headers) {\n\tconst obj = Object.assign({ __proto__: null }, headers[MAP]);\n\n\t// http.request() only supports string as Host header. This hack makes\n\t// specifying custom Host header possible.\n\tconst hostHeaderKey = find(headers[MAP], 'Host');\n\tif (hostHeaderKey !== undefined) {\n\t\tobj[hostHeaderKey] = obj[hostHeaderKey][0];\n\t}\n\n\treturn obj;\n}\n\n/**\n * Create a Headers object from an object of headers, ignoring those that do\n * not conform to HTTP grammar productions.\n *\n * @param Object obj Object of headers\n * @return Headers\n */\nfunction createHeadersLenient(obj) {\n\tconst headers = new Headers();\n\tfor (const name of Object.keys(obj)) {\n\t\tif (invalidTokenRegex.test(name)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (Array.isArray(obj[name])) {\n\t\t\tfor (const val of obj[name]) {\n\t\t\t\tif (invalidHeaderCharRegex.test(val)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (headers[MAP][name] === undefined) {\n\t\t\t\t\theaders[MAP][name] = [val];\n\t\t\t\t} else {\n\t\t\t\t\theaders[MAP][name].push(val);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (!invalidHeaderCharRegex.test(obj[name])) {\n\t\t\theaders[MAP][name] = [obj[name]];\n\t\t}\n\t}\n\treturn headers;\n}\n\nconst INTERNALS$1 = Symbol('Response internals');\n\n// fix an issue where \"STATUS_CODES\" aren't a named export for node <10\nconst STATUS_CODES = http.STATUS_CODES;\n\n/**\n * Response class\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nclass Response {\n\tconstructor() {\n\t\tlet body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t\tlet opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tBody.call(this, body, opts);\n\n\t\tconst status = opts.status || 200;\n\t\tconst headers = new Headers(opts.headers);\n\n\t\tif (body != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS$1] = {\n\t\t\turl: opts.url,\n\t\t\tstatus,\n\t\t\tstatusText: opts.statusText || STATUS_CODES[status],\n\t\t\theaders,\n\t\t\tcounter: opts.counter\n\t\t};\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS$1].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS$1].status;\n\t}\n\n\t/**\n * Convenience property representing if the request ended normally\n */\n\tget ok() {\n\t\treturn this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS$1].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS$1].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$1].headers;\n\t}\n\n\t/**\n * Clone this response\n *\n * @return Response\n */\n\tclone() {\n\t\treturn new Response(clone(this), {\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected\n\t\t});\n\t}\n}\n\nBody.mixIn(Response.prototype);\n\nObject.defineProperties(Response.prototype, {\n\turl: { enumerable: true },\n\tstatus: { enumerable: true },\n\tok: { enumerable: true },\n\tredirected: { enumerable: true },\n\tstatusText: { enumerable: true },\n\theaders: { enumerable: true },\n\tclone: { enumerable: true }\n});\n\nObject.defineProperty(Response.prototype, Symbol.toStringTag, {\n\tvalue: 'Response',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nconst INTERNALS$2 = Symbol('Request internals');\nconst URL = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"format\", \"parse\" aren't a named export for node <10\nconst parse_url = Url.parse;\nconst format_url = Url.format;\n\n/**\n * Wrapper around `new URL` to handle arbitrary URLs\n *\n * @param {string} urlStr\n * @return {void}\n */\nfunction parseURL(urlStr) {\n\t/*\n \tCheck whether the URL is absolute or not\n \t\tScheme: https://tools.ietf.org/html/rfc3986#section-3.1\n \tAbsolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\n */\n\tif (/^[a-zA-Z][a-zA-Z\\d+\\-.]*:/.exec(urlStr)) {\n\t\turlStr = new URL(urlStr).toString();\n\t}\n\n\t// Fallback to old implementation for arbitrary URLs\n\treturn parse_url(urlStr);\n}\n\nconst streamDestructionSupported = 'destroy' in Stream.Readable.prototype;\n\n/**\n * Check if a value is an instance of Request.\n *\n * @param Mixed input\n * @return Boolean\n */\nfunction isRequest(input) {\n\treturn typeof input === 'object' && typeof input[INTERNALS$2] === 'object';\n}\n\nfunction isAbortSignal(signal) {\n\tconst proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);\n\treturn !!(proto && proto.constructor.name === 'AbortSignal');\n}\n\n/**\n * Request class\n *\n * @param Mixed input Url or Request instance\n * @param Object init Custom options\n * @return Void\n */\nclass Request {\n\tconstructor(input) {\n\t\tlet init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tlet parsedURL;\n\n\t\t// normalize input\n\t\tif (!isRequest(input)) {\n\t\t\tif (input && input.href) {\n\t\t\t\t// in order to support Node.js' Url objects; though WHATWG's URL objects\n\t\t\t\t// will fall into this branch also (since their `toString()` will return\n\t\t\t\t// `href` property anyway)\n\t\t\t\tparsedURL = parseURL(input.href);\n\t\t\t} else {\n\t\t\t\t// coerce input to a string before attempting to parse\n\t\t\t\tparsedURL = parseURL(`${input}`);\n\t\t\t}\n\t\t\tinput = {};\n\t\t} else {\n\t\t\tparsedURL = parseURL(input.url);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tmethod = method.toUpperCase();\n\n\t\tif ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tlet inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;\n\n\t\tBody.call(this, inputBody, {\n\t\t\ttimeout: init.timeout || input.timeout || 0,\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ? input.signal : null;\n\t\tif ('signal' in init) signal = init.signal;\n\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal');\n\t\t}\n\n\t\tthis[INTERNALS$2] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal\n\t\t};\n\n\t\t// node-fetch-only options\n\t\tthis.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;\n\t\tthis.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t}\n\n\tget method() {\n\t\treturn this[INTERNALS$2].method;\n\t}\n\n\tget url() {\n\t\treturn format_url(this[INTERNALS$2].parsedURL);\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$2].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS$2].redirect;\n\t}\n\n\tget signal() {\n\t\treturn this[INTERNALS$2].signal;\n\t}\n\n\t/**\n * Clone this request\n *\n * @return Request\n */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n}\n\nBody.mixIn(Request.prototype);\n\nObject.defineProperty(Request.prototype, Symbol.toStringTag, {\n\tvalue: 'Request',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Request.prototype, {\n\tmethod: { enumerable: true },\n\turl: { enumerable: true },\n\theaders: { enumerable: true },\n\tredirect: { enumerable: true },\n\tclone: { enumerable: true },\n\tsignal: { enumerable: true }\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param Request A Request instance\n * @return Object The options object to be passed to http.request\n */\nfunction getNodeRequestOptions(request) {\n\tconst parsedURL = request[INTERNALS$2].parsedURL;\n\tconst headers = new Headers(request[INTERNALS$2].headers);\n\n\t// fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// Basic fetch\n\tif (!parsedURL.protocol || !parsedURL.hostname) {\n\t\tthrow new TypeError('Only absolute URLs are supported');\n\t}\n\n\tif (!/^https?:$/.test(parsedURL.protocol)) {\n\t\tthrow new TypeError('Only HTTP(S) protocols are supported');\n\t}\n\n\tif (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {\n\t\tthrow new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body == null && /^(POST|PUT)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\tif (request.body != null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\tif (typeof totalBytes === 'number') {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip,deflate');\n\t}\n\n\tlet agent = request.agent;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\treturn Object.assign({}, parsedURL, {\n\t\tmethod: request.method,\n\t\theaders: exportNodeCompatibleHeaders(headers),\n\t\tagent\n\t});\n}\n\n/**\n * abort-error.js\n *\n * AbortError interface for cancelled requests\n */\n\n/**\n * Create AbortError instance\n *\n * @param String message Error message for human\n * @return AbortError\n */\nfunction AbortError(message) {\n Error.call(this, message);\n\n this.type = 'aborted';\n this.message = message;\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nAbortError.prototype = Object.create(Error.prototype);\nAbortError.prototype.constructor = AbortError;\nAbortError.prototype.name = 'AbortError';\n\nconst URL$1 = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"PassThrough\", \"resolve\" aren't a named export for node <10\nconst PassThrough$1 = Stream.PassThrough;\n\nconst isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) {\n\tconst orig = new URL$1(original).hostname;\n\tconst dest = new URL$1(destination).hostname;\n\n\treturn orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest);\n};\n\n/**\n * isSameProtocol reports whether the two provided URLs use the same protocol.\n *\n * Both domains must already be in canonical form.\n * @param {string|URL} original\n * @param {string|URL} destination\n */\nconst isSameProtocol = function isSameProtocol(destination, original) {\n\tconst orig = new URL$1(original).protocol;\n\tconst dest = new URL$1(destination).protocol;\n\n\treturn orig === dest;\n};\n\n/**\n * Fetch function\n *\n * @param Mixed url Absolute url or Request instance\n * @param Object opts Fetch options\n * @return Promise\n */\nfunction fetch(url, opts) {\n\n\t// allow custom promise\n\tif (!fetch.Promise) {\n\t\tthrow new Error('native promise missing, set fetch.Promise to your favorite alternative');\n\t}\n\n\tBody.Promise = fetch.Promise;\n\n\t// wrap http.request into fetch\n\treturn new fetch.Promise(function (resolve, reject) {\n\t\t// build request object\n\t\tconst request = new Request(url, opts);\n\t\tconst options = getNodeRequestOptions(request);\n\n\t\tconst send = (options.protocol === 'https:' ? https : http).request;\n\t\tconst signal = request.signal;\n\n\t\tlet response = null;\n\n\t\tconst abort = function abort() {\n\t\t\tlet error = new AbortError('The user aborted a request.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\tdestroyStream(request.body, error);\n\t\t\t}\n\t\t\tif (!response || !response.body) return;\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = function abortAndFinalize() {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// send request\n\t\tconst req = send(options);\n\t\tlet reqTimeout;\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tfunction finalize() {\n\t\t\treq.abort();\n\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\tclearTimeout(reqTimeout);\n\t\t}\n\n\t\tif (request.timeout) {\n\t\t\treq.once('socket', function (socket) {\n\t\t\t\treqTimeout = setTimeout(function () {\n\t\t\t\t\treject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));\n\t\t\t\t\tfinalize();\n\t\t\t\t}, request.timeout);\n\t\t\t});\n\t\t}\n\n\t\treq.on('error', function (err) {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\n\t\t\tfinalize();\n\t\t});\n\n\t\tfixResponseChunkedTransferBadEnding(req, function (err) {\n\t\t\tif (signal && signal.aborted) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\t\t});\n\n\t\t/* c8 ignore next 18 */\n\t\tif (parseInt(process.version.substring(1)) < 14) {\n\t\t\t// Before Node.js 14, pipeline() does not fully support async iterators and does not always\n\t\t\t// properly handle when the socket close/end events are out of order.\n\t\t\treq.on('socket', function (s) {\n\t\t\t\ts.addListener('close', function (hadError) {\n\t\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\t\tconst hasDataListener = s.listenerCount('data') > 0;\n\n\t\t\t\t\t// if end happened before close but the socket didn't emit an error, do it now\n\t\t\t\t\tif (response && hasDataListener && !hadError && !(signal && signal.aborted)) {\n\t\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\t\tresponse.body.emit('error', err);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treq.on('response', function (res) {\n\t\t\tclearTimeout(reqTimeout);\n\n\t\t\tconst headers = createHeadersLenient(res.headers);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (fetch.isRedirect(res.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tlet locationURL = null;\n\t\t\t\ttry {\n\t\t\t\t\tlocationURL = location === null ? null : new URL$1(location, request.url).toString();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// error here can only be invalid URL in Location: header\n\t\t\t\t\t// do not throw when options.redirect == manual\n\t\t\t\t\t// let the user extract the errorneous redirect URL\n\t\t\t\t\tif (request.redirect !== 'manual') {\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.\n\t\t\t\t\t\tif (locationURL !== null) {\n\t\t\t\t\t\t\t// handle corrupted header\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\theaders.set('Location', locationURL);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow':\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOpts = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\ttimeout: request.timeout,\n\t\t\t\t\t\t\tsize: request.size\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) {\n\t\t\t\t\t\t\tfor (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {\n\t\t\t\t\t\t\t\trequestOpts.headers.delete(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {\n\t\t\t\t\t\t\trequestOpts.method = 'GET';\n\t\t\t\t\t\t\trequestOpts.body = undefined;\n\t\t\t\t\t\t\trequestOpts.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOpts)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// prepare response\n\t\t\tres.once('end', function () {\n\t\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\t});\n\t\t\tlet body = res.pipe(new PassThrough$1());\n\n\t\t\tconst response_options = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: res.statusCode,\n\t\t\t\tstatusText: res.statusMessage,\n\t\t\t\theaders: headers,\n\t\t\t\tsize: request.size,\n\t\t\t\ttimeout: request.timeout,\n\t\t\t\tcounter: request.counter\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// for gzip\n\t\t\tif (codings == 'gzip' || codings == 'x-gzip') {\n\t\t\t\tbody = body.pipe(zlib.createGunzip(zlibOptions));\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for deflate\n\t\t\tif (codings == 'deflate' || codings == 'x-deflate') {\n\t\t\t\t// handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = res.pipe(new PassThrough$1());\n\t\t\t\traw.once('data', function (chunk) {\n\t\t\t\t\t// see http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflate());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflateRaw());\n\t\t\t\t\t}\n\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\traw.on('end', function () {\n\t\t\t\t\t// some old IIS servers return zero-length OK deflate responses, so 'data' is never emitted.\n\t\t\t\t\tif (!response) {\n\t\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\t\tresolve(response);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for br\n\t\t\tif (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {\n\t\t\t\tbody = body.pipe(zlib.createBrotliDecompress());\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// otherwise, use response as-is\n\t\t\tresponse = new Response(body, response_options);\n\t\t\tresolve(response);\n\t\t});\n\n\t\twriteToStream(req, request);\n\t});\n}\nfunction fixResponseChunkedTransferBadEnding(request, errorCallback) {\n\tlet socket;\n\n\trequest.on('socket', function (s) {\n\t\tsocket = s;\n\t});\n\n\trequest.on('response', function (response) {\n\t\tconst headers = response.headers;\n\n\t\tif (headers['transfer-encoding'] === 'chunked' && !headers['content-length']) {\n\t\t\tresponse.once('close', function (hadError) {\n\t\t\t\t// tests for socket presence, as in some situations the\n\t\t\t\t// the 'socket' event is not triggered for the request\n\t\t\t\t// (happens in deno), avoids `TypeError`\n\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\tconst hasDataListener = socket && socket.listenerCount('data') > 0;\n\n\t\t\t\tif (hasDataListener && !hadError) {\n\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\terrorCallback(err);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n}\n\nfunction destroyStream(stream, err) {\n\tif (stream.destroy) {\n\t\tstream.destroy(err);\n\t} else {\n\t\t// node < 8\n\t\tstream.emit('error', err);\n\t\tstream.end();\n\t}\n}\n\n/**\n * Redirect code matching\n *\n * @param Number code Status code\n * @return Boolean\n */\nfetch.isRedirect = function (code) {\n\treturn code === 301 || code === 302 || code === 303 || code === 307 || code === 308;\n};\n\n// expose Promise\nfetch.Promise = global.Promise;\n\nexport default fetch;\nexport { Headers, Request, Response, FetchError, AbortError };\n","const Stream = require('stream')\n\nfunction serializeHeaders (headers) {\n return headers.raw()\n}\n\nfunction deserializeHeaders (fetch, old = {}) {\n const headers = new fetch.Headers()\n for (const name in old) {\n for (const value of old[name]) {\n headers.append(name, value)\n }\n }\n return headers\n}\n\nfunction serializeRequest (request) {\n return [\n request.url,\n {\n method: request.method,\n headers: request.headers,\n body: request.body,\n mode: request.mode,\n credentials: request.credentials,\n cache: request.cache,\n redirect: request.redirect,\n referrer: request.referrer,\n referrerPolicy: request.referrerPolicy,\n integrity: request.integrity,\n keepalive: request.keepalive,\n // signal: request.signal,\n\n // node-fetch props\n follow: request.follow,\n timeout: request.timeout,\n compress: request.compress,\n size: request.size\n // agent: request.agent\n }\n ]\n}\n\nfunction deserializeRequest (fetch, resource, init) {\n return new fetch.Request(resource, {\n ...init,\n body: init.body ? Buffer.from(init.body, 'base64') : undefined,\n headers: deserializeHeaders(fetch, init.headers)\n })\n}\n\nfunction serializeResponse (response) {\n return {\n url: response.url,\n headers: response.headers.raw(),\n status: response.status,\n statusText: response.statusText,\n counter: response.redirected ? 1 : 0 // could be more than one, but no way of telling\n }\n}\n\nfunction deserializeResponse (fetch, body, init, bodyError) {\n const buffer = Buffer.from(body, 'base64')\n\n return new fetch.Response(\n body ? createStream(buffer) : createStream(null),\n {\n ...init,\n headers: deserializeHeaders(fetch, init.headers)\n },\n {\n buffer,\n bodyError\n }\n )\n}\n\nconst errors = {\n TypeError\n}\n\nfunction serializeError ({ constructor, message, type, code }) {\n return [\n constructor.name,\n [message, type, { code }]\n ]\n}\n\nfunction deserializeError (fetch, name, init) {\n if (name in errors) {\n return new errors[name](...init)\n } else {\n return new fetch.FetchError(...init)\n }\n}\n\nfunction parseBodyType (body) {\n if (body == null) {\n return 'Null'\n } else if (body.constructor.name === 'URLSearchParams') {\n return 'URLSearchParams'\n } else if (Buffer.isBuffer(body)) {\n return 'Buffer'\n } else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n return 'ArrayBuffer'\n } else if (ArrayBuffer.isView(body)) {\n return 'ArrayBufferView'\n } else if (body instanceof Stream) {\n return 'Stream'\n } else {\n return 'String'\n }\n}\n\nfunction parseBody (body, type = parseBodyType(body)) {\n switch (type) {\n case 'Null': return null\n case 'URLSearchParams': return Buffer.from(body.toString())\n case 'Buffer': return body\n case 'ArrayBuffer': return Buffer.from(body)\n case 'ArrayBufferView': return Buffer.from(body.buffer, body.byteOffset, body.byteLength)\n case 'String': return Buffer.from(String(body))\n default: throw new TypeError(`sync-fetch does not support bodies of type: ${type}`)\n }\n}\n\nfunction createStream (buffer) {\n return new Stream.Transform({\n read () {\n this.push(buffer)\n this.push(null)\n }\n })\n}\n\nmodule.exports = {\n serializeHeaders,\n deserializeHeaders,\n serializeRequest,\n deserializeRequest,\n serializeResponse,\n deserializeResponse,\n serializeError,\n deserializeError,\n\n parseBodyType,\n parseBody,\n createStream\n}\n","const exec = require('child_process').execFileSync\nconst path = require('path')\nconst { URL } = require('url')\nconst _fetch = require('node-fetch')\nconst shared = require('./shared')\n\nfunction fetch (resource, init) {\n const request = []\n\n if (resource instanceof fetch.Request) {\n request.push(...shared.serializeRequest(resource))\n } else if (resource instanceof URL) {\n request.push(resource.href, {})\n } else {\n request.push(resource, {})\n }\n\n Object.assign(request[1], init)\n\n request[1].headers = new _fetch.Headers(request[1].headers)\n\n if (request[1].body) {\n const contentType = extractContentType(request)\n if (contentType && !request[1].headers.get('content-type')) { request[1].headers.append('content-type', contentType) }\n request[1].body = shared.parseBody(init.body).toString('base64')\n }\n\n request[1].headers = shared.serializeHeaders(request[1].headers)\n\n // TODO credentials\n\n const response = JSON.parse(sendMessage(request))\n if ('headers' in response[1]) {\n return shared.deserializeResponse(fetch, ...response)\n } else {\n throw shared.deserializeError(fetch, ...response)\n }\n}\n\nfunction sendMessage (message) {\n return exec(process.execPath, [path.join(__dirname, 'worker.js')], {\n windowsHide: true,\n maxBuffer: Infinity,\n input: JSON.stringify(message),\n shell: false\n }).toString()\n}\n\nfunction extractContentType (input) {\n const request = new _fetch.Request(...input)\n return request.headers.get('content-type') || undefined\n}\n\nconst _body = Symbol('bodyBuffer')\nconst _bodyError = Symbol('bodyError')\n\nclass SyncRequest extends _fetch.Request {\n constructor (resource, init = {}) {\n const buffer = shared.parseBody(init.body)\n\n super(resource, init)\n defineBuffer(this, buffer)\n }\n\n clone () {\n checkBody(this)\n return new SyncRequest(...shared.serializeRequest(this))\n }\n}\n\nclass SyncResponse extends _fetch.Response {\n constructor (body, init, options = {}) {\n const {\n buffer = shared.parseBody(body),\n bodyError\n } = options\n\n super(body, init)\n defineBuffer(this, buffer)\n if (bodyError) defineBodyError(this, bodyError)\n }\n\n clone () {\n checkBody(this)\n const buffer = Buffer.from(this[_body])\n return new SyncResponse(\n shared.createStream(buffer),\n shared.serializeResponse(this),\n {\n buffer,\n bodyError: this[_bodyError]\n }\n )\n }\n}\n\nclass Body {\n static mixin (proto) {\n for (const name of Object.getOwnPropertyNames(Body.prototype)) {\n if (name === 'constructor') { continue }\n const desc = Object.getOwnPropertyDescriptor(Body.prototype, name)\n Object.defineProperty(proto, name, {\n ...desc,\n enumerable: true\n })\n }\n }\n\n arrayBuffer () {\n checkBody(this)\n const buf = consumeBody(this)\n return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength)\n }\n\n text () {\n checkBody(this)\n return consumeBody(this).toString()\n }\n\n json () {\n checkBody(this)\n try {\n return JSON.parse(consumeBody(this).toString())\n } catch (err) {\n throw new fetch.FetchError(`invalid json response body at ${this.url} reason: ${err.message}`, 'invalid-json')\n }\n }\n\n buffer () {\n checkBody(this)\n return Buffer.from(consumeBody(this))\n }\n\n textConverted () {\n throw new fetch.FetchError('textConverted not implemented')\n }\n}\n\nfunction _super (self, method) {\n return Object.getPrototypeOf(Object.getPrototypeOf(self))[method].bind(self)\n}\n\nfunction checkBody (body) {\n if (body[_bodyError]) {\n throw body[_bodyError]\n }\n if (body.bodyUsed) {\n throw new TypeError(`body used already for: ${body.url}`)\n }\n}\n\nfunction consumeBody (body) {\n _super(body, 'buffer')().catch(error => console.error(error))\n return body[_body] || Buffer.alloc(0)\n}\n\nfunction defineBuffer (body, buffer) {\n Object.defineProperty(body, _body, {\n value: buffer,\n enumerable: false\n })\n}\n\nfunction defineBodyError (body, error) {\n Object.defineProperty(body, _bodyError, {\n value: shared.deserializeError(fetch, ...error),\n enumerable: false\n })\n}\n\nBody.mixin(SyncRequest.prototype)\nBody.mixin(SyncResponse.prototype)\nObject.defineProperties(SyncRequest.prototype, { clone: { enumerable: true } })\nObject.defineProperties(SyncResponse.prototype, { clone: { enumerable: true } })\n\nfetch.Headers = _fetch.Headers\nfetch.FetchError = _fetch.FetchError\nfetch.Request = SyncRequest\nfetch.Response = SyncResponse\nmodule.exports = fetch\n","import Stream from 'stream';\nimport http from 'http';\nimport Url from 'url';\nimport whatwgUrl from 'whatwg-url';\nimport https from 'https';\nimport zlib from 'zlib';\n\n// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js\n\n// fix for \"Readable\" isn't a named export issue\nconst Readable = Stream.Readable;\n\nconst BUFFER = Symbol('buffer');\nconst TYPE = Symbol('type');\n\nclass Blob {\n\tconstructor() {\n\t\tthis[TYPE] = '';\n\n\t\tconst blobParts = arguments[0];\n\t\tconst options = arguments[1];\n\n\t\tconst buffers = [];\n\t\tlet size = 0;\n\n\t\tif (blobParts) {\n\t\t\tconst a = blobParts;\n\t\t\tconst length = Number(a.length);\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tconst element = a[i];\n\t\t\t\tlet buffer;\n\t\t\t\tif (element instanceof Buffer) {\n\t\t\t\t\tbuffer = element;\n\t\t\t\t} else if (ArrayBuffer.isView(element)) {\n\t\t\t\t\tbuffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);\n\t\t\t\t} else if (element instanceof ArrayBuffer) {\n\t\t\t\t\tbuffer = Buffer.from(element);\n\t\t\t\t} else if (element instanceof Blob) {\n\t\t\t\t\tbuffer = element[BUFFER];\n\t\t\t\t} else {\n\t\t\t\t\tbuffer = Buffer.from(typeof element === 'string' ? element : String(element));\n\t\t\t\t}\n\t\t\t\tsize += buffer.length;\n\t\t\t\tbuffers.push(buffer);\n\t\t\t}\n\t\t}\n\n\t\tthis[BUFFER] = Buffer.concat(buffers);\n\n\t\tlet type = options && options.type !== undefined && String(options.type).toLowerCase();\n\t\tif (type && !/[^\\u0020-\\u007E]/.test(type)) {\n\t\t\tthis[TYPE] = type;\n\t\t}\n\t}\n\tget size() {\n\t\treturn this[BUFFER].length;\n\t}\n\tget type() {\n\t\treturn this[TYPE];\n\t}\n\ttext() {\n\t\treturn Promise.resolve(this[BUFFER].toString());\n\t}\n\tarrayBuffer() {\n\t\tconst buf = this[BUFFER];\n\t\tconst ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\treturn Promise.resolve(ab);\n\t}\n\tstream() {\n\t\tconst readable = new Readable();\n\t\treadable._read = function () {};\n\t\treadable.push(this[BUFFER]);\n\t\treadable.push(null);\n\t\treturn readable;\n\t}\n\ttoString() {\n\t\treturn '[object Blob]';\n\t}\n\tslice() {\n\t\tconst size = this.size;\n\n\t\tconst start = arguments[0];\n\t\tconst end = arguments[1];\n\t\tlet relativeStart, relativeEnd;\n\t\tif (start === undefined) {\n\t\t\trelativeStart = 0;\n\t\t} else if (start < 0) {\n\t\t\trelativeStart = Math.max(size + start, 0);\n\t\t} else {\n\t\t\trelativeStart = Math.min(start, size);\n\t\t}\n\t\tif (end === undefined) {\n\t\t\trelativeEnd = size;\n\t\t} else if (end < 0) {\n\t\t\trelativeEnd = Math.max(size + end, 0);\n\t\t} else {\n\t\t\trelativeEnd = Math.min(end, size);\n\t\t}\n\t\tconst span = Math.max(relativeEnd - relativeStart, 0);\n\n\t\tconst buffer = this[BUFFER];\n\t\tconst slicedBuffer = buffer.slice(relativeStart, relativeStart + span);\n\t\tconst blob = new Blob([], { type: arguments[2] });\n\t\tblob[BUFFER] = slicedBuffer;\n\t\treturn blob;\n\t}\n}\n\nObject.defineProperties(Blob.prototype, {\n\tsize: { enumerable: true },\n\ttype: { enumerable: true },\n\tslice: { enumerable: true }\n});\n\nObject.defineProperty(Blob.prototype, Symbol.toStringTag, {\n\tvalue: 'Blob',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * fetch-error.js\n *\n * FetchError interface for operational errors\n */\n\n/**\n * Create FetchError instance\n *\n * @param String message Error message for human\n * @param String type Error type for machine\n * @param String systemError For Node.js system error\n * @return FetchError\n */\nfunction FetchError(message, type, systemError) {\n Error.call(this, message);\n\n this.message = message;\n this.type = type;\n\n // when err.type is `system`, err.code contains system error code\n if (systemError) {\n this.code = this.errno = systemError.code;\n }\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nFetchError.prototype = Object.create(Error.prototype);\nFetchError.prototype.constructor = FetchError;\nFetchError.prototype.name = 'FetchError';\n\nlet convert;\ntry {\n\tconvert = require('encoding').convert;\n} catch (e) {}\n\nconst INTERNALS = Symbol('Body internals');\n\n// fix an issue where \"PassThrough\" isn't a named export for node <10\nconst PassThrough = Stream.PassThrough;\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nfunction Body(body) {\n\tvar _this = this;\n\n\tvar _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n\t _ref$size = _ref.size;\n\n\tlet size = _ref$size === undefined ? 0 : _ref$size;\n\tvar _ref$timeout = _ref.timeout;\n\tlet timeout = _ref$timeout === undefined ? 0 : _ref$timeout;\n\n\tif (body == null) {\n\t\t// body is undefined or null\n\t\tbody = null;\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\tbody = Buffer.from(body.toString());\n\t} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\tbody = Buffer.from(body);\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t} else if (body instanceof Stream) ; else {\n\t\t// none of the above\n\t\t// coerce to string then buffer\n\t\tbody = Buffer.from(String(body));\n\t}\n\tthis[INTERNALS] = {\n\t\tbody,\n\t\tdisturbed: false,\n\t\terror: null\n\t};\n\tthis.size = size;\n\tthis.timeout = timeout;\n\n\tif (body instanceof Stream) {\n\t\tbody.on('error', function (err) {\n\t\t\tconst error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);\n\t\t\t_this[INTERNALS].error = error;\n\t\t});\n\t}\n}\n\nBody.prototype = {\n\tget body() {\n\t\treturn this[INTERNALS].body;\n\t},\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t},\n\n\t/**\n * Decode response as ArrayBuffer\n *\n * @return Promise\n */\n\tarrayBuffer() {\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\t});\n\t},\n\n\t/**\n * Return raw response as Blob\n *\n * @return Promise\n */\n\tblob() {\n\t\tlet ct = this.headers && this.headers.get('content-type') || '';\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn Object.assign(\n\t\t\t// Prevent copying\n\t\t\tnew Blob([], {\n\t\t\t\ttype: ct.toLowerCase()\n\t\t\t}), {\n\t\t\t\t[BUFFER]: buf\n\t\t\t});\n\t\t});\n\t},\n\n\t/**\n * Decode response as json\n *\n * @return Promise\n */\n\tjson() {\n\t\tvar _this2 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(buffer.toString());\n\t\t\t} catch (err) {\n\t\t\t\treturn Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n * Decode response as text\n *\n * @return Promise\n */\n\ttext() {\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn buffer.toString();\n\t\t});\n\t},\n\n\t/**\n * Decode response as buffer (non-spec api)\n *\n * @return Promise\n */\n\tbuffer() {\n\t\treturn consumeBody.call(this);\n\t},\n\n\t/**\n * Decode response as text, while automatically detecting the encoding and\n * trying to decode to UTF-8 (non-spec api)\n *\n * @return Promise\n */\n\ttextConverted() {\n\t\tvar _this3 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn convertBody(buffer, _this3.headers);\n\t\t});\n\t}\n};\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: { enumerable: true },\n\tbodyUsed: { enumerable: true },\n\tarrayBuffer: { enumerable: true },\n\tblob: { enumerable: true },\n\tjson: { enumerable: true },\n\ttext: { enumerable: true }\n});\n\nBody.mixIn = function (proto) {\n\tfor (const name of Object.getOwnPropertyNames(Body.prototype)) {\n\t\t// istanbul ignore else: future proof\n\t\tif (!(name in proto)) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(Body.prototype, name);\n\t\t\tObject.defineProperty(proto, name, desc);\n\t\t}\n\t}\n};\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return Promise\n */\nfunction consumeBody() {\n\tvar _this4 = this;\n\n\tif (this[INTERNALS].disturbed) {\n\t\treturn Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));\n\t}\n\n\tthis[INTERNALS].disturbed = true;\n\n\tif (this[INTERNALS].error) {\n\t\treturn Body.Promise.reject(this[INTERNALS].error);\n\t}\n\n\tlet body = this.body;\n\n\t// body is null\n\tif (body === null) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is blob\n\tif (isBlob(body)) {\n\t\tbody = body.stream();\n\t}\n\n\t// body is buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn Body.Promise.resolve(body);\n\t}\n\n\t// istanbul ignore if: should never happen\n\tif (!(body instanceof Stream)) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is stream\n\t// get ready to actually consume the body\n\tlet accum = [];\n\tlet accumBytes = 0;\n\tlet abort = false;\n\n\treturn new Body.Promise(function (resolve, reject) {\n\t\tlet resTimeout;\n\n\t\t// allow timeout on slow response body\n\t\tif (_this4.timeout) {\n\t\t\tresTimeout = setTimeout(function () {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));\n\t\t\t}, _this4.timeout);\n\t\t}\n\n\t\t// handle stream errors\n\t\tbody.on('error', function (err) {\n\t\t\tif (err.name === 'AbortError') {\n\t\t\t\t// if the request was aborted, reject with this Error\n\t\t\t\tabort = true;\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\t// other errors, such as incorrect content-encoding\n\t\t\t\treject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\n\t\tbody.on('data', function (chunk) {\n\t\t\tif (abort || chunk === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_this4.size && accumBytes + chunk.length > _this4.size) {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t});\n\n\t\tbody.on('end', function () {\n\t\t\tif (abort) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tclearTimeout(resTimeout);\n\n\t\t\ttry {\n\t\t\t\tresolve(Buffer.concat(accum, accumBytes));\n\t\t\t} catch (err) {\n\t\t\t\t// handle streams that have accumulated too much data (issue #414)\n\t\t\t\treject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect buffer encoding and convert to target encoding\n * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding\n *\n * @param Buffer buffer Incoming buffer\n * @param String encoding Target encoding\n * @return String\n */\nfunction convertBody(buffer, headers) {\n\tif (typeof convert !== 'function') {\n\t\tthrow new Error('The package `encoding` must be installed to use the textConverted() function');\n\t}\n\n\tconst ct = headers.get('content-type');\n\tlet charset = 'utf-8';\n\tlet res, str;\n\n\t// header\n\tif (ct) {\n\t\tres = /charset=([^;]*)/i.exec(ct);\n\t}\n\n\t// no charset in content type, peek at response body for at most 1024 bytes\n\tstr = buffer.slice(0, 1024).toString();\n\n\t// html5\n\tif (!res && str) {\n\t\tres = /<meta.+?charset=(['\"])(.+?)\\1/i.exec(str);\n\t}\n\n\t// html4\n\tif (!res && str) {\n\t\tres = /<meta[\\s]+?http-equiv=(['\"])content-type\\1[\\s]+?content=(['\"])(.+?)\\2/i.exec(str);\n\t\tif (!res) {\n\t\t\tres = /<meta[\\s]+?content=(['\"])(.+?)\\1[\\s]+?http-equiv=(['\"])content-type\\3/i.exec(str);\n\t\t\tif (res) {\n\t\t\t\tres.pop(); // drop last quote\n\t\t\t}\n\t\t}\n\n\t\tif (res) {\n\t\t\tres = /charset=(.*)/i.exec(res.pop());\n\t\t}\n\t}\n\n\t// xml\n\tif (!res && str) {\n\t\tres = /<\\?xml.+?encoding=(['\"])(.+?)\\1/i.exec(str);\n\t}\n\n\t// found charset\n\tif (res) {\n\t\tcharset = res.pop();\n\n\t\t// prevent decode issues when sites use incorrect encoding\n\t\t// ref: https://hsivonen.fi/encoding-menu/\n\t\tif (charset === 'gb2312' || charset === 'gbk') {\n\t\t\tcharset = 'gb18030';\n\t\t}\n\t}\n\n\t// turn raw buffers into a single utf-8 buffer\n\treturn convert(buffer, 'UTF-8', charset).toString();\n}\n\n/**\n * Detect a URLSearchParams object\n * ref: https://github.com/bitinn/node-fetch/issues/296#issuecomment-307598143\n *\n * @param Object obj Object to detect by type or brand\n * @return String\n */\nfunction isURLSearchParams(obj) {\n\t// Duck-typing as a necessary condition.\n\tif (typeof obj !== 'object' || typeof obj.append !== 'function' || typeof obj.delete !== 'function' || typeof obj.get !== 'function' || typeof obj.getAll !== 'function' || typeof obj.has !== 'function' || typeof obj.set !== 'function') {\n\t\treturn false;\n\t}\n\n\t// Brand-checking and more duck-typing as optional condition.\n\treturn obj.constructor.name === 'URLSearchParams' || Object.prototype.toString.call(obj) === '[object URLSearchParams]' || typeof obj.sort === 'function';\n}\n\n/**\n * Check if `obj` is a W3C `Blob` object (which `File` inherits from)\n * @param {*} obj\n * @return {boolean}\n */\nfunction isBlob(obj) {\n\treturn typeof obj === 'object' && typeof obj.arrayBuffer === 'function' && typeof obj.type === 'string' && typeof obj.stream === 'function' && typeof obj.constructor === 'function' && typeof obj.constructor.name === 'string' && /^(Blob|File)$/.test(obj.constructor.name) && /^(Blob|File)$/.test(obj[Symbol.toStringTag]);\n}\n\n/**\n * Clone body given Res/Req instance\n *\n * @param Mixed instance Response or Request instance\n * @return Mixed\n */\nfunction clone(instance) {\n\tlet p1, p2;\n\tlet body = instance.body;\n\n\t// don't allow cloning a used body\n\tif (instance.bodyUsed) {\n\t\tthrow new Error('cannot clone body after it is used');\n\t}\n\n\t// check that body is a stream and not form-data object\n\t// note: we can't clone the form-data object without having it as a dependency\n\tif (body instanceof Stream && typeof body.getBoundary !== 'function') {\n\t\t// tee instance body\n\t\tp1 = new PassThrough();\n\t\tp2 = new PassThrough();\n\t\tbody.pipe(p1);\n\t\tbody.pipe(p2);\n\t\t// set instance body to teed body and return the other teed body\n\t\tinstance[INTERNALS].body = p1;\n\t\tbody = p2;\n\t}\n\n\treturn body;\n}\n\n/**\n * Performs the operation \"extract a `Content-Type` value from |object|\" as\n * specified in the specification:\n * https://fetch.spec.whatwg.org/#concept-bodyinit-extract\n *\n * This function assumes that instance.body is present.\n *\n * @param Mixed instance Any options.body input\n */\nfunction extractContentType(body) {\n\tif (body === null) {\n\t\t// body is null\n\t\treturn null;\n\t} else if (typeof body === 'string') {\n\t\t// body is string\n\t\treturn 'text/plain;charset=UTF-8';\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\treturn 'application/x-www-form-urlencoded;charset=UTF-8';\n\t} else if (isBlob(body)) {\n\t\t// body is blob\n\t\treturn body.type || null;\n\t} else if (Buffer.isBuffer(body)) {\n\t\t// body is buffer\n\t\treturn null;\n\t} else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\treturn null;\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\treturn null;\n\t} else if (typeof body.getBoundary === 'function') {\n\t\t// detect form data input from form-data module\n\t\treturn `multipart/form-data;boundary=${body.getBoundary()}`;\n\t} else if (body instanceof Stream) {\n\t\t// body is stream\n\t\t// can't really do much about this\n\t\treturn null;\n\t} else {\n\t\t// Body constructor defaults other things to string\n\t\treturn 'text/plain;charset=UTF-8';\n\t}\n}\n\n/**\n * The Fetch Standard treats this as if \"total bytes\" is a property on the body.\n * For us, we have to explicitly get it with a function.\n *\n * ref: https://fetch.spec.whatwg.org/#concept-body-total-bytes\n *\n * @param Body instance Instance of Body\n * @return Number? Number of bytes, or null if not possible\n */\nfunction getTotalBytes(instance) {\n\tconst body = instance.body;\n\n\n\tif (body === null) {\n\t\t// body is null\n\t\treturn 0;\n\t} else if (isBlob(body)) {\n\t\treturn body.size;\n\t} else if (Buffer.isBuffer(body)) {\n\t\t// body is buffer\n\t\treturn body.length;\n\t} else if (body && typeof body.getLengthSync === 'function') {\n\t\t// detect form data input from form-data module\n\t\tif (body._lengthRetrievers && body._lengthRetrievers.length == 0 || // 1.x\n\t\tbody.hasKnownLength && body.hasKnownLength()) {\n\t\t\t// 2.x\n\t\t\treturn body.getLengthSync();\n\t\t}\n\t\treturn null;\n\t} else {\n\t\t// body is stream\n\t\treturn null;\n\t}\n}\n\n/**\n * Write a Body to a Node.js WritableStream (e.g. http.Request) object.\n *\n * @param Body instance Instance of Body\n * @return Void\n */\nfunction writeToStream(dest, instance) {\n\tconst body = instance.body;\n\n\n\tif (body === null) {\n\t\t// body is null\n\t\tdest.end();\n\t} else if (isBlob(body)) {\n\t\tbody.stream().pipe(dest);\n\t} else if (Buffer.isBuffer(body)) {\n\t\t// body is buffer\n\t\tdest.write(body);\n\t\tdest.end();\n\t} else {\n\t\t// body is stream\n\t\tbody.pipe(dest);\n\t}\n}\n\n// expose Promise\nBody.Promise = global.Promise;\n\n/**\n * headers.js\n *\n * Headers class offers convenient helpers\n */\n\nconst invalidTokenRegex = /[^\\^_`a-zA-Z\\-0-9!#$%&'*+.|~]/;\nconst invalidHeaderCharRegex = /[^\\t\\x20-\\x7e\\x80-\\xff]/;\n\nfunction validateName(name) {\n\tname = `${name}`;\n\tif (invalidTokenRegex.test(name) || name === '') {\n\t\tthrow new TypeError(`${name} is not a legal HTTP header name`);\n\t}\n}\n\nfunction validateValue(value) {\n\tvalue = `${value}`;\n\tif (invalidHeaderCharRegex.test(value)) {\n\t\tthrow new TypeError(`${value} is not a legal HTTP header value`);\n\t}\n}\n\n/**\n * Find the key in the map object given a header name.\n *\n * Returns undefined if not found.\n *\n * @param String name Header name\n * @return String|Undefined\n */\nfunction find(map, name) {\n\tname = name.toLowerCase();\n\tfor (const key in map) {\n\t\tif (key.toLowerCase() === name) {\n\t\t\treturn key;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nconst MAP = Symbol('map');\nclass Headers {\n\t/**\n * Headers class\n *\n * @param Object headers Response headers\n * @return Void\n */\n\tconstructor() {\n\t\tlet init = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n\t\tthis[MAP] = Object.create(null);\n\n\t\tif (init instanceof Headers) {\n\t\t\tconst rawHeaders = init.raw();\n\t\t\tconst headerNames = Object.keys(rawHeaders);\n\n\t\t\tfor (const headerName of headerNames) {\n\t\t\t\tfor (const value of rawHeaders[headerName]) {\n\t\t\t\t\tthis.append(headerName, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// We don't worry about converting prop to ByteString here as append()\n\t\t// will handle it.\n\t\tif (init == null) ; else if (typeof init === 'object') {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\tif (method != null) {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// sequence<sequence<ByteString>>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tconst pairs = [];\n\t\t\t\tfor (const pair of init) {\n\t\t\t\t\tif (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be iterable');\n\t\t\t\t\t}\n\t\t\t\t\tpairs.push(Array.from(pair));\n\t\t\t\t}\n\n\t\t\t\tfor (const pair of pairs) {\n\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t}\n\t\t\t\t\tthis.append(pair[0], pair[1]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// record<ByteString, ByteString>\n\t\t\t\tfor (const key of Object.keys(init)) {\n\t\t\t\t\tconst value = init[key];\n\t\t\t\t\tthis.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Provided initializer must be an object');\n\t\t}\n\t}\n\n\t/**\n * Return combined header value given name\n *\n * @param String name Header name\n * @return Mixed\n */\n\tget(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this[MAP][key].join(', ');\n\t}\n\n\t/**\n * Iterate over all headers\n *\n * @param Function callback Executed for each item with parameters (value, name, thisArg)\n * @param Boolean thisArg `this` context for callback function\n * @return Void\n */\n\tforEach(callback) {\n\t\tlet thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n\t\tlet pairs = getHeaders(this);\n\t\tlet i = 0;\n\t\twhile (i < pairs.length) {\n\t\t\tvar _pairs$i = pairs[i];\n\t\t\tconst name = _pairs$i[0],\n\t\t\t value = _pairs$i[1];\n\n\t\t\tcallback.call(thisArg, value, name, this);\n\t\t\tpairs = getHeaders(this);\n\t\t\ti++;\n\t\t}\n\t}\n\n\t/**\n * Overwrite header values given name\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tset(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tthis[MAP][key !== undefined ? key : name] = [value];\n\t}\n\n\t/**\n * Append a value onto existing header\n *\n * @param String name Header name\n * @param String value Header value\n * @return Void\n */\n\tappend(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tthis[MAP][key].push(value);\n\t\t} else {\n\t\t\tthis[MAP][name] = [value];\n\t\t}\n\t}\n\n\t/**\n * Check for header name existence\n *\n * @param String name Header name\n * @return Boolean\n */\n\thas(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\treturn find(this[MAP], name) !== undefined;\n\t}\n\n\t/**\n * Delete all header values given name\n *\n * @param String name Header name\n * @return Void\n */\n\tdelete(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tdelete this[MAP][key];\n\t\t}\n\t}\n\n\t/**\n * Return raw headers (non-spec api)\n *\n * @return Object\n */\n\traw() {\n\t\treturn this[MAP];\n\t}\n\n\t/**\n * Get an iterator on keys.\n *\n * @return Iterator\n */\n\tkeys() {\n\t\treturn createHeadersIterator(this, 'key');\n\t}\n\n\t/**\n * Get an iterator on values.\n *\n * @return Iterator\n */\n\tvalues() {\n\t\treturn createHeadersIterator(this, 'value');\n\t}\n\n\t/**\n * Get an iterator on entries.\n *\n * This is the default iterator of the Headers object.\n *\n * @return Iterator\n */\n\t[Symbol.iterator]() {\n\t\treturn createHeadersIterator(this, 'key+value');\n\t}\n}\nHeaders.prototype.entries = Headers.prototype[Symbol.iterator];\n\nObject.defineProperty(Headers.prototype, Symbol.toStringTag, {\n\tvalue: 'Headers',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Headers.prototype, {\n\tget: { enumerable: true },\n\tforEach: { enumerable: true },\n\tset: { enumerable: true },\n\tappend: { enumerable: true },\n\thas: { enumerable: true },\n\tdelete: { enumerable: true },\n\tkeys: { enumerable: true },\n\tvalues: { enumerable: true },\n\tentries: { enumerable: true }\n});\n\nfunction getHeaders(headers) {\n\tlet kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';\n\n\tconst keys = Object.keys(headers[MAP]).sort();\n\treturn keys.map(kind === 'key' ? function (k) {\n\t\treturn k.toLowerCase();\n\t} : kind === 'value' ? function (k) {\n\t\treturn headers[MAP][k].join(', ');\n\t} : function (k) {\n\t\treturn [k.toLowerCase(), headers[MAP][k].join(', ')];\n\t});\n}\n\nconst INTERNAL = Symbol('internal');\n\nfunction createHeadersIterator(target, kind) {\n\tconst iterator = Object.create(HeadersIteratorPrototype);\n\titerator[INTERNAL] = {\n\t\ttarget,\n\t\tkind,\n\t\tindex: 0\n\t};\n\treturn iterator;\n}\n\nconst HeadersIteratorPrototype = Object.setPrototypeOf({\n\tnext() {\n\t\t// istanbul ignore if\n\t\tif (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {\n\t\t\tthrow new TypeError('Value of `this` is not a HeadersIterator');\n\t\t}\n\n\t\tvar _INTERNAL = this[INTERNAL];\n\t\tconst target = _INTERNAL.target,\n\t\t kind = _INTERNAL.kind,\n\t\t index = _INTERNAL.index;\n\n\t\tconst values = getHeaders(target, kind);\n\t\tconst len = values.length;\n\t\tif (index >= len) {\n\t\t\treturn {\n\t\t\t\tvalue: undefined,\n\t\t\t\tdone: true\n\t\t\t};\n\t\t}\n\n\t\tthis[INTERNAL].index = index + 1;\n\n\t\treturn {\n\t\t\tvalue: values[index],\n\t\t\tdone: false\n\t\t};\n\t}\n}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));\n\nObject.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {\n\tvalue: 'HeadersIterator',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * Export the Headers object in a form that Node.js can consume.\n *\n * @param Headers headers\n * @return Object\n */\nfunction exportNodeCompatibleHeaders(headers) {\n\tconst obj = Object.assign({ __proto__: null }, headers[MAP]);\n\n\t// http.request() only supports string as Host header. This hack makes\n\t// specifying custom Host header possible.\n\tconst hostHeaderKey = find(headers[MAP], 'Host');\n\tif (hostHeaderKey !== undefined) {\n\t\tobj[hostHeaderKey] = obj[hostHeaderKey][0];\n\t}\n\n\treturn obj;\n}\n\n/**\n * Create a Headers object from an object of headers, ignoring those that do\n * not conform to HTTP grammar productions.\n *\n * @param Object obj Object of headers\n * @return Headers\n */\nfunction createHeadersLenient(obj) {\n\tconst headers = new Headers();\n\tfor (const name of Object.keys(obj)) {\n\t\tif (invalidTokenRegex.test(name)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (Array.isArray(obj[name])) {\n\t\t\tfor (const val of obj[name]) {\n\t\t\t\tif (invalidHeaderCharRegex.test(val)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (headers[MAP][name] === undefined) {\n\t\t\t\t\theaders[MAP][name] = [val];\n\t\t\t\t} else {\n\t\t\t\t\theaders[MAP][name].push(val);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (!invalidHeaderCharRegex.test(obj[name])) {\n\t\t\theaders[MAP][name] = [obj[name]];\n\t\t}\n\t}\n\treturn headers;\n}\n\nconst INTERNALS$1 = Symbol('Response internals');\n\n// fix an issue where \"STATUS_CODES\" aren't a named export for node <10\nconst STATUS_CODES = http.STATUS_CODES;\n\n/**\n * Response class\n *\n * @param Stream body Readable stream\n * @param Object opts Response options\n * @return Void\n */\nclass Response {\n\tconstructor() {\n\t\tlet body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t\tlet opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tBody.call(this, body, opts);\n\n\t\tconst status = opts.status || 200;\n\t\tconst headers = new Headers(opts.headers);\n\n\t\tif (body != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS$1] = {\n\t\t\turl: opts.url,\n\t\t\tstatus,\n\t\t\tstatusText: opts.statusText || STATUS_CODES[status],\n\t\t\theaders,\n\t\t\tcounter: opts.counter\n\t\t};\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS$1].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS$1].status;\n\t}\n\n\t/**\n * Convenience property representing if the request ended normally\n */\n\tget ok() {\n\t\treturn this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS$1].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS$1].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$1].headers;\n\t}\n\n\t/**\n * Clone this response\n *\n * @return Response\n */\n\tclone() {\n\t\treturn new Response(clone(this), {\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected\n\t\t});\n\t}\n}\n\nBody.mixIn(Response.prototype);\n\nObject.defineProperties(Response.prototype, {\n\turl: { enumerable: true },\n\tstatus: { enumerable: true },\n\tok: { enumerable: true },\n\tredirected: { enumerable: true },\n\tstatusText: { enumerable: true },\n\theaders: { enumerable: true },\n\tclone: { enumerable: true }\n});\n\nObject.defineProperty(Response.prototype, Symbol.toStringTag, {\n\tvalue: 'Response',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nconst INTERNALS$2 = Symbol('Request internals');\nconst URL = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"format\", \"parse\" aren't a named export for node <10\nconst parse_url = Url.parse;\nconst format_url = Url.format;\n\n/**\n * Wrapper around `new URL` to handle arbitrary URLs\n *\n * @param {string} urlStr\n * @return {void}\n */\nfunction parseURL(urlStr) {\n\t/*\n \tCheck whether the URL is absolute or not\n \t\tScheme: https://tools.ietf.org/html/rfc3986#section-3.1\n \tAbsolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\n */\n\tif (/^[a-zA-Z][a-zA-Z\\d+\\-.]*:/.exec(urlStr)) {\n\t\turlStr = new URL(urlStr).toString();\n\t}\n\n\t// Fallback to old implementation for arbitrary URLs\n\treturn parse_url(urlStr);\n}\n\nconst streamDestructionSupported = 'destroy' in Stream.Readable.prototype;\n\n/**\n * Check if a value is an instance of Request.\n *\n * @param Mixed input\n * @return Boolean\n */\nfunction isRequest(input) {\n\treturn typeof input === 'object' && typeof input[INTERNALS$2] === 'object';\n}\n\nfunction isAbortSignal(signal) {\n\tconst proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);\n\treturn !!(proto && proto.constructor.name === 'AbortSignal');\n}\n\n/**\n * Request class\n *\n * @param Mixed input Url or Request instance\n * @param Object init Custom options\n * @return Void\n */\nclass Request {\n\tconstructor(input) {\n\t\tlet init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tlet parsedURL;\n\n\t\t// normalize input\n\t\tif (!isRequest(input)) {\n\t\t\tif (input && input.href) {\n\t\t\t\t// in order to support Node.js' Url objects; though WHATWG's URL objects\n\t\t\t\t// will fall into this branch also (since their `toString()` will return\n\t\t\t\t// `href` property anyway)\n\t\t\t\tparsedURL = parseURL(input.href);\n\t\t\t} else {\n\t\t\t\t// coerce input to a string before attempting to parse\n\t\t\t\tparsedURL = parseURL(`${input}`);\n\t\t\t}\n\t\t\tinput = {};\n\t\t} else {\n\t\t\tparsedURL = parseURL(input.url);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tmethod = method.toUpperCase();\n\n\t\tif ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tlet inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;\n\n\t\tBody.call(this, inputBody, {\n\t\t\ttimeout: init.timeout || input.timeout || 0,\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ? input.signal : null;\n\t\tif ('signal' in init) signal = init.signal;\n\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal');\n\t\t}\n\n\t\tthis[INTERNALS$2] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal\n\t\t};\n\n\t\t// node-fetch-only options\n\t\tthis.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;\n\t\tthis.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t}\n\n\tget method() {\n\t\treturn this[INTERNALS$2].method;\n\t}\n\n\tget url() {\n\t\treturn format_url(this[INTERNALS$2].parsedURL);\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$2].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS$2].redirect;\n\t}\n\n\tget signal() {\n\t\treturn this[INTERNALS$2].signal;\n\t}\n\n\t/**\n * Clone this request\n *\n * @return Request\n */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n}\n\nBody.mixIn(Request.prototype);\n\nObject.defineProperty(Request.prototype, Symbol.toStringTag, {\n\tvalue: 'Request',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Request.prototype, {\n\tmethod: { enumerable: true },\n\turl: { enumerable: true },\n\theaders: { enumerable: true },\n\tredirect: { enumerable: true },\n\tclone: { enumerable: true },\n\tsignal: { enumerable: true }\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param Request A Request instance\n * @return Object The options object to be passed to http.request\n */\nfunction getNodeRequestOptions(request) {\n\tconst parsedURL = request[INTERNALS$2].parsedURL;\n\tconst headers = new Headers(request[INTERNALS$2].headers);\n\n\t// fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// Basic fetch\n\tif (!parsedURL.protocol || !parsedURL.hostname) {\n\t\tthrow new TypeError('Only absolute URLs are supported');\n\t}\n\n\tif (!/^https?:$/.test(parsedURL.protocol)) {\n\t\tthrow new TypeError('Only HTTP(S) protocols are supported');\n\t}\n\n\tif (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {\n\t\tthrow new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body == null && /^(POST|PUT)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\tif (request.body != null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\tif (typeof totalBytes === 'number') {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip,deflate');\n\t}\n\n\tlet agent = request.agent;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\treturn Object.assign({}, parsedURL, {\n\t\tmethod: request.method,\n\t\theaders: exportNodeCompatibleHeaders(headers),\n\t\tagent\n\t});\n}\n\n/**\n * abort-error.js\n *\n * AbortError interface for cancelled requests\n */\n\n/**\n * Create AbortError instance\n *\n * @param String message Error message for human\n * @return AbortError\n */\nfunction AbortError(message) {\n Error.call(this, message);\n\n this.type = 'aborted';\n this.message = message;\n\n // hide custom error implementation details from end-users\n Error.captureStackTrace(this, this.constructor);\n}\n\nAbortError.prototype = Object.create(Error.prototype);\nAbortError.prototype.constructor = AbortError;\nAbortError.prototype.name = 'AbortError';\n\nconst URL$1 = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"PassThrough\", \"resolve\" aren't a named export for node <10\nconst PassThrough$1 = Stream.PassThrough;\n\nconst isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) {\n\tconst orig = new URL$1(original).hostname;\n\tconst dest = new URL$1(destination).hostname;\n\n\treturn orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest);\n};\n\n/**\n * isSameProtocol reports whether the two provided URLs use the same protocol.\n *\n * Both domains must already be in canonical form.\n * @param {string|URL} original\n * @param {string|URL} destination\n */\nconst isSameProtocol = function isSameProtocol(destination, original) {\n\tconst orig = new URL$1(original).protocol;\n\tconst dest = new URL$1(destination).protocol;\n\n\treturn orig === dest;\n};\n\n/**\n * Fetch function\n *\n * @param Mixed url Absolute url or Request instance\n * @param Object opts Fetch options\n * @return Promise\n */\nfunction fetch(url, opts) {\n\n\t// allow custom promise\n\tif (!fetch.Promise) {\n\t\tthrow new Error('native promise missing, set fetch.Promise to your favorite alternative');\n\t}\n\n\tBody.Promise = fetch.Promise;\n\n\t// wrap http.request into fetch\n\treturn new fetch.Promise(function (resolve, reject) {\n\t\t// build request object\n\t\tconst request = new Request(url, opts);\n\t\tconst options = getNodeRequestOptions(request);\n\n\t\tconst send = (options.protocol === 'https:' ? https : http).request;\n\t\tconst signal = request.signal;\n\n\t\tlet response = null;\n\n\t\tconst abort = function abort() {\n\t\t\tlet error = new AbortError('The user aborted a request.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\tdestroyStream(request.body, error);\n\t\t\t}\n\t\t\tif (!response || !response.body) return;\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = function abortAndFinalize() {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// send request\n\t\tconst req = send(options);\n\t\tlet reqTimeout;\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tfunction finalize() {\n\t\t\treq.abort();\n\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\tclearTimeout(reqTimeout);\n\t\t}\n\n\t\tif (request.timeout) {\n\t\t\treq.once('socket', function (socket) {\n\t\t\t\treqTimeout = setTimeout(function () {\n\t\t\t\t\treject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));\n\t\t\t\t\tfinalize();\n\t\t\t\t}, request.timeout);\n\t\t\t});\n\t\t}\n\n\t\treq.on('error', function (err) {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\n\t\t\tfinalize();\n\t\t});\n\n\t\tfixResponseChunkedTransferBadEnding(req, function (err) {\n\t\t\tif (signal && signal.aborted) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\t\t});\n\n\t\t/* c8 ignore next 18 */\n\t\tif (parseInt(process.version.substring(1)) < 14) {\n\t\t\t// Before Node.js 14, pipeline() does not fully support async iterators and does not always\n\t\t\t// properly handle when the socket close/end events are out of order.\n\t\t\treq.on('socket', function (s) {\n\t\t\t\ts.addListener('close', function (hadError) {\n\t\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\t\tconst hasDataListener = s.listenerCount('data') > 0;\n\n\t\t\t\t\t// if end happened before close but the socket didn't emit an error, do it now\n\t\t\t\t\tif (response && hasDataListener && !hadError && !(signal && signal.aborted)) {\n\t\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\t\tresponse.body.emit('error', err);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treq.on('response', function (res) {\n\t\t\tclearTimeout(reqTimeout);\n\n\t\t\tconst headers = createHeadersLenient(res.headers);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (fetch.isRedirect(res.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tlet locationURL = null;\n\t\t\t\ttry {\n\t\t\t\t\tlocationURL = location === null ? null : new URL$1(location, request.url).toString();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// error here can only be invalid URL in Location: header\n\t\t\t\t\t// do not throw when options.redirect == manual\n\t\t\t\t\t// let the user extract the errorneous redirect URL\n\t\t\t\t\tif (request.redirect !== 'manual') {\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.\n\t\t\t\t\t\tif (locationURL !== null) {\n\t\t\t\t\t\t\t// handle corrupted header\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\theaders.set('Location', locationURL);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow':\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOpts = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\ttimeout: request.timeout,\n\t\t\t\t\t\t\tsize: request.size\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) {\n\t\t\t\t\t\t\tfor (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {\n\t\t\t\t\t\t\t\trequestOpts.headers.delete(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {\n\t\t\t\t\t\t\trequestOpts.method = 'GET';\n\t\t\t\t\t\t\trequestOpts.body = undefined;\n\t\t\t\t\t\t\trequestOpts.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOpts)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// prepare response\n\t\t\tres.once('end', function () {\n\t\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\t});\n\t\t\tlet body = res.pipe(new PassThrough$1());\n\n\t\t\tconst response_options = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: res.statusCode,\n\t\t\t\tstatusText: res.statusMessage,\n\t\t\t\theaders: headers,\n\t\t\t\tsize: request.size,\n\t\t\t\ttimeout: request.timeout,\n\t\t\t\tcounter: request.counter\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// for gzip\n\t\t\tif (codings == 'gzip' || codings == 'x-gzip') {\n\t\t\t\tbody = body.pipe(zlib.createGunzip(zlibOptions));\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for deflate\n\t\t\tif (codings == 'deflate' || codings == 'x-deflate') {\n\t\t\t\t// handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = res.pipe(new PassThrough$1());\n\t\t\t\traw.once('data', function (chunk) {\n\t\t\t\t\t// see http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflate());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflateRaw());\n\t\t\t\t\t}\n\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\traw.on('end', function () {\n\t\t\t\t\t// some old IIS servers return zero-length OK deflate responses, so 'data' is never emitted.\n\t\t\t\t\tif (!response) {\n\t\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\t\tresolve(response);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for br\n\t\t\tif (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {\n\t\t\t\tbody = body.pipe(zlib.createBrotliDecompress());\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// otherwise, use response as-is\n\t\t\tresponse = new Response(body, response_options);\n\t\t\tresolve(response);\n\t\t});\n\n\t\twriteToStream(req, request);\n\t});\n}\nfunction fixResponseChunkedTransferBadEnding(request, errorCallback) {\n\tlet socket;\n\n\trequest.on('socket', function (s) {\n\t\tsocket = s;\n\t});\n\n\trequest.on('response', function (response) {\n\t\tconst headers = response.headers;\n\n\t\tif (headers['transfer-encoding'] === 'chunked' && !headers['content-length']) {\n\t\t\tresponse.once('close', function (hadError) {\n\t\t\t\t// tests for socket presence, as in some situations the\n\t\t\t\t// the 'socket' event is not triggered for the request\n\t\t\t\t// (happens in deno), avoids `TypeError`\n\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\tconst hasDataListener = socket && socket.listenerCount('data') > 0;\n\n\t\t\t\tif (hasDataListener && !hadError) {\n\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\terrorCallback(err);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n}\n\nfunction destroyStream(stream, err) {\n\tif (stream.destroy) {\n\t\tstream.destroy(err);\n\t} else {\n\t\t// node < 8\n\t\tstream.emit('error', err);\n\t\tstream.end();\n\t}\n}\n\n/**\n * Redirect code matching\n *\n * @param Number code Status code\n * @return Boolean\n */\nfetch.isRedirect = function (code) {\n\treturn code === 301 || code === 302 || code === 303 || code === 307 || code === 308;\n};\n\n// expose Promise\nfetch.Promise = global.Promise;\n\nexport default fetch;\nexport { Headers, Request, Response, FetchError };\n","'use strict';\n\nvar fetch = require('node-fetch');\n\nfunction wrapFetchForNode(fetch) {\n // Support schemaless URIs on the server for parity with the browser.\n // https://github.com/matthew-andrews/isomorphic-fetch/pull/10\n return function (u, options) {\n if (typeof u === 'string' && u.slice(0, 2) === '//') {\n return fetch('https:' + u, options);\n }\n\n return fetch(u, options);\n };\n}\n\nmodule.exports = function (context) {\n // Support webpack module import weirdness.\n var fetchFn = fetch.default ? fetch.default : fetch;\n\n // This modifies the global `node-fetch` object, which isn't great, since\n // different callers to `fetch-ponyfill` which pass a different Promise\n // implementation would each expect to have their implementation used. But,\n // given the way `node-fetch` is implemented, this is the only way to make\n // it work at all.\n if (context && context.Promise) {\n fetchFn.Promise = context.Promise;\n }\n\n return {\n fetch: wrapFetchForNode(fetchFn),\n Headers: fetch.Headers,\n Request: fetch.Request,\n Response: fetch.Response\n };\n};\n","//@ts-nocheck\nimport syncFetch from 'sync-fetch'\nimport fetchPolyfill from 'fetch-ponyfill'\nimport logger from '../logger.js'\n// import pkg from '../../package.json';\nconst { fetch, Headers } = fetchPolyfill()\nconst corsEnabled = typeof location !== 'undefined' && typeof document !== 'undefined'\nlet userAgent = `Citation.js/0.65`\n\nfunction normaliseHeaders(headers) {\n const result = {}\n const entries =\n headers instanceof Headers || headers instanceof syncFetch.Headers\n ? Array.from(headers)\n : Object.entries(headers)\n\n for (const [name, header] of entries) {\n result[name.toLowerCase()] = header.toString()\n }\n\n return result\n}\n\nfunction parseOpts(opts = {}) {\n const reqOpts = {\n headers: {\n accept: '*/*',\n },\n method: 'GET',\n checkContentType: opts.checkContentType,\n }\n\n if (userAgent && !corsEnabled) {\n reqOpts.headers['user-agent'] = userAgent\n }\n\n if (opts.body) {\n reqOpts.method = 'POST'\n const isJson = typeof opts.body !== 'string'\n reqOpts.body = isJson ? JSON.stringify(opts.body) : opts.body\n reqOpts.headers['content-type'] = isJson ? 'application/json' : 'text/plain'\n }\n\n if (opts.headers) {\n Object.assign(reqOpts.headers, normaliseHeaders(opts.headers))\n }\n\n return reqOpts\n}\n\nfunction sameType(request, response) {\n if (!request.accept || request.accept === '*/*' || !response['content-type']) {\n return true\n }\n\n const [a, b] = response['content-type'].split(';')[0].trim().split('/')\n return request.accept\n .split(',')\n .map((type) => type.split(';')[0].trim().split('/'))\n .some(([c, d]) => (c === a || c === '*') && (d === b || d === '*'))\n}\n\nfunction checkResponse(response, opts) {\n const { status, headers } = response\n let error\n\n if (status >= 400) {\n error = new Error(`Server responded with status code ${status}`)\n } else if (opts.checkContentType === true && !sameType(opts.headers, normaliseHeaders(headers))) {\n error = new Error(`Server responded with content-type ${headers.get('content-type')}`)\n }\n\n if (error) {\n error.status = status\n error.headers = headers\n error.body = response.body\n throw error\n }\n\n return response\n}\n\nexport function fetchFile(url, opts) {\n const reqOpts = parseOpts(opts)\n logger.http('[core]', reqOpts.method, url, reqOpts)\n const response = checkResponse(syncFetch(url, reqOpts), reqOpts)\n return response.text()\n}\nexport async function fetchFileAsync(url, opts) {\n const reqOpts = parseOpts(opts)\n logger.http('[core]', reqOpts.method, url, reqOpts)\n return fetch(url, reqOpts)\n .then((response) => checkResponse(response, reqOpts))\n .then((response) => response.text())\n}\nexport function setUserAgent(newUserAgent) {\n userAgent = newUserAgent\n}\nexport default fetchFile\n","/**\n * Generate ID\n *\n * @access protected\n * @memberof module:@citation-js/core.util\n *\n * @param {Array<String>} list - old ID list\n * @param {String} prefix - ID prefix\n *\n * @return {String} CSL ID\n */\nfunction fetchId(list, prefix) {\n let id\n\n while (id === undefined || list.includes(id)) {\n id = `${prefix}${Math.random().toString().slice(2)}`\n }\n\n return id\n}\n\nexport default fetchId\n","// @ts-nocheck\n/**\n * @memberof module:@citation-js/core.util\n * @param {Object} [data={}] - initial values\n */\nclass Register {\n constructor(data = {}) {\n this.data = data\n }\n\n /**\n * @param {String} key\n * @param {*} value\n * @return {Register} this\n */\n set(key, value) {\n this.data[key] = value\n return this\n }\n\n /**\n * @param {String} key\n * @param {*} value\n * @return {Register} this\n */\n add(...args) {\n return this.set(...args)\n }\n\n /**\n * @param {String} key\n * @return {Register} this\n */\n delete(key) {\n delete this.data[key]\n return this\n }\n\n /**\n * @param {String} key\n * @return {Register} this\n */\n remove(...args) {\n return this.delete(...args)\n }\n\n /**\n * @param {String} key\n * @return {*} value\n */\n get(key) {\n return this.data[key]\n }\n\n /**\n * @param {String} key\n * @return {Boolean} register has key\n */\n has(key) {\n return Object.prototype.hasOwnProperty.call(this.data, key)\n }\n\n /**\n * @return {Array<String>} list of keys\n */\n list() {\n return Object.keys(this.data)\n }\n}\n\nexport default Register\n","// @ts-nocheck\nimport { deepCopy } from './deepCopy.js'\n\n/**\n * @typedef module:@citation-js/core.util.Grammar~ruleName\n * @type {String}\n */\n\n/**\n * @callback module:@citation-js/core.util.Grammar~rule\n * @this module:@citation-js/core.util.Grammar\n */\n\n/**\n * @memberof module:@citation-js/core.util\n *\n * @param {Object<module:@citation-js/core.util.Grammar~ruleName,module:@citation-js/core.util.Grammar~rule>} rules\n * @param {Object} state\n */\nclass Grammar {\n constructor(rules, state) {\n this.rules = rules\n this.defaultState = state\n this.mainRule = Object.keys(rules)[0]\n this.log = []\n }\n\n /**\n * @param iterator - lexer supporting formatError() and next()\n * @param [mainRule] - defaults to the first rule\n * @return result of the main rule\n */\n parse(iterator, mainRule) {\n this.lexer = iterator\n this.token = this.lexer.next()\n this.state = deepCopy(this.defaultState)\n this.log = []\n return this.consumeRule(mainRule || this.mainRule)\n }\n\n /**\n * @return {Boolean} true if there are no more tokens\n */\n matchEndOfFile() {\n return !this.token\n }\n\n /**\n * @param {String} type - a token type\n * @return {Boolean} true if the current token has the given type\n */\n matchToken(type) {\n return this.token && type === this.token.type\n }\n\n /**\n * @param {String} [type] - a token type\n * @param {Boolean} [optional=false] - false if it should throw an error if the type does not match\n * @return {Object} token information\n * @throws {SyntaxError} detailed syntax error if the current token is not the expected type or if there are no tokens left\n */\n consumeToken(type, optional) {\n const token = this.token\n\n if (!type || (token && token.type === type)) {\n this.token = this.lexer.next()\n return token\n } else if (optional) {\n return undefined\n } else {\n const got = token ? `\"${token.type}\"` : 'EOF'\n const error = new SyntaxError(this.lexer.formatError(token, `expected \"${type}\", got ${got}`))\n error.message += ` (${this.log.join('->')})`\n throw error\n }\n }\n\n /**\n * @param {String} rule - a rule name\n * @return whatever the rule function returns\n */\n consumeRule(rule) {\n this.log.push(rule)\n const result = this.rules[rule].call(this)\n this.log.pop()\n return result\n }\n}\n\nexport { Grammar }\n","// @ts-nocheck\n/**\n * Mapping unit.\n *\n * @typedef {Object} module:@citation-js/core.util.Translator~statement\n * @property {String|Array<String>} [source] - properties to source value from\n * @property {String|Array<String>} [target] - properties the value should go to\n * @property {Object} [convert] - convert serialized or nested values\n * @property {module:@citation-js/core.util.Translator~convertProp} [convert.toTarget] - function to convert source prop to target\n * @property {module:@citation-js/core.util.Translator~convertProp} [convert.toSource] - function to convert target prop to source\n * @property {Object} [when] - conditions as to when this statement should apply\n * @property {module:@citation-js/core.util.Translator~condition} [when.source]\n * @property {module:@citation-js/core.util.Translator~condition} [when.target]\n */\n\n/**\n * In the case of toTarget, source is input and target is output. In the case of\n * toSource, source is output and target is input.\n *\n * @callback module:@citation-js/core.util.Translator~convertProp\n * @param {...*} input - input values\n * @return {Array|*} If output is an array and multiple output properties are\n * specified, the output is divided over those properties.\n */\n\n/**\n * A top-level Boolean enables or disables a mapping unit in a given direction.\n * Otherwise, individual properties are checked with an object specifying the\n * property name and one of four things:\n *\n * - A boolean, checking for presence of the property\n * - An array of values for checking whether the property value is in them\n * - A value that should match with the property value\n * - A predicate function taking in the value and returning a boolean\n *\n * All conditions have to be fulfilled for the mapping unit to be enabled.\n *\n * @typedef {Boolean|Object<String,Boolean|Array<*>|module:@citation-js/core.util.Translator~conditionPropPredicate|*>} module:@citation-js/core.util.Translator~condition\n */\n\n/**\n * Return, based on a property, whether a mapping should apply.\n *\n * @callback module:@citation-js/core.util.Translator~conditionPropPredicate\n * @param {*} input - input value\n * @return {Boolean}\n */\n\n/**\n * Return, whether a mapping should apply.\n *\n * @callback module:@citation-js/core.util.Translator~conditionPredicate\n * @param {Object} input - input\n * @return {Boolean}\n */\n\n/**\n * @access private\n * @memberof module:@citation-js/core.util.Translator\n * @param {module:@citation-js/core.util.Translator~condition} condition\n * @return {module:@citation-js/core.util.Translator~conditionPredicate}\n */\nfunction createConditionEval(condition) {\n return function conditionEval(input) {\n if (typeof condition === 'boolean') {\n return condition\n }\n\n return Object.keys(condition).every((prop) => {\n const value = condition[prop]\n if (value === true) {\n return prop in input\n } else if (value === false) {\n return !(prop in input)\n } else if (typeof value === 'function') {\n return value(input[prop])\n } else if (Array.isArray(value)) {\n return value.includes(input[prop])\n } else {\n return input[prop] === value\n }\n })\n }\n}\n\n/**\n * @access private\n * @typedef {Object} module:@citation-js/core.util.Translator~normalizedStatement\n * @property {Array<String>} inputProp\n * @property {Array<String>} outputProp\n * @property {module:@citation-js/core.util.Translator~convertProp} convert\n * @property {module:@citation-js/core.util.Translator~conditionPredicate} condition\n */\n\n/**\n * @access private\n * @memberof module:@citation-js/core.util.Translator\n * @param {module:@citation-js/core.util.Translator~statement} prop\n * @param {Boolean} toSource\n * @return {module:@citation-js/core.util.Translator~normalizedStatement} normalized one-directional object\n */\nfunction parsePropStatement(prop, toSource) {\n let inputProp\n let outputProp\n let convert\n let condition\n\n if (typeof prop === 'string') {\n inputProp = outputProp = prop\n } else if (prop) {\n inputProp = toSource ? prop.target : prop.source\n outputProp = toSource ? prop.source : prop.target\n\n if (prop.convert) {\n convert = toSource ? prop.convert.toSource : prop.convert.toTarget\n }\n\n if (prop.when) {\n condition = toSource ? prop.when.target : prop.when.source\n if (condition != null) {\n condition = createConditionEval(condition)\n }\n }\n } else {\n return null\n }\n\n inputProp = [].concat(inputProp).filter(Boolean)\n outputProp = [].concat(outputProp).filter(Boolean)\n\n return { inputProp, outputProp, convert, condition }\n}\n\n/**\n * Return, whether a mapping should apply.\n *\n * @callback module:@citation-js/core.util.Translator~convert\n * @param {Object} input - input\n * @return {Object} output\n */\n\n/**\n * @access private\n * @memberof module:@citation-js/core.util.Translator\n * @param {Array<module:@citation-js/core.util.Translator~statement>} props\n * @param {Boolean} toSource\n * @return {module:@citation-js/core.util.Translator~convert} converter\n */\nfunction createConverter(props, toSource) {\n toSource = toSource === Translator.CONVERT_TO_SOURCE\n props = props.map((prop) => parsePropStatement(prop, toSource)).filter(Boolean)\n\n return function converter(input) {\n const output = {}\n\n for (const { inputProp, outputProp, convert, condition } of props) {\n // Skip when no output will be assigned\n if (outputProp.length === 0) {\n continue\n // Skip when requested by the requirements of the prop converter\n } else if (condition && !condition(input)) {\n continue\n // Skip when none of the required props are in the input data\n // NOTE: if no input is required, do not skip\n } else if (inputProp.length !== 0 && inputProp.every((prop) => !(prop in input))) {\n continue\n }\n\n let outputData = inputProp.map((prop) => input[prop])\n if (convert) {\n try {\n const converted = convert.apply(input, outputData)\n outputData = outputProp.length === 1 ? [converted] : converted\n } catch (cause) {\n throw new Error(`Failed to convert ${inputProp} to ${outputProp}`, { cause })\n }\n }\n\n outputProp.forEach((prop, index) => {\n const value = outputData[index]\n if (value !== undefined) {\n output[prop] = value\n }\n })\n }\n\n return output\n }\n}\n\n/**\n * @memberof module:@citation-js/core.util\n *\n * @param {Array<module:@citation-js/core.util.Translator~statement>} props\n *\n * @todo proper merging (?)\n * @todo 'else' conditions\n */\nclass Translator {\n constructor(props) {\n /**\n * @type {module:@citation-js/core.util.Translator~convert}\n */\n this.convertToSource = createConverter(props, Translator.CONVERT_TO_SOURCE)\n\n /**\n * @type {module:@citation-js/core.util.Translator~convert}\n */\n this.convertToTarget = createConverter(props, Translator.CONVERT_TO_TARGET)\n }\n}\n\n/**\n * @memberof module:@citation-js/core.util.Translator\n * @property {Symbol} CONVERT_TO_SOURCE\n */\nTranslator.CONVERT_TO_SOURCE = Symbol('convert to source')\n\n/**\n * @memberof module:@citation-js/core.util.Translator\n * @property {Symbol} CONVERT_TO_TARGET\n */\nTranslator.CONVERT_TO_TARGET = Symbol('convert to target')\n\nexport { Translator }\n","// @ts-nocheck\nimport { deepCopy, upgradeCsl } from '../../util/index.js'\nimport logger from '../../logger.js'\n\nimport { get as getTypeInfo } from './register.js'\nimport { type as parseType } from './type.js'\nimport { data as parseData, dataAsync as parseDataAsync } from './data.js'\nimport { applyGraph, removeGraph } from './graph.js'\n\n/**\n * @access private\n * @param {Array<Object>} graph\n * @return {String}\n */\nfunction prepareParseGraph(graph) {\n return (\n graph\n // collapse continuous iterations of the same type\n .reduce((array, next) => {\n const last = array[array.length - 1]\n if (last && last.type === next.type) {\n last.count = last.count + 1 || 2\n } else {\n array.push(next)\n }\n return array\n }, [])\n // presentation\n .map((element) => (element.count > 1 ? element.count + 'x ' : '') + element.type)\n .join(' -> ')\n )\n}\n\n/**\n * @access private\n * @memberof module:@citation-js/core.plugins.input\n * @constructor ChainParser\n *\n * @param {module:@citation-js/core~InputData} input\n * @param {module:@citation-js/core~InputOptions} options\n */\nclass ChainParser {\n constructor(input, options = {}) {\n this.options = Object.assign(\n {\n generateGraph: true,\n forceType: parseType(input),\n maxChainLength: 10,\n strict: true,\n target: '@csl/list+object',\n },\n options\n )\n\n this.type = this.options.forceType\n this.data = typeof input === 'object' ? deepCopy(input) : input\n this.graph = [{ type: this.type, data: input }]\n this.iteration = 0\n }\n\n /**\n * After a round of data parsing, update type information and check targets.\n *\n * @access public\n * @return {Boolean} Whether this is the last iteration or not\n */\n iterate() {\n if (this.iteration !== 0) {\n const typeInfo = getTypeInfo(this.type)\n\n if (typeInfo && typeInfo.outputs) {\n this.type = typeInfo.outputs\n } else {\n this.type = parseType(this.data)\n }\n\n this.graph.push({ type: this.type })\n }\n\n if (this.error || this.type === this.options.target) {\n return false\n } else if (this.iteration >= this.options.maxChainLength) {\n this.error = new RangeError(\n `Max. number of parsing iterations reached (${prepareParseGraph(this.graph)})`\n )\n return false\n } else {\n this.iteration++\n return true\n }\n }\n\n /**\n * Finish the iteration and return parsed data.\n *\n * @access public\n * @return Array<module:@citation-js/core~CSL>\n */\n end() {\n if (this.error) {\n logger.error('[core]', this.error.message)\n if (this.options.strict !== false) {\n throw this.error\n } else {\n return []\n }\n } else if (this.options.target === '@csl/list+object') {\n return upgradeCsl(this.data).map(\n this.options.generateGraph ? (entry) => applyGraph(entry, this.graph) : removeGraph\n )\n } else {\n return this.data\n }\n }\n}\n\n/**\n * Parse input until success.\n *\n * @access protected\n * @method chain\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {module:@citation-js/core~InputData} input - input data\n * @param {module:@citation-js/core~InputOptions} [options] - options\n *\n * @return {Array<module:@citation-js/core~CSL>} The parsed input\n */\nexport const chain = (...args) => {\n const chain = new ChainParser(...args)\n\n while (chain.iterate()) {\n try {\n chain.data = parseData(chain.data, chain.type)\n } catch (e) {\n chain.error = e\n }\n }\n\n return chain.end()\n}\n\n/**\n * Parse input once.\n *\n * @access protected\n * @method chainLink\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {module:@citation-js/core~InputData} input - input data\n *\n * @return {module:@citation-js/core~InputData} The parsed input\n */\nexport const chainLink = (input) => {\n const type = parseType(input)\n const output = type.match(/array|object/) ? deepCopy(input) : input\n\n return parseData(output, type)\n}\n\n/**\n * Parse input until success. (async)\n *\n * @access protected\n * @method chainAsync\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {module:@citation-js/core~InputData} input - input data\n * @param {module:@citation-js/core~InputOptions} [options] - options\n *\n * @return {Promise<Array<module:@citation-js/core~CSL>>} The parsed input\n */\nexport const chainAsync = async (...args) => {\n const chain = new ChainParser(...args)\n\n while (chain.iterate()) {\n chain.data = await parseDataAsync(chain.data, chain.type).catch((e) => {\n chain.error = e\n })\n }\n\n return chain.end()\n}\n\n/**\n * Parse input once. (async)\n *\n * @access protected\n * @method chainLinkAsync\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {module:@citation-js/core~InputData} input - The input data\n *\n * @return {Promise<module:@citation-js/core~InputData>} The parsed input\n */\nexport const chainLinkAsync = async (input) => {\n const type = parseType(input)\n const output = type.match(/array|object/) ? deepCopy(input) : input\n\n return parseDataAsync(output, type)\n}\n","// @ts-nocheck\nimport { chain, chainAsync } from './chain.js'\n\n/**\n * @access private\n * @memberof module:@citation-js/core.plugins.input\n *\n * @typedef {Object<module:@citation-js/core.plugins.input~format,module:@citation-js/core.plugins.input~parse>} parsers\n */\nconst parsers = {}\n\n/**\n * @access private\n * @memberof module:@citation-js/core.plugins.input\n *\n * @typedef {Object<module:@citation-js/core.plugins.input~format,module:@citation-js/core.plugins.input~parseAsync>} asyncParsers\n */\nconst asyncParsers = {}\n\n/**\n * @access private\n * @memberof module:@citation-js/core.plugins.input\n *\n * @typedef {Object<module:@citation-js/core.plugins.input~format,module:@citation-js/core.plugins.input~parse>} nativeParsers\n */\nconst nativeParsers = {\n '@csl/object': (input) => [input],\n '@csl/list+object': (input) => input,\n '@else/list+object': (input) => input.map(chain).flat(),\n '@invalid': () => {\n throw new Error('This format is not supported or recognized')\n },\n}\n\n/**\n * @access private\n * @memberof module:@citation-js/core.plugins.input\n *\n * @typedef {Object<module:@citation-js/core.plugins.input~format,module:@citation-js/core.plugins.input~parseAsync>} nativeAsyncParsers\n */\nconst nativeAsyncParsers = {\n '@else/list+object': async (input) => (await Promise.all(input.map(chainAsync))).flat(),\n}\n\n/**\n * @access public\n * @method data\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {module:@citation-js/core~InputData} input - input data\n * @param {module:@citation-js/core.plugins.input~format} type - input type\n *\n * @return {*} parsed data\n * @return {Null} if no parser available\n */\nexport function data(input, type) {\n if (typeof parsers[type] === 'function') {\n return parsers[type](input)\n } else {\n throw new Error('This format is not supported or recognized')\n // throw new TypeError(`No synchronous parser found for ${type}`)\n }\n}\n\n/**\n * @access public\n * @method dataAsync\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {module:@citation-js/core~InputData} input - input data\n * @param {module:@citation-js/core.plugins.input~format} type - input type\n *\n * @return {Promise} parsed data\n * @return {Promise<Null>} if no parser available\n */\nexport async function dataAsync(input, type) {\n if (typeof asyncParsers[type] === 'function') {\n return asyncParsers[type](input)\n } else if (typeof nativeAsyncParsers[type] === 'function') {\n return nativeAsyncParsers[type](input)\n } else if (hasDataParser(type, false)) {\n return data(input, type)\n } else {\n throw new TypeError(`No parser found for ${type}`)\n }\n}\n\n/**\n * @access protected\n * @method addDataParser\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {module:@citation-js/core.plugins.input~format} format\n * @param {module:@citation-js/core.plugins.input~parse|module:@citation-js/core.plugins.input~parseAsync} parser\n * @param {Object} [options={}]\n * @param {Boolean} [options.async=false]\n */\nexport function addDataParser(format, { parser, async }) {\n if (async) {\n asyncParsers[format] = parser\n } else {\n parsers[format] = parser\n }\n}\n\n/**\n * @access public\n * @method hasDataParser\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {module:@citation-js/core.plugins.input~format} type\n * @param {Boolean} [async=false] - check only for async, or only sync\n *\n * @return {Boolean} parser exists\n */\nexport function hasDataParser(type, async) {\n return async\n ? asyncParsers[type] || nativeAsyncParsers[type]\n : parsers[type] || nativeParsers[type]\n}\n\n/**\n * @access public\n * @method removeDataParser\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {module:@citation-js/core.plugins.input~format} type\n * @param {Boolean} [async=false]\n */\nexport function removeDataParser(type, async) {\n delete (async ? asyncParsers : parsers)[type]\n}\n\n/**\n * @access public\n * @method listDataParser\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {Boolean} [async=false]\n */\nexport function listDataParser(async) {\n return Object.keys(async ? asyncParsers : parsers)\n}\n","// @ts-nocheck\nimport { FormatParser } from './parser.js'\nimport { addTypeParser, removeTypeParser } from './type.js'\nimport { addDataParser, removeDataParser } from './data.js'\n\n/**\n * @access private\n * @type {Object<module:@citation-js/core.plugins.input~format, Object>}\n */\nconst formats = {}\n\n/**\n * See the relevant tutorial: {@tutorial input_plugins}\n *\n * @access public\n * @method add\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {module:@citation-js/core.plugins.input~format} format - input format name\n * @param {module:@citation-js/core.plugins.input~parsers} parsers - parsers\n *\n * @tutorial input_plugins\n */\nexport function add(format, parsers) {\n const formatParser = new FormatParser(format, parsers)\n formatParser.validate()\n\n const index = formats[format] || (formats[format] = {})\n\n if (formatParser.typeParser) {\n addTypeParser(format, formatParser.typeParser)\n index.type = true\n }\n if (formatParser.dataParser) {\n addDataParser(format, formatParser.dataParser)\n index.data = true\n }\n if (formatParser.asyncDataParser) {\n addDataParser(format, formatParser.asyncDataParser)\n index.asyncData = true\n }\n\n if (parsers.outputs) {\n index.outputs = parsers.outputs\n }\n}\n\n/**\n * @access public\n * @method get\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {module:@citation-js/core.plugins.input~format} format - input format name\n * @returns {Object} index\n */\nexport function get(format) {\n return formats[format]\n}\n\n/**\n * @access public\n * @method remove\n * @memberof module:@citation-js/core.plugins.input\n *\n * @param {module:@citation-js/core.plugins.input~format} format - input format name\n */\nexport function remove(format) {\n const index = formats[format]\n\n if (!index) {\n return\n }\n\n if (index.type) {\n removeTypeParser(format)\n }\n if (index.data) {\n removeDataParser(format)\n }\n if (index.asyncData) {\n removeDataParser(format, true)\n }\n\n delete formats[format]\n}\n\n/**\n * @access public\n * @method has\n * @memberof module:@citation-js/core.plugins.input\n * @param {module:@citation-js/core.plugins.input~format} format - input format name\n * @returns {Boolean} input format is registered\n */\nexport function has(format) {\n return format in formats\n}\n\n/**\n * @access public\n * @method list\n * @memberof module:@citation-js/core.plugins.input\n * @returns {Array<module:@citation-js/core.plugins.input~format>} input format is registered\n */\nexport function list() {\n return Object.keys(formats)\n}\n","/**\n * @namespace input\n * @memberof module:@citation-js/core.plugins\n */\n\nimport * as dataType from './dataType.js'\nimport * as graph from './graph.js'\nimport * as parser from './parser.js'\nimport * as csl from './csl.js'\n\n/**\n * @namespace util\n * @memberof module:@citation-js/core.plugins.input\n */\nexport const util = Object.assign({}, dataType, graph, parser, csl)\n\nexport * from './register'\n\nexport * from './chain'\nexport * from './type'\nexport * from './data'\n","// @ts-nocheck\nimport { chain as parseInput, chainAsync as parseInputAsync } from '../plugins/input/index.js'\nimport fetchId from '../util/fetchId.js'\n\n/**\n * Add an object to the array of objects\n *\n * @memberof module:@citation-js/core.Cite#\n *\n * @param {module:@citation-js/core~InputData} data - The data to add to your object\n * @param {module:@citation-js/core~InputOptions} [options] - Options\n * @param {Boolean} [log=false] - Show this call in the log\n *\n * @return {module:@citation-js/core.Cite} The updated parent object\n */\nfunction add(data, options = {}, log = false) {\n if (options === true || log === true) {\n this.save()\n }\n\n this.data.push(...parseInput(data, options))\n\n this.data\n .filter((entry) => !Object.prototype.hasOwnProperty.call(entry, 'id'))\n .forEach((entry) => {\n entry.id = fetchId(this.getIds(), 'temp_id_')\n })\n\n return this\n}\n\n/**\n * Add an object to the array of objects\n *\n * @memberof module:@citation-js/core.Cite#\n *\n * @param {module:@citation-js/core~InputData} data - The data to add to your object\n * @param {module:@citation-js/core~InputOptions} [options] - Options\n * @param {Boolean} [log=false] - Show this call in the log\n *\n * @return {Promise<module:@citation-js/core.Cite>} The updated parent object\n */\nasync function addAsync(data, options = {}, log = false) {\n if (options === true || log === true) {\n this.save()\n }\n\n this.data.push(...(await parseInputAsync(data, options)))\n\n this.data\n .filter((entry) => !Object.prototype.hasOwnProperty.call(entry, 'id'))\n .forEach((entry) => {\n entry.id = fetchId(this.getIds(), 'temp_id_')\n })\n\n return this\n}\n\n/**\n * Recreate a `Cite` object with almost any kind of data, and manipulate it with its default methods.\n *\n * @memberof module:@citation-js/core.Cite#\n *\n * @param {module:@citation-js/core~InputData} data - Replacement data\n * @param {module:@citation-js/core~InputOptions} [options] - Options\n * @param {Boolean} [log=false] - Show this call in the log\n *\n * @return {module:@citation-js/core.Cite} The updated parent object\n */\nfunction set(data, options = {}, log = false) {\n if (options === true || log === true) {\n this.save()\n }\n\n this.data = []\n return typeof options !== 'boolean' ? this.add(data, options) : this.add(data)\n}\n\n/**\n * Recreate a `Cite` object with almost any kind of data, and manipulate it with its default methods.\n *\n * @memberof module:@citation-js/core.Cite#\n *\n * @param {module:@citation-js/core~InputData} data - Replacement data\n * @param {module:@citation-js/core~InputOptions} [options] - Options\n * @param {Boolean} [log=false] - Show this call in the log\n *\n * @return {Promise<module:@citation-js/core.Cite>} The updated parent object\n */\nasync function setAsync(data, options = {}, log = false) {\n if (options === true || log === true) {\n this.save()\n }\n\n this.data = []\n return typeof options !== 'boolean' ? this.addAsync(data, options) : this.addAsync(data)\n}\n\n/**\n * Reset a `Cite` object.\n *\n * @memberof module:@citation-js/core.Cite#\n *\n * @param {Boolean} [log=false] - Show this call in the log\n *\n * @return {module:@citation-js/core.Cite} The updated, empty parent object (except the log, the log lives)\n */\nfunction reset(log) {\n if (log) {\n this.save()\n }\n\n this.data = []\n this._options = {}\n\n return this\n}\n\nexport { add, addAsync, set, setAsync, reset }\n","// @ts-nocheck\n/**\n * @module output/label\n */\n\n/**\n * Get a label from CSL data\n *\n * @access protected\n * @method getLabel\n * @todo flavors/formats\n *\n * @param {CSL} entry - Input CSL\n *\n * @return {String} The label\n */\nfunction getLabel(entry) {\n if ('citation-label' in entry) {\n return entry['citation-label']\n }\n\n let res = ''\n\n if (entry.author) {\n res += entry.author[0].family || entry.author[0].literal\n }\n if (entry.issued && entry.issued['date-parts'] && entry.issued['date-parts'][0]) {\n res += entry.issued['date-parts'][0][0]\n }\n if (entry['year-suffix']) {\n res += entry['year-suffix']\n } else if (entry.title) {\n res += entry.title.replace(/<\\/?.*?>/g, '').match(/^(?:(?:the|a|an)\\s+)?(\\S+)/i)[1]\n }\n\n return res\n}\n\nexport { getLabel }\nexport default {\n label(data) {\n return data.reduce((object, entry) => {\n object[entry.id] = getLabel(entry)\n return object\n }, {})\n },\n}\n","import { getLabel } from '../plugin-common/output/label.js'\nimport { format as getName } from '@citation-js/name'\n\n/**\n * @callback module:@citation-js/core.Cite#sort~sort\n * @param {module:@citation-js/core~CSL} a - element a\n * @param {module:@citation-js/core~CSL} b - element b\n * @return {Number} positive for a > b, negative for b > a, zero for a = b\n */\n\n/**\n * Get value for comparing\n *\n * @access private\n * @method getComparisonValue\n *\n * @param {module:@citation-js/core~CSL} obj - obj\n * @param {String} prop - The prop in question\n * @param {Boolean} label - Prop is label\n *\n * @return {String|Number} something to compare\n */\nfunction getComparisonValue(obj, prop, label = prop === 'label') {\n let value = label ? getLabel(obj) : obj[prop]\n\n switch (prop) {\n case 'author':\n case 'editor':\n return value.map((name) => name.literal || name.family || getName(name))\n\n case 'accessed':\n case 'issued':\n return value['date-parts'][0]\n\n case 'page':\n return value.split('-').map((num) => parseInt(num))\n\n case 'edition':\n case 'issue':\n case 'volume':\n value = parseInt(value)\n return !isNaN(value) ? value : -Infinity\n\n default:\n return value || -Infinity\n }\n}\n\n/**\n * Compares props\n *\n * @access private\n * @method compareProp\n *\n * @param {module:@citation-js/core~CSL} entryA\n * @param {module:@citation-js/core~CSL} entryB\n * @param {String} prop - The prop in question. Prepend ! to sort the other way around.\n * @param {Boolean} flip - Override flip\n *\n * @return {Number} positive for a > b, negative for b > a, zero for a = b (flips if prop has !)\n */\nfunction compareProp(entryA, entryB, prop, flip = /^!/.test(prop)) {\n prop = prop.replace(/^!/, '')\n const a = getComparisonValue(entryA, prop)\n const b = getComparisonValue(entryB, prop)\n\n return (flip ? -1 : 1) * (a > b ? 1 : a < b ? -1 : 0)\n}\n\n/**\n * Generates a sorting callback based on props.\n *\n * @access private\n * @method getSortCallback\n *\n * @param {...String} props - How to sort\n *\n * @return {module:@citation-js/core.Cite#sort~sort} sorting callback\n */\nfunction getSortCallback(...props) {\n return (a, b) => {\n const keys = props.slice()\n let output = 0\n\n while (!output && keys.length) {\n output = compareProp(a, b, keys.shift())\n }\n\n return output\n }\n}\n\n/**\n * Sort the dataset\n *\n * @memberof module:@citation-js/core.Cite#\n *\n * @param {module:@citation-js/core.Cite#sort~sort|Array<String>} [method=[]] - How to sort\n * @param {Boolean} [log=false] - Show this call in the log\n *\n * @return {module:@citation-js/core.Cite} The updated parent object\n */\nfunction sort(method = [], log) {\n if (log) {\n this.save()\n }\n\n this.data.sort(typeof method === 'function' ? method : getSortCallback(...method, 'label'))\n\n return this\n}\n\nexport { sort }\n","// @ts-nocheck\n/**\n * @namespace output\n * @memberof module:@citation-js/core.plugins\n */\n\nimport Register from '../util/register.js'\n\n/**\n * @callback module:@citation-js/core.plugins.output~formatter\n * @param {Array<module:@citation-js/core~InputData>} data\n * @return {String} output\n */\n\n/**\n * @typedef module:@citation-js/core.plugins.output~formatterName\n * @type String\n */\n\n/**\n * Validate input arguments\n *\n * @access private\n * @memberof module:@citation-js/core.plugins.output\n *\n * @param {String} name - output format name\n * @param {module:@citation-js/core.plugins.output~formatter} formatter - outputting function\n * @throws {TypeError} Invalid output format name\n * @throws {TypeError} Invalid formatter\n */\nfunction validate(name, formatter) {\n if (typeof name !== 'string') {\n throw new TypeError(`Invalid output format name, expected string, got ${typeof name}`)\n } else if (typeof formatter !== 'function') {\n throw new TypeError(`Invalid formatter, expected function, got ${typeof formatter}`)\n }\n}\n\n/**\n * @access public\n * @memberof module:@citation-js/core.plugins.output\n * @constant register\n *\n * @type module:@citation-js/core.util.Register\n */\nexport const register = new Register()\n\n/**\n * Add output plugin.\n *\n * @access public\n * @memberof module:@citation-js/core.plugins.output\n * @method add\n *\n * @param {module:@citation-js/core.plugins.output~formatterName} name - output format name\n * @param {module:@citation-js/core.plugins.output~formatter} formatter - outputting function\n * @throws {TypeError} validation errors\n */\nexport function add(name, formatter) {\n validate(name, formatter)\n\n register.set(name, formatter)\n}\n\n/**\n * Remove output plugin.\n *\n * @access public\n * @memberof module:@citation-js/core.plugins.output\n * @method remove\n *\n * @param {module:@citation-js/core.plugins.output~formatterName} name - output format name\n */\nexport function remove(name) {\n register.remove(name)\n}\n\n/**\n * Check if output plugin exists.\n *\n * @access public\n * @memberof module:@citation-js/core.plugins.output\n * @method has\n *\n * @param {module:@citation-js/core.plugins.output~formatterName} name - output format name\n * @return {Boolean} register has plugin\n */\nexport function has(name) {\n return register.has(name)\n}\n\n/**\n * List output plugins.\n *\n * @access public\n * @memberof module:@citation-js/core.plugins.output\n * @method list\n *\n * @return {Array<String>} list of plugins\n */\nexport function list() {\n return register.list()\n}\n\n/**\n * Call output plugin\n *\n * @access public\n * @memberof module:@citation-js/core.plugins.output\n * @method format\n *\n * @param {module:@citation-js/core.plugins.output~formatterName} name - output format name\n * @param {Array<module:@citation-js/core~CSL>} data - all entries\n * @param {...*} options - output options\n */\nexport function format(name, data, ...options) {\n if (!register.has(name)) {\n throw new Error(`Output format \"${name}\" unavailable`)\n }\n return register.get(name)(data, ...options)\n}\n","// @ts-nocheck\nimport { validateOutputOptions as validate } from './validate.js'\nimport { format as formatData } from '../plugins/output.js'\nimport { clean as parseCsl } from '../plugins/input/csl.js'\n\n/**\n * Get a list of the data entry IDs, in the order of that list\n *\n * @access public\n * @method getIds\n * @memberof module:@citation-js/core.Cite#\n *\n * @return {Array<String>} List of IDs\n */\nexport function getIds() {\n return this.data.map((entry) => entry.id)\n}\n\n/**\n * Get formatted data from your object.\n *\n * @access public\n * @method format\n * @memberof module:@citation-js/core.Cite#\n *\n * @param {String} format - format module name\n * @param {...*} options - module options (see relevant documentation)\n *\n * @return {String|Array<Object>} formatted data\n */\nexport function format(format, ...options) {\n return formatData(format, parseCsl(this.data), ...options)\n}\n\n/**\n * Get formatted data from your object.\n *\n * @access public\n * @method get\n * @memberof module:@citation-js/core.Cite#\n * @tutorial output\n * @deprecated use {@link module:@citation-js/core.Cite#format}\n *\n * @param {module:@citation-js/core~OutputOptions} [options={}] - Output options\n *\n * @return {String|Array<Object>} The formatted data\n */\n/* istanbul ignore next: deprecated */\nexport function get(options = {}) {\n validate(options)\n\n const parsedOptions = Object.assign({}, this.defaultOptions, this._options.output, options)\n\n const { type, style } = parsedOptions\n const [styleType, styleFormat] = style.split('-')\n const newStyle =\n styleType === 'citation' ? 'bibliography' : styleType === 'csl' ? 'data' : styleType\n const newType = type === 'string' ? 'text' : type === 'json' ? 'object' : type\n\n let formatOptions\n\n switch (newStyle) {\n case 'bibliography': {\n const { lang, append, prepend } = parsedOptions\n formatOptions = { template: styleFormat, lang, format: newType, append, prepend }\n break\n }\n\n case 'data':\n case 'bibtex':\n case 'bibtxt':\n case 'ndjson':\n case 'ris':\n formatOptions = { type: newType }\n break\n\n default:\n throw new Error(`Invalid style \"${newStyle}\"`)\n }\n\n const result = this.format(newStyle, Object.assign(formatOptions, options._newOptions))\n\n const { format } = parsedOptions\n if (\n format === 'real' &&\n newType === 'html' &&\n typeof document !== 'undefined' &&\n typeof document.createElement === 'function'\n ) {\n const tmp = document.createElement('div')\n tmp.innerHTML = result\n return tmp.firstChild\n } else if (format === 'string' && typeof result === 'object') {\n return JSON.stringify(result)\n } else {\n return result\n }\n}\n","// @ts-nocheck\n/**\n * @callback module:@citation-js/core.Cite~asyncCallback\n * @param {Cite} data - Cite object\n */\n\n/**\n * @access public\n * @memberof module:@citation-js/core.Cite\n *\n * @param {module:@citation-js/core~InputData} data - input data\n * @param {module:@citation-js/core~InputOptions} [options={}] - cite options\n * @param {module:@citation-js/core.Cite~asyncCallback} [callback] - if not given, function returns promise.\n *\n * @return {Promise<module:@citation-js/core.Cite>} if callback is omitted, returns a promise\n */\nfunction async(data, options, callback) {\n if (typeof options === 'function' && !callback) {\n callback = options\n options = undefined\n }\n\n const promise = new this().setAsync(data, options)\n\n if (typeof callback === 'function') {\n promise.then(callback)\n return undefined\n } else {\n return promise\n }\n}\n\nexport default async\n","//@ts-nocheck\nimport * as log from './log.js'\nimport * as options from './options.js'\nimport * as set from './set.js'\nimport * as sort from './sort.js'\nimport * as get from './get.js'\nimport * as staticMethods from './static.js'\n\n/**\n * Create a `Cite` object with almost any kind of data, and manipulate it with its default methods.\n *\n * @access public\n * @constructor Cite\n * @memberof module:@citation-js/core\n *\n * @param {module:@citation-js/core~InputData} data - Input data\n * @param {module:@citation-js/core~InputOptions} [options={}] - Input options\n */\nfunction Cite(data, options = {}) {\n // Making it Scope-Safe\n if (!(this instanceof Cite)) {\n return new Cite(data, options)\n }\n\n /**\n * The default options for the output. See [input options](../#cite.in.options)\n *\n * @access protected\n * @memberof module:@citation-js/core.Cite#\n *\n * @var {module:@citation-js/core~InputOptions} _options\n */\n this._options = options\n\n /**\n * The saved-images-log\n *\n * @access protected\n * @memberof module:@citation-js/core.Cite#\n *\n * @var {Array<Array<String>>} log\n */\n this.log = []\n\n /**\n * The parsed data\n *\n * @access protected\n * @memberof module:@citation-js/core.Cite#\n *\n * @var {Array<module:@citation-js/core~CSL>} data\n */\n this.data = []\n\n // Modified citation-js to accept an array of objects\n // Use add instead of set to retain previous data\n data.forEach((d) => {\n this.add(d, options)\n })\n // this.set(data, options)\n this.options(options)\n\n return this\n}\n\nObject.assign(Cite.prototype, log, options, set, sort, get)\n\nCite.prototype[Symbol.iterator] = function* () {\n yield* this.data\n}\n\nObject.assign(Cite, staticMethods)\n\nexport default Cite\n","// @ts-nocheck\n/**\n * @namespace dict\n * @memberof module:@citation-js/core.plugins\n */\n\nimport Register from '../util/register.js'\n\n/**\n * @typedef module:@citation-js/core.plugins.dict~dictName\n * @type String\n */\n\n/**\n * @typedef module:@citation-js/core.plugins.dict~dict\n * @type Object<module:@citation-js/core.plugins.dict~entryName,module:@citation-js/core.plugins.dict~dictEntry>\n */\n\n/**\n * @typedef module:@citation-js/core.plugins.dict~entryName\n * @type String\n */\n\n/**\n * @typedef module:@citation-js/core.plugins.dict~dictEntry\n * @type Array<String>\n */\n\n/**\n * Validate input arguments\n *\n * @access private\n * @memberof module:@citation-js/core.plugins.dict\n *\n * @param {module:@citation-js/core.plugins.dict~dictName} name - output format name\n * @param {module:@citation-js/core.plugins.dict~dict} formatter - outputting function\n * @throws {TypeError} Invalid output format name\n * @throws {TypeError} Invalid formatter\n */\nfunction validate(name, dict) {\n if (typeof name !== 'string') {\n throw new TypeError(`Invalid dict name, expected string, got ${typeof name}`)\n } else if (typeof dict !== 'object') {\n throw new TypeError(`Invalid dict, expected object, got ${typeof dict}`)\n }\n\n for (const entryName in dict) {\n const entry = dict[entryName]\n if (!Array.isArray(entry) || entry.some((part) => typeof part !== 'string')) {\n throw new TypeError(`Invalid dict entry \"${entryName}\", expected array of strings`)\n }\n }\n}\n\n/**\n * @access public\n * @memberof module:@citation-js/core.plugins.dict\n * @constant register\n *\n * @type module:@citation-js/core.util.Register\n */\nexport const register = new Register({\n html: {\n bibliographyContainer: ['<div class=\"csl-bib-body\">', '</div>'],\n entry: ['<div class=\"csl-entry\">', '</div>'],\n list: ['<ul style=\"list-style-type:none\">', '</ul>'],\n listItem: ['<li>', '</li>'],\n },\n text: {\n bibliographyContainer: ['', '\\n'],\n entry: ['', '\\n'],\n list: ['\\n', ''],\n listItem: ['\\t', '\\n'],\n },\n})\n\n/**\n * Add dictionary to register. Can be used by output plugins.\n *\n * @todo docs\n *\n * @access public\n * @memberof module:@citation-js/core.plugins.dict\n * @method add\n *\n * @param {module:@citation-js/core.plugins.dict~dictName} name - dictionary name\n * @param {module:@citation-js/core.plugins.dict~dict} dict - dictionary data\n * @throws {TypeError} argument validation error\n */\nexport function add(name, dict) {\n validate(name, dict)\n register.set(name, dict)\n}\n\n/**\n * Remove dictionary.\n *\n * @access public\n * @memberof module:@citation-js/core.plugins.dict\n * @method remove\n *\n * @param {module:@citation-js/core.plugins.dict~dictName} name - output format name\n */\nexport function remove(name) {\n register.remove(name)\n}\n\n/**\n * Check if dictionary plugin exists.\n *\n * @access public\n * @memberof module:@citation-js/core.plugins.dict\n * @method has\n *\n * @param {module:@citation-js/core.plugins.dict~dictName} name - output format name\n * @return {Boolean} register has plugin\n */\nexport function has(name) {\n return register.has(name)\n}\n\n/**\n * List dictionary plugins.\n *\n * @access public\n * @memberof module:@citation-js/core.plugins.dict\n * @method list\n *\n * @return {Array<String>} list of plugins\n */\nexport function list() {\n return register.list()\n}\n\n/**\n * Get dictionary data.\n *\n * @access public\n * @memberof module:@citation-js/core.plugins.dict\n * @method get\n *\n * @param {module:@citation-js/core.plugins.dict~dictName} name - output format name\n * @return {module:@citation-js/core.plugins.dict~dict} dictionary data\n */\nexport function get(name) {\n if (!register.has(name)) {\n throw new Error(`Dict \"${name}\" unavailable`)\n }\n return register.get(name)\n}\n\n/**\n * Object containing HTML strings for building JSON and BibTeX. Made to match citeproc, for compatibility.\n *\n * @access protected\n * @memberof module:@citation-js/core.plugins.dict\n * @deprecated use the new formatting dicts: {@link module:@citation-js/core.plugins.dict}\n */\nexport const htmlDict = {\n wr_start: '<div class=\"csl-bib-body\">',\n wr_end: '</div>',\n en_start: '<div class=\"csl-entry\">',\n en_end: '</div>',\n ul_start: '<ul style=\"list-style-type:none\">',\n ul_end: '</ul>',\n li_start: '<li>',\n li_end: '</li>',\n}\n\n/**\n * Object containing text strings for building JSON and BibTeX. Made to match citeproc, for compatibility.\n *\n * @access protected\n * @memberof module:@citation-js/core.plugins.dict\n * @deprecated use the new formatting dicts: {@link module:@citation-js/core.plugins.dict}\n */\nexport const textDict = {\n wr_start: '',\n wr_end: '\\n',\n en_start: '',\n en_end: '\\n',\n ul_start: '\\n',\n ul_end: '',\n li_start: '\\t',\n li_end: '\\n',\n}\n","// @ts-nocheck\n/**\n * @namespace config\n * @memberof module:@citation-js/core.plugins\n */\n\nconst configs = {}\n\n/**\n * @access public\n * @method add\n * @memberof module:@citation-js/core.plugins.config\n * @param {module:@citation-js/core.plugins~pluginRef} ref - plugin reference/name\n * @param {Object} config\n */\nexport function add(ref, config) {\n configs[ref] = config\n}\n\n/**\n * @access public\n * @method get\n * @memberof module:@citation-js/core.plugins.config\n * @param {module:@citation-js/core.plugins~pluginRef} ref - plugin reference/name\n * @return {Object} config\n */\nexport function get(ref) {\n return configs[ref]\n}\n\n/**\n * @access public\n * @method has\n * @memberof module:@citation-js/core.plugins.config\n * @param {module:@citation-js/core.plugins~pluginRef} ref - plugin reference/name\n * @return {Boolean}\n */\nexport function has(ref) {\n return Object.prototype.hasOwnProperty.call(configs, ref)\n}\n\n/**\n * @access public\n * @method remove\n * @memberof module:@citation-js/core.plugins.config\n * @param {module:@citation-js/core.plugins~pluginRef} ref - plugin reference/name\n */\nexport function remove(ref) {\n delete configs[ref]\n}\n\n/**\n * @access public\n * @method list\n * @memberof module:@citation-js/core.plugins.config\n * @return {Array<module:@citation-js/core.plugins~pluginRef>} list of available plugin configs\n */\nexport function list() {\n return Object.keys(configs)\n}\n","// @ts-nocheck\n/**\n * @namespace plugins\n * @memberof module:@citation-js/core\n */\n\nimport * as input from './input/index.js'\nimport * as output from './output.js'\nimport * as dict from './dict.js'\nimport * as config from './config.js'\n\nconst registers = {\n input,\n output,\n dict,\n config,\n}\n\nconst indices = {}\n\n/**\n * @access public\n * @method add\n * @memberof module:@citation-js/core.plugins\n * @param {module:@citation-js/core.plugins~pluginRef} ref - plugin reference/name\n * @param {module:@citation-js/core.plugins~plugins} [plugins={}]\n */\nexport function add(ref, plugins = {}) {\n const mainIndex = (indices[ref] = {})\n\n for (const type in plugins) {\n if (type === 'config') {\n mainIndex.config = { [ref]: plugins.config }\n registers.config.add(ref, plugins.config)\n continue\n }\n\n const typeIndex = (mainIndex[type] = {})\n const typePlugins = plugins[type]\n\n for (const name in typePlugins) {\n const typePlugin = typePlugins[name]\n\n typeIndex[name] = true\n registers[type].add(name, typePlugin)\n }\n }\n}\n\n/**\n * @access public\n * @method remove\n * @memberof module:@citation-js/core.plugins\n * @param {module:@citation-js/core.plugins~pluginRef} ref - plugin reference/name\n */\nexport function remove(ref) {\n const mainIndex = indices[ref]\n\n for (const type in mainIndex) {\n const typeIndex = mainIndex[type]\n\n for (const name in typeIndex) {\n registers[type].remove(name)\n }\n }\n\n delete indices[ref]\n}\n\n/**\n * @access public\n * @method has\n * @memberof module:@citation-js/core.plugins\n * @param {module:@citation-js/core.plugins~pluginRef} ref - plugin reference/name\n * @returns {Boolean} plugin is registered\n */\nexport function has(ref) {\n return ref in indices\n}\n\n/**\n * @access public\n * @method list\n * @memberof module:@citation-js/core.plugins\n * @returns {Array<module:@citation-js/core.plugins~pluginRef>} list of registered plugins\n */\nexport function list() {\n return Object.keys(indices)\n}\n\n/**\n * @typedef {String} module:@citation-js/core.plugins~pluginRef\n */\n\n/**\n * @typedef {Object} module:@citation-js/core.plugins~plugins\n * @property {Object<module:@citation-js/core.plugins.input~format,module:@citation-js/core.plugins.input~parsers>} input\n * @property {Object<module:@citation-js/core.plugins.output~formatterName,module:@citation-js/core.plugins.output~formatter>} output\n * @property {Object<module:@citation-js/core.plugins.dict~dictName,module:@citation-js/core.plugins.dict~dict>} dict\n * @property {Object} config\n */\n\nexport { input, output, dict, config }\n","export function parse() {\n return []\n}\n","// @ts-nocheck\n/**\n * @module input/other\n */\n\nimport logger from '../../logger.js'\n\n/**\n *\n * @access private\n * @constant substituters\n * @default\n */\nconst substituters = [\n [/((?:\\[|:|,)\\s*)'((?:\\\\'|[^'])*?[^\\\\])?'(?=\\s*(?:\\]|}|,))/g, '$1\"$2\"'],\n [\n /((?:(?:\"|]|}|\\/[gmiuys]|\\.|(?:\\d|\\.|-)*\\d)\\s*,|{)\\s*)(?:\"([^\":\\n]+?)\"|'([^\":\\n]+?)'|([^\":\\n]+?))(\\s*):/g,\n '$1\"$2$3$4\"$5:',\n ],\n]\n\n/**\n * Parse (in)valid JSON\n *\n * @access protected\n * @method parseJSON\n *\n * @param {String} str - The input string\n *\n * @return {Object|Array<Object>|Array<String>} The parsed object\n */\nfunction parseJSON(str) {\n if (typeof str !== 'string') {\n return JSON.parse(str)\n }\n\n try {\n return JSON.parse(str)\n } catch (e) {\n logger.debug('[plugin-common]', 'Invalid JSON, switching to experimental parser')\n substituters.forEach(([regex, subst]) => {\n str = str.replace(regex, subst)\n })\n return JSON.parse(str)\n }\n}\n\nexport { parseJSON as parse, parseJSON as default }\n","export /* istanbul ignore next: not testable in Node */ function parse(input) {\n return input.val() || input.text() || input.html()\n}\n","export function parse(input) {\n return input.value || input.textContent\n}\n","// @ts-nocheck\n/* global jQuery, HTMLElement */\n\n/**\n * @module input/other\n */\n\nimport * as empty from './empty.js'\nimport * as json from './json.js'\nimport * as jquery from './jquery.js'\nimport * as html from './html.js'\n\nexport const ref = '@else'\nexport const parsers = { empty, json, jquery, html }\nexport const formats = {\n '@empty/text': {\n parse: empty.parse,\n parseType: {\n dataType: 'String',\n predicate: (input) => input === '',\n },\n },\n '@empty/whitespace+text': {\n parse: empty.parse,\n parseType: {\n dataType: 'String',\n predicate: /^\\s+$/,\n },\n },\n '@empty': {\n parse: empty.parse,\n parseType: {\n dataType: 'Primitive',\n predicate: (input) => input == null,\n },\n },\n '@else/json': {\n parse: json.parse,\n parseType: {\n dataType: 'String',\n predicate: /^\\s*(\\{[\\S\\s]*\\}|\\[[\\S\\s]*\\])\\s*$/,\n },\n },\n '@else/url': {\n parseType: {\n dataType: 'String',\n predicate: /^https?:\\/\\/(([\\w-]+\\.)*[\\w-]+)(:\\d+)?(\\/[^?/]*)*(\\?[^#]*)?(#.*)?$/i,\n },\n },\n '@else/jquery': {\n parse: jquery.parse,\n parseType: {\n dataType: 'ComplexObject',\n /* istanbul ignore next: not testable in Node */\n predicate(input) {\n return typeof jQuery !== 'undefined' && input instanceof jQuery\n },\n },\n },\n '@else/html': {\n parse: html.parse,\n parseType: {\n dataType: 'ComplexObject',\n /* istanbul ignore next: not testable in Node */\n predicate(input) {\n return typeof HTMLElement !== 'undefined' && input instanceof HTMLElement\n },\n },\n },\n}\n","// @ts-nocheck\n/**\n * @module output/json\n */\n\nimport * as plugins from '../../plugins/index.js'\nimport * as util from '../../util/index.js'\nimport logger from '../../logger.js'\n\n/**\n * Append commas to every item but the last. Should unfortunately, probably be a utility.\n *\n * @access private\n *\n * @param {String} item\n * @param {Number} index\n * @param {Array<String>} array\n *\n * @return {String} modified item\n */\nfunction appendCommas(string, index, array) {\n return string + (index < array.length - 1 ? ',' : '')\n}\n\n/**\n * Convert a JSON array or object to HTML.\n *\n * @access private\n *\n * @param {Object|Array} src - The data\n * @param {Cite.get.dict~dict} dict - Dictionary\n *\n * @return {String} string form\n */\nfunction getJsonObject(src, dict) {\n const isArray = Array.isArray(src)\n let entries\n\n if (isArray) {\n entries = src.map((entry) => getJsonValue(entry, dict))\n } else {\n entries = Object.keys(src)\n // remove values that cannot be stringified, as is custom\n .filter((prop) => JSON.stringify(src[prop]))\n .map((prop) => `\"${prop}\": ${getJsonValue(src[prop], dict)}`)\n }\n\n entries = entries.map(appendCommas).map((entry) => dict.listItem.join(entry))\n entries = dict.list.join(entries.join(''))\n\n return isArray ? `[${entries}]` : `{${entries}}`\n}\n\n/**\n * Convert JSON to HTML.\n *\n * @access private\n *\n * @param {*} src - The data\n * @param {Cite.get.dict~dict} dict - Dictionary\n *\n * @return {String} string form\n */\nfunction getJsonValue(src, dict) {\n if (typeof src === 'object' && src !== null) {\n if (src.length === 0) {\n return '[]'\n } else if (Object.keys(src).length === 0) {\n return '{}'\n } else {\n return getJsonObject(src, dict)\n }\n } else {\n return JSON.stringify(src)\n }\n}\n\n/**\n * Get a JSON string from CSL\n *\n * @access protected\n * @method getJson\n *\n * @param {Array<CSL>} src - Input CSL\n * @param {Cite.get.dict~dict} dict - Dictionary\n *\n * @return {String} JSON string\n */\nfunction getJson(src, dict) {\n let entries = src.map((entry) => getJsonObject(entry, dict))\n entries = entries.map(appendCommas).map((entry) => dict.entry.join(entry))\n entries = entries.join('')\n\n return dict.bibliographyContainer.join(`[${entries}]`)\n}\n\n/**\n * Get a JSON HTML string from CSL\n *\n * @access protected\n * @method getJsonWrapper\n * @deprecated use the generalised method: {@link module:output/json~getJson}\n *\n * @param {Array<CSL>} src - Input CSL\n *\n * @return {String} JSON HTML string\n */\nexport /* istanbul ignore next: deprecated */ function getJsonWrapper(src) {\n return getJson(src, plugins.dict.get('html'))\n}\n\nexport default {\n data(data, { type, format = type || 'text', version = '1.0.2' } = {}) {\n if (version < '1.0.2') {\n data = util.downgradeCsl(data)\n }\n\n if (format === 'object') {\n return util.deepCopy(data)\n } else if (format === 'text') {\n return JSON.stringify(data, null, 2)\n } else {\n logger.warn(\n '[core]',\n 'This feature (JSON output with special formatting) is unstable. See https://github.com/larsgw/citation.js/issues/144'\n )\n return getJson(data, plugins.dict.get(format))\n }\n },\n ndjson(data, { version = '1.0.2' } = {}) {\n if (version < '1.0.2') {\n data = util.downgradeCsl(data)\n }\n\n return data.map((entry) => JSON.stringify(entry)).join('\\n')\n },\n}\n","import json from './json.js'\nimport label from './label.js'\n\nexport default Object.assign({}, json, label)\n","import * as plugins from '../plugins/index.js'\nimport { ref, formats as input } from './input/index.js'\nimport output from './output/index.js'\nplugins.add(ref, {\n input,\n output,\n})\n","// @ts-nocheck\nimport { parse as parseDate } from '@citation-js/date'\nimport { parse as parseName } from '@citation-js/name'\n\nfunction nameProps(person) {\n const { firstname, lastname, firstName: given = firstname, lastName: family = lastname } = person\n\n if (given && family) {\n return { given, family }\n } else if (person.name) {\n return parseName(person.name)\n }\n}\n\nconst identifiers = [\n 'PMID',\n 'PMCID',\n 'DOI',\n 'ISBN',\n // 'URL' is actually the URL of the record collection, if I understand it correctly,\n // and not of the record. Otherwise, it should be included.\n]\n\nconst journalIdentifiers = ['ISSN']\n\nfunction idProps(input, identifiers) {\n const output = {}\n\n for (const prop in input) {\n const upperCaseProp = prop.toUpperCase()\n\n if (identifiers.includes(upperCaseProp)) {\n output[upperCaseProp] = input[prop]\n }\n }\n\n if (input.identifier) {\n for (let { id, type = '' } of input.identifier) {\n type = type.toUpperCase()\n if (identifiers.includes(type)) {\n output[type] = id\n }\n }\n }\n\n return output\n}\n\n// copied from BibTeX, as BibJSON is based on BibTeX\nconst typeMap = {\n article: 'article',\n book: 'book',\n booklet: 'book',\n proceedings: 'book',\n mastersthesis: 'thesis',\n inbook: 'chapter',\n incollection: 'chapter',\n conference: 'paper-conference',\n inproceedings: 'paper-conference',\n manual: 'report',\n misc: 'document',\n online: 'website',\n patent: 'patent',\n phdthesis: 'thesis',\n techreport: 'report',\n unpublished: 'manuscript',\n}\n\nfunction quickscrapeSpecificProps() {\n return { type: 'article-journal' }\n}\n\nfunction generalProps(input) {\n const output = {\n type: typeMap[input.type] || 'document',\n title: input.title,\n }\n\n if (input.author) {\n output.author = input.author.map(nameProps).filter(Boolean)\n }\n if (input.editor) {\n output.editor = input.editor.map(nameProps).filter(Boolean)\n }\n if (input.reviewer) {\n if (input.author) {\n output['reviewed-author'] = output.author\n }\n output.author = input.reviewer.map(nameProps).filter(Boolean)\n }\n\n /* istanbul ignore next: no examples found */\n if (Array.isArray(input.keywords)) {\n output.keyword = input.keywords.join()\n } else if (input.keywords) {\n output.keyword = input.keywords\n }\n\n if (input.publisher) {\n output.publisher = input.publisher.name || input.publisher\n }\n\n if (input.date && input.date.published) {\n output.issued = parseDate(input.date.published)\n } else if (input.year) {\n output.issued = { 'date-parts': [[+input.year]] }\n }\n if (input.date && input.date.submitted) {\n output.submitted = parseDate(input.date.submitted)\n }\n\n if (input.journal) {\n const journal = input.journal\n if (journal.name) {\n output['container-title'] = journal.name\n }\n if (journal.volume) {\n output.volume = journal.volume\n }\n if (journal.issue) {\n output.issue = journal.issue\n }\n\n Object.assign(output, idProps(journal, journalIdentifiers))\n\n if (journal.firstpage) {\n output['page-first'] = journal.firstpage\n }\n /* istanbul ignore else: no examples found */\n if (journal.pages) {\n output.page = journal.pages.replace('--', '-')\n } else if (journal.firstpage && journal.lastpage) {\n output.page = journal.firstpage + '-' + journal.lastpage\n }\n }\n\n if (input.link && typeof input.link[0] === 'object') {\n output.URL = input.link[0].url\n }\n\n Object.assign(output, idProps(input, identifiers))\n\n if (input.cid) {\n output.id = input.cid\n } else if (output.DOI) {\n output.id = output.DOI\n }\n\n return output\n}\n\n/**\n * Parse ContentMine quickscrape data\n *\n * @access protected\n * @memberof module:@citation-js/plugin-bibjson.parsers.json\n * @param {Object} data - The input data\n * @return {Array<CSL>} The formatted input data\n */\nconst parseContentMine = function (data) {\n return Object.assign(generalProps(data), quickscrapeSpecificProps(data))\n}\n\n/**\n * Parse BibJSON data\n *\n * @access protected\n * @memberof module:@citation-js/plugin-bibjson.parsers.json\n * @param {Object} data - The input data\n * @return {Array<CSL>} The formatted input data\n */\nconst parseBibJson = function (data) {\n return generalProps(data)\n}\n\nexport { parseContentMine as quickscrapeRecord, parseBibJson as record }\n","/**\n * ## Formats\n *\n * ### BibJSON\n *\n * This plugin adds input support for the [BibJSON format](http://okfnlabs.org/bibjson/), with three variants:\n *\n * * collections, where the records are extracted and parsed\n * * records, which are parsed\n * * records of the [quickscrape](https://github.com/ContentMine/quickscrape) variant, which are parsed\n *\n * @module module:@citation-js/plugin-bibjson\n */\n\nimport * as json from './json.js'\nimport { plugins } from '../core/index.js'\n\nconst scraperLinks = ['fulltext_html', 'fulltext_xml', 'fulltext_pdf']\nconst authorNameFields = ['name', 'lastname', 'lastName', 'firstname', 'firstName']\n\n/**\n * @constant {module:@citation-js/core.plugins~pluginRef} ref\n * @memberof module:@citation-js/plugin-bibjson\n * @default '@bibjson'\n */\nconst ref = '@bibjson'\n\n/**\n * @access protected\n * @namespace parsers\n * @memberof module:@citation-js/plugin-bibjson\n */\nconst parsers = {\n /**\n * @access protected\n * @namespace json\n * @memberof module:@citation-js/plugin-bibjson.parsers\n */\n json,\n}\n\n/**\n * @namespace formats\n * @type module:@citation-js/core.plugins.input~format,module:@citation-js/core.plugins.input~parsers\n * @memberof module:@citation-js/plugin-bibjson\n */\nconst formats = {\n /**\n * Object with quickscrape-style BibJSON.\n *\n * @type module:@citation-js/core.plugins.input~parsers\n * @memberof module:@citation-js/plugin-bibjson.formats\n * @property {module:@citation-js/core.plugins.input~dataParser} parse\n * @property {module:@citation-js/core.plugins.input~typeParser} parseType\n */\n '@bibjson/quickscrape+record+object': {\n parse: json.quickscrapeRecord,\n parseType: {\n propertyConstraint: {\n props: 'link',\n value(links) {\n return scraperLinks.some((link) => links.find(({ type }) => type === link))\n },\n },\n extends: '@bibjson/record+object',\n },\n },\n /**\n * Object with BibJSON.\n *\n * @type module:@citation-js/core.plugins.input~parsers\n * @memberof module:@citation-js/plugin-bibjson.formats\n * @property {module:@citation-js/core.plugins.input~dataParser} parse\n * @property {module:@citation-js/core.plugins.input~typeParser} parseType\n */\n '@bibjson/record+object': {\n parse: json.record,\n parseType: {\n dataType: 'SimpleObject',\n propertyConstraint: [\n {\n props: 'title',\n },\n {\n props: ['author', 'editor'],\n match: 'some',\n value(authors) {\n return (\n Array.isArray(authors) &&\n authors[0] &&\n authorNameFields.some((field) => field in authors[0])\n )\n },\n },\n ],\n },\n },\n /**\n * Array of {@link module:@citation-js/plugin-bibjson.formats.\"@bibjson/record+object\"|BibJSON objects}.\n *\n * @type module:@citation-js/core.plugins.input~parsers\n * @memberof module:@citation-js/plugin-bibjson.formats\n * @property {module:@citation-js/core.plugins.input~dataParser} parse\n * @property {module:@citation-js/core.plugins.input~typeParser} parseType\n */\n '@bibjson/collection+object': {\n parse(collection) {\n return collection.records\n },\n parseType: {\n dataType: 'SimpleObject',\n propertyConstraint: [\n {\n props: 'metadata',\n value(metadata) {\n return 'collection' in metadata\n },\n },\n {\n props: 'records',\n value(records) {\n return Array.isArray(records)\n },\n },\n ],\n },\n },\n}\n\nplugins.add(ref, {\n input: formats,\n})\n\nexport { ref, parsers, formats }\n","(function(root, factory) {\n if (typeof define === 'function' && define.amd) {\n define([], factory) /* global define */\n } else if (typeof module === 'object' && module.exports) {\n module.exports = factory()\n } else {\n root.moo = factory()\n }\n}(this, function() {\n 'use strict';\n\n var hasOwnProperty = Object.prototype.hasOwnProperty\n var toString = Object.prototype.toString\n var hasSticky = typeof new RegExp().sticky === 'boolean'\n\n /***************************************************************************/\n\n function isRegExp(o) { return o && toString.call(o) === '[object RegExp]' }\n function isObject(o) { return o && typeof o === 'object' && !isRegExp(o) && !Array.isArray(o) }\n\n function reEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&')\n }\n function reGroups(s) {\n var re = new RegExp('|' + s)\n return re.exec('').length - 1\n }\n function reCapture(s) {\n return '(' + s + ')'\n }\n function reUnion(regexps) {\n if (!regexps.length) return '(?!)'\n var source = regexps.map(function(s) {\n return \"(?:\" + s + \")\"\n }).join('|')\n return \"(?:\" + source + \")\"\n }\n\n function regexpOrLiteral(obj) {\n if (typeof obj === 'string') {\n return '(?:' + reEscape(obj) + ')'\n\n } else if (isRegExp(obj)) {\n // TODO: consider /u support\n if (obj.ignoreCase) throw new Error('RegExp /i flag not allowed')\n if (obj.global) throw new Error('RegExp /g flag is implied')\n if (obj.sticky) throw new Error('RegExp /y flag is implied')\n if (obj.multiline) throw new Error('RegExp /m flag is implied')\n return obj.source\n\n } else {\n throw new Error('Not a pattern: ' + obj)\n }\n }\n\n function pad(s, length) {\n if (s.length > length) {\n return s\n }\n return Array(length - s.length + 1).join(\" \") + s\n }\n\n function lastNLines(string, numLines) {\n var position = string.length\n var lineBreaks = 0;\n while (true) {\n var idx = string.lastIndexOf(\"\\n\", position - 1)\n if (idx === -1) {\n break;\n } else {\n lineBreaks++\n }\n position = idx\n if (lineBreaks === numLines) {\n break;\n }\n if (position === 0) {\n break;\n }\n }\n var startPosition = \n lineBreaks < numLines ?\n 0 : \n position + 1\n return string.substring(startPosition).split(\"\\n\")\n }\n\n function objectToRules(object) {\n var keys = Object.getOwnPropertyNames(object)\n var result = []\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]\n var thing = object[key]\n var rules = [].concat(thing)\n if (key === 'include') {\n for (var j = 0; j < rules.length; j++) {\n result.push({include: rules[j]})\n }\n continue\n }\n var match = []\n rules.forEach(function(rule) {\n if (isObject(rule)) {\n if (match.length) result.push(ruleOptions(key, match))\n result.push(ruleOptions(key, rule))\n match = []\n } else {\n match.push(rule)\n }\n })\n if (match.length) result.push(ruleOptions(key, match))\n }\n return result\n }\n\n function arrayToRules(array) {\n var result = []\n for (var i = 0; i < array.length; i++) {\n var obj = array[i]\n if (obj.include) {\n var include = [].concat(obj.include)\n for (var j = 0; j < include.length; j++) {\n result.push({include: include[j]})\n }\n continue\n }\n if (!obj.type) {\n throw new Error('Rule has no type: ' + JSON.stringify(obj))\n }\n result.push(ruleOptions(obj.type, obj))\n }\n return result\n }\n\n function ruleOptions(type, obj) {\n if (!isObject(obj)) {\n obj = { match: obj }\n }\n if (obj.include) {\n throw new Error('Matching rules cannot also include states')\n }\n\n // nb. error and fallback imply lineBreaks\n var options = {\n defaultType: type,\n lineBreaks: !!obj.error || !!obj.fallback,\n pop: false,\n next: null,\n push: null,\n error: false,\n fallback: false,\n value: null,\n type: null,\n shouldThrow: false,\n }\n\n // Avoid Object.assign(), so we support IE9+\n for (var key in obj) {\n if (hasOwnProperty.call(obj, key)) {\n options[key] = obj[key]\n }\n }\n\n // type transform cannot be a string\n if (typeof options.type === 'string' && type !== options.type) {\n throw new Error(\"Type transform cannot be a string (type '\" + options.type + \"' for token '\" + type + \"')\")\n }\n\n // convert to array\n var match = options.match\n options.match = Array.isArray(match) ? match : match ? [match] : []\n options.match.sort(function(a, b) {\n return isRegExp(a) && isRegExp(b) ? 0\n : isRegExp(b) ? -1 : isRegExp(a) ? +1 : b.length - a.length\n })\n return options\n }\n\n function toRules(spec) {\n return Array.isArray(spec) ? arrayToRules(spec) : objectToRules(spec)\n }\n\n var defaultErrorRule = ruleOptions('error', {lineBreaks: true, shouldThrow: true})\n function compileRules(rules, hasStates) {\n var errorRule = null\n var fast = Object.create(null)\n var fastAllowed = true\n var unicodeFlag = null\n var groups = []\n var parts = []\n\n // If there is a fallback rule, then disable fast matching\n for (var i = 0; i < rules.length; i++) {\n if (rules[i].fallback) {\n fastAllowed = false\n }\n }\n\n for (var i = 0; i < rules.length; i++) {\n var options = rules[i]\n\n if (options.include) {\n // all valid inclusions are removed by states() preprocessor\n throw new Error('Inheritance is not allowed in stateless lexers')\n }\n\n if (options.error || options.fallback) {\n // errorRule can only be set once\n if (errorRule) {\n if (!options.fallback === !errorRule.fallback) {\n throw new Error(\"Multiple \" + (options.fallback ? \"fallback\" : \"error\") + \" rules not allowed (for token '\" + options.defaultType + \"')\")\n } else {\n throw new Error(\"fallback and error are mutually exclusive (for token '\" + options.defaultType + \"')\")\n }\n }\n errorRule = options\n }\n\n var match = options.match.slice()\n if (fastAllowed) {\n while (match.length && typeof match[0] === 'string' && match[0].length === 1) {\n var word = match.shift()\n fast[word.charCodeAt(0)] = options\n }\n }\n\n // Warn about inappropriate state-switching options\n if (options.pop || options.push || options.next) {\n if (!hasStates) {\n throw new Error(\"State-switching options are not allowed in stateless lexers (for token '\" + options.defaultType + \"')\")\n }\n if (options.fallback) {\n throw new Error(\"State-switching options are not allowed on fallback tokens (for token '\" + options.defaultType + \"')\")\n }\n }\n\n // Only rules with a .match are included in the RegExp\n if (match.length === 0) {\n continue\n }\n fastAllowed = false\n\n groups.push(options)\n\n // Check unicode flag is used everywhere or nowhere\n for (var j = 0; j < match.length; j++) {\n var obj = match[j]\n if (!isRegExp(obj)) {\n continue\n }\n\n if (unicodeFlag === null) {\n unicodeFlag = obj.unicode\n } else if (unicodeFlag !== obj.unicode && options.fallback === false) {\n throw new Error('If one rule is /u then all must be')\n }\n }\n\n // convert to RegExp\n var pat = reUnion(match.map(regexpOrLiteral))\n\n // validate\n var regexp = new RegExp(pat)\n if (regexp.test(\"\")) {\n throw new Error(\"RegExp matches empty string: \" + regexp)\n }\n var groupCount = reGroups(pat)\n if (groupCount > 0) {\n throw new Error(\"RegExp has capture groups: \" + regexp + \"\\nUse (?: … ) instead\")\n }\n\n // try and detect rules matching newlines\n if (!options.lineBreaks && regexp.test('\\n')) {\n throw new Error('Rule should declare lineBreaks: ' + regexp)\n }\n\n // store regex\n parts.push(reCapture(pat))\n }\n\n\n // If there's no fallback rule, use the sticky flag so we only look for\n // matches at the current index.\n //\n // If we don't support the sticky flag, then fake it using an irrefutable\n // match (i.e. an empty pattern).\n var fallbackRule = errorRule && errorRule.fallback\n var flags = hasSticky && !fallbackRule ? 'ym' : 'gm'\n var suffix = hasSticky || fallbackRule ? '' : '|'\n\n if (unicodeFlag === true) flags += \"u\"\n var combined = new RegExp(reUnion(parts) + suffix, flags)\n return {regexp: combined, groups: groups, fast: fast, error: errorRule || defaultErrorRule}\n }\n\n function compile(rules) {\n var result = compileRules(toRules(rules))\n return new Lexer({start: result}, 'start')\n }\n\n function checkStateGroup(g, name, map) {\n var state = g && (g.push || g.next)\n if (state && !map[state]) {\n throw new Error(\"Missing state '\" + state + \"' (in token '\" + g.defaultType + \"' of state '\" + name + \"')\")\n }\n if (g && g.pop && +g.pop !== 1) {\n throw new Error(\"pop must be 1 (in token '\" + g.defaultType + \"' of state '\" + name + \"')\")\n }\n }\n function compileStates(states, start) {\n var all = states.$all ? toRules(states.$all) : []\n delete states.$all\n\n var keys = Object.getOwnPropertyNames(states)\n if (!start) start = keys[0]\n\n var ruleMap = Object.create(null)\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]\n ruleMap[key] = toRules(states[key]).concat(all)\n }\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]\n var rules = ruleMap[key]\n var included = Object.create(null)\n for (var j = 0; j < rules.length; j++) {\n var rule = rules[j]\n if (!rule.include) continue\n var splice = [j, 1]\n if (rule.include !== key && !included[rule.include]) {\n included[rule.include] = true\n var newRules = ruleMap[rule.include]\n if (!newRules) {\n throw new Error(\"Cannot include nonexistent state '\" + rule.include + \"' (in state '\" + key + \"')\")\n }\n for (var k = 0; k < newRules.length; k++) {\n var newRule = newRules[k]\n if (rules.indexOf(newRule) !== -1) continue\n splice.push(newRule)\n }\n }\n rules.splice.apply(rules, splice)\n j--\n }\n }\n\n var map = Object.create(null)\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i]\n map[key] = compileRules(ruleMap[key], true)\n }\n\n for (var i = 0; i < keys.length; i++) {\n var name = keys[i]\n var state = map[name]\n var groups = state.groups\n for (var j = 0; j < groups.length; j++) {\n checkStateGroup(groups[j], name, map)\n }\n var fastKeys = Object.getOwnPropertyNames(state.fast)\n for (var j = 0; j < fastKeys.length; j++) {\n checkStateGroup(state.fast[fastKeys[j]], name, map)\n }\n }\n\n return new Lexer(map, start)\n }\n\n function keywordTransform(map) {\n\n // Use a JavaScript Map to map keywords to their corresponding token type\n // unless Map is unsupported, then fall back to using an Object:\n var isMap = typeof Map !== 'undefined'\n var reverseMap = isMap ? new Map : Object.create(null)\n\n var types = Object.getOwnPropertyNames(map)\n for (var i = 0; i < types.length; i++) {\n var tokenType = types[i]\n var item = map[tokenType]\n var keywordList = Array.isArray(item) ? item : [item]\n keywordList.forEach(function(keyword) {\n if (typeof keyword !== 'string') {\n throw new Error(\"keyword must be string (in keyword '\" + tokenType + \"')\")\n }\n if (isMap) {\n reverseMap.set(keyword, tokenType)\n } else {\n reverseMap[keyword] = tokenType\n }\n })\n }\n return function(k) {\n return isMap ? reverseMap.get(k) : reverseMap[k]\n }\n }\n\n /***************************************************************************/\n\n var Lexer = function(states, state) {\n this.startState = state\n this.states = states\n this.buffer = ''\n this.stack = []\n this.reset()\n }\n\n Lexer.prototype.reset = function(data, info) {\n this.buffer = data || ''\n this.index = 0\n this.line = info ? info.line : 1\n this.col = info ? info.col : 1\n this.queuedToken = info ? info.queuedToken : null\n this.queuedText = info ? info.queuedText: \"\";\n this.queuedThrow = info ? info.queuedThrow : null\n this.setState(info ? info.state : this.startState)\n this.stack = info && info.stack ? info.stack.slice() : []\n return this\n }\n\n Lexer.prototype.save = function() {\n return {\n line: this.line,\n col: this.col,\n state: this.state,\n stack: this.stack.slice(),\n queuedToken: this.queuedToken,\n queuedText: this.queuedText,\n queuedThrow: this.queuedThrow,\n }\n }\n\n Lexer.prototype.setState = function(state) {\n if (!state || this.state === state) return\n this.state = state\n var info = this.states[state]\n this.groups = info.groups\n this.error = info.error\n this.re = info.regexp\n this.fast = info.fast\n }\n\n Lexer.prototype.popState = function() {\n this.setState(this.stack.pop())\n }\n\n Lexer.prototype.pushState = function(state) {\n this.stack.push(this.state)\n this.setState(state)\n }\n\n var eat = hasSticky ? function(re, buffer) { // assume re is /y\n return re.exec(buffer)\n } : function(re, buffer) { // assume re is /g\n var match = re.exec(buffer)\n // will always match, since we used the |(?:) trick\n if (match[0].length === 0) {\n return null\n }\n return match\n }\n\n Lexer.prototype._getGroup = function(match) {\n var groupCount = this.groups.length\n for (var i = 0; i < groupCount; i++) {\n if (match[i + 1] !== undefined) {\n return this.groups[i]\n }\n }\n throw new Error('Cannot find token type for matched text')\n }\n\n function tokenToString() {\n return this.value\n }\n\n Lexer.prototype.next = function() {\n var index = this.index\n\n // If a fallback token matched, we don't need to re-run the RegExp\n if (this.queuedGroup) {\n var token = this._token(this.queuedGroup, this.queuedText, index)\n this.queuedGroup = null\n this.queuedText = \"\"\n return token\n }\n\n var buffer = this.buffer\n if (index === buffer.length) {\n return // EOF\n }\n\n // Fast matching for single characters\n var group = this.fast[buffer.charCodeAt(index)]\n if (group) {\n return this._token(group, buffer.charAt(index), index)\n }\n\n // Execute RegExp\n var re = this.re\n re.lastIndex = index\n var match = eat(re, buffer)\n\n // Error tokens match the remaining buffer\n var error = this.error\n if (match == null) {\n return this._token(error, buffer.slice(index, buffer.length), index)\n }\n\n var group = this._getGroup(match)\n var text = match[0]\n\n if (error.fallback && match.index !== index) {\n this.queuedGroup = group\n this.queuedText = text\n\n // Fallback tokens contain the unmatched portion of the buffer\n return this._token(error, buffer.slice(index, match.index), index)\n }\n\n return this._token(group, text, index)\n }\n\n Lexer.prototype._token = function(group, text, offset) {\n // count line breaks\n var lineBreaks = 0\n if (group.lineBreaks) {\n var matchNL = /\\n/g\n var nl = 1\n if (text === '\\n') {\n lineBreaks = 1\n } else {\n while (matchNL.exec(text)) { lineBreaks++; nl = matchNL.lastIndex }\n }\n }\n\n var token = {\n type: (typeof group.type === 'function' && group.type(text)) || group.defaultType,\n value: typeof group.value === 'function' ? group.value(text) : text,\n text: text,\n toString: tokenToString,\n offset: offset,\n lineBreaks: lineBreaks,\n line: this.line,\n col: this.col,\n }\n // nb. adding more props to token object will make V8 sad!\n\n var size = text.length\n this.index += size\n this.line += lineBreaks\n if (lineBreaks !== 0) {\n this.col = size - nl + 1\n } else {\n this.col += size\n }\n\n // throw, if no rule with {error: true}\n if (group.shouldThrow) {\n var err = new Error(this.formatError(token, \"invalid syntax\"))\n throw err;\n }\n\n if (group.pop) this.popState()\n else if (group.push) this.pushState(group.push)\n else if (group.next) this.setState(group.next)\n\n return token\n }\n\n if (typeof Symbol !== 'undefined' && Symbol.iterator) {\n var LexerIterator = function(lexer) {\n this.lexer = lexer\n }\n\n LexerIterator.prototype.next = function() {\n var token = this.lexer.next()\n return {value: token, done: !token}\n }\n\n LexerIterator.prototype[Symbol.iterator] = function() {\n return this\n }\n\n Lexer.prototype[Symbol.iterator] = function() {\n return new LexerIterator(this)\n }\n }\n\n Lexer.prototype.formatError = function(token, message) {\n if (token == null) {\n // An undefined token indicates EOF\n var text = this.buffer.slice(this.index)\n var token = {\n text: text,\n offset: this.index,\n lineBreaks: text.indexOf('\\n') === -1 ? 0 : 1,\n line: this.line,\n col: this.col,\n }\n }\n \n var numLinesAround = 2\n var firstDisplayedLine = Math.max(token.line - numLinesAround, 1)\n var lastDisplayedLine = token.line + numLinesAround\n var lastLineDigits = String(lastDisplayedLine).length\n var displayedLines = lastNLines(\n this.buffer, \n (this.line - token.line) + numLinesAround + 1\n )\n .slice(0, 5)\n var errorLines = []\n errorLines.push(message + \" at line \" + token.line + \" col \" + token.col + \":\")\n errorLines.push(\"\")\n for (var i = 0; i < displayedLines.length; i++) {\n var line = displayedLines[i]\n var lineNo = firstDisplayedLine + i\n errorLines.push(pad(String(lineNo), lastLineDigits) + \" \" + line);\n if (lineNo === token.line) {\n errorLines.push(pad(\"\", lastLineDigits + token.col + 1) + \"^\")\n }\n }\n return errorLines.join(\"\\n\")\n }\n\n Lexer.prototype.clone = function() {\n return new Lexer(this.states, this.state)\n }\n\n Lexer.prototype.has = function(tokenType) {\n return true\n }\n\n\n return {\n compile: compile,\n states: compileStates,\n error: Object.freeze({error: true}),\n fallback: Object.freeze({fallback: true}),\n keywords: keywordTransform,\n }\n\n}));\n","const required = {\n biblatex: {\n article: ['author', 'title', 'journaltitle', ['year', 'date']],\n book: ['author', 'title', ['year', 'date']],\n mvbook: ['author', 'title', ['year', 'date']],\n inbook: ['author', 'title', 'booktitle', ['year', 'date']],\n booklet: [['author', 'editor'], 'title', ['year', 'date']],\n collection: ['editor', 'title', ['year', 'date']],\n mvcollection: ['editor', 'title', ['year', 'date']],\n incollection: ['author', 'title', 'booktitle', ['year', 'date']],\n dataset: [['author', 'editor'], 'title', ['year', 'date']],\n online: [['author', 'editor'], 'title', ['year', 'date'], ['doi', 'eprint', 'url']],\n patent: ['author', 'title', 'number', ['year', 'date']],\n periodical: ['editor', 'title', ['year', 'date']],\n proceedings: ['title', ['year', 'date']],\n mvproceedings: ['title', ['year', 'date']],\n inproceedings: ['author', 'title', 'booktitle', ['year', 'date']],\n report: ['author', 'title', 'type', 'institution', ['year', 'date']],\n thesis: ['author', 'title', 'type', 'institution', ['year', 'date']],\n unpublished: ['author', 'title', ['year', 'date']],\n conference: ['author', 'title', 'booktitle', ['year', 'date']],\n electronic: [['author', 'editor'], 'title', ['year', 'date'], ['doi', 'eprint', 'url']],\n mastersthesis: ['author', 'title', 'institution', ['year', 'date']],\n phdthesis: ['author', 'title', 'institution', ['year', 'date']],\n techreport: ['author', 'title', 'institution', ['year', 'date']],\n www: [['author', 'editor'], 'title', ['year', 'date'], ['doi', 'eprint', 'url']],\n },\n bibtex: {\n article: ['author', 'title', 'journal', 'year'],\n book: [['author', 'editor'], 'title', 'publisher', 'year'],\n booklet: ['title'],\n inbook: [['author', 'editor'], 'title', ['chapter', 'pages'], 'publisher', 'year'],\n incollection: ['author', 'title', 'booktitle', 'publisher', 'year'],\n inproceedings: ['author', 'title', 'booktitle', 'year'],\n mastersthesis: ['author', 'title', 'school', 'year'],\n phdthesis: ['author', 'title', 'school', 'year'],\n proceedings: ['title', 'year'],\n techreport: ['author', 'title', 'institution', 'year'],\n unpublished: ['author', 'title', 'note'],\n },\n}\n\nexport default required\n","const fieldTypes = {\n abstract: ['field', 'literal'],\n addendum: ['field', 'literal'],\n afterword: ['list', 'name'],\n annotation: ['field', 'literal'],\n annotator: ['list', 'name'],\n author: ['list', 'name'],\n authortype: ['field', 'key'],\n bookauthor: ['list', 'name'],\n bookpagination: ['field', 'key'],\n booksubtitle: ['field', 'literal'],\n booktitle: ['field', 'title'],\n booktitleaddon: ['field', 'literal'],\n chapter: ['field', 'literal'],\n commentator: ['list', 'name'],\n date: ['field', 'date'],\n doi: ['field', 'verbatim'],\n edition: ['field', 'literal'],\n editor: ['list', 'name'],\n editora: ['list', 'name'],\n editorb: ['list', 'name'],\n editorc: ['list', 'name'],\n editortype: ['field', 'key'],\n editoratype: ['field', 'key'],\n editorbtype: ['field', 'key'],\n editorctype: ['field', 'key'],\n eid: ['field', 'literal'],\n entrysubtype: ['field', 'literal'],\n eprint: ['field', 'verbatim'],\n eprintclass: ['field', 'literal'],\n eprinttype: ['field', 'literal'],\n eventdate: ['field', 'date'],\n eventtitle: ['field', 'title'],\n eventtitleaddon: ['field', 'literal'],\n file: ['field', 'verbatim'],\n foreword: ['list', 'name'],\n holder: ['list', 'name'],\n howpublished: ['field', 'literal'],\n indextitle: ['field', 'literal'],\n institution: ['list', 'literal'],\n introduction: ['list', 'name'],\n isan: ['field', 'literal'],\n isbn: ['field', 'literal'],\n ismn: ['field', 'literal'],\n isrn: ['field', 'literal'],\n issn: ['field', 'literal'],\n issue: ['field', 'literal'],\n issuesubtitle: ['field', 'literal'],\n issuetitle: ['field', 'literal'],\n iswc: ['field', 'literal'],\n journalsubtitle: ['field', 'literal'],\n journaltitle: ['field', 'literal'],\n label: ['field', 'literal'],\n language: ['list', 'key'],\n library: ['field', 'literal'],\n location: ['list', 'literal'],\n mainsubtitle: ['field', 'literal'],\n maintitle: ['field', 'title'],\n maintitleaddon: ['field', 'literal'],\n month: ['field', 'literal'],\n nameaddon: ['field', 'literal'],\n note: ['field', 'literal'],\n number: ['field', 'literal'],\n organization: ['list', 'literal'],\n origdate: ['field', 'date'],\n origlanguage: ['list', 'key'],\n origlocation: ['list', 'literal'],\n origpublisher: ['list', 'literal'],\n origtitle: ['field', 'title'],\n pages: ['field', 'range'],\n pagetotal: ['field', 'literal'],\n pagination: ['field', 'key'],\n part: ['field', 'literal'],\n publisher: ['list', 'literal'],\n pubstate: ['field', 'key'],\n reprinttitle: ['field', 'literal'],\n series: ['field', 'title'],\n shortauthor: ['list', 'name'],\n shorteditor: ['list', 'name'],\n shorthand: ['field', 'literal'],\n shorthandintro: ['field', 'literal'],\n shortjournal: ['field', 'literal'],\n shortseries: ['field', 'literal'],\n shorttitle: ['field', 'title'],\n subtitle: ['field', 'literal'],\n title: ['field', 'title'],\n titleaddon: ['field', 'literal'],\n translator: ['list', 'name'],\n type: ['field', 'title'],\n url: ['field', 'uri'],\n urldate: ['field', 'date'],\n venue: ['field', 'literal'],\n version: ['field', 'literal'],\n volume: ['field', 'integer'],\n volumes: ['field', 'integer'],\n year: ['field', 'literal'],\n crossref: ['field', 'entry key'],\n entryset: ['separated', 'literal'],\n execute: ['field', 'code'],\n gender: ['field', 'gender'],\n langid: ['field', 'identifier'],\n langidopts: ['field', 'literal'],\n ids: ['separated', 'entry key'],\n indexsorttitle: ['field', 'literal'],\n keywords: ['separated', 'literal'],\n options: ['separated', 'options'],\n presort: ['field', 'string'],\n related: ['separated', 'literal'],\n relatedoptions: ['separated', 'literal'],\n relatedtype: ['field', 'identifier'],\n relatedstring: ['field', 'literal'],\n sortkey: ['field', 'literal'],\n sortname: ['list', 'name'],\n sortshorthand: ['field', 'literal'],\n sorttitle: ['field', 'literal'],\n sortyear: ['field', 'integer'],\n xdata: ['separated', 'entry key'],\n xref: ['field', 'entry key'],\n namea: ['list', 'name'],\n nameb: ['list', 'name'],\n namec: ['list', 'name'],\n nameatype: ['field', 'key'],\n namebtype: ['field', 'key'],\n namectype: ['field', 'key'],\n lista: ['list', 'literal'],\n listb: ['list', 'literal'],\n listc: ['list', 'literal'],\n listd: ['list', 'literal'],\n liste: ['list', 'literal'],\n listf: ['list', 'literal'],\n usera: ['field', 'literal'],\n userb: ['field', 'literal'],\n userc: ['field', 'literal'],\n userd: ['field', 'literal'],\n usere: ['field', 'literal'],\n userf: ['field', 'literal'],\n verba: ['field', 'literal'],\n verbb: ['field', 'literal'],\n verbc: ['field', 'literal'],\n address: ['list', 'literal'],\n annote: ['field', 'literal'],\n archiveprefix: ['field', 'literal'],\n journal: ['field', 'literal'],\n key: ['field', 'literal'],\n pdf: ['field', 'verbatim'],\n primaryclass: ['field', 'literal'],\n school: ['list', 'literal'],\n numpages: ['field', 'integer'],\n pmid: ['field', 'literal'],\n pmcid: ['field', 'literal'],\n}\n\nexport default fieldTypes\n","const unicode = {\n diacritics: {\n '`': '̀',\n \"'\": '́',\n '^': '̂',\n '~': '̃',\n '=': '̄',\n u: '̆',\n '.': '̇',\n '\"': '̈',\n r: '̊',\n H: '̋',\n v: '̌',\n b: '̲',\n d: '̣',\n c: '̧',\n k: '̨',\n t: '͡',\n textcommabelow: '̦',\n },\n commands: {\n textquotesingle: \"'\",\n textasciigrave: '`',\n textquotedbl: '\"',\n textdollar: '$',\n textless: '<',\n textgreater: '>',\n textbackslash: '\\\\',\n textasciicircum: '^',\n textunderscore: '_',\n textbraceleft: '{',\n textbar: '|',\n textbraceright: '}',\n textasciitilde: '~',\n textexclamdown: '¡',\n textcent: '¢',\n textsterling: '£',\n textcurrency: '¤',\n textyen: '¥',\n textbrokenbar: '¦',\n textsection: '§',\n textasciidieresis: '¨',\n textcopyright: '©',\n textordfeminine: 'ª',\n guillemetleft: '«',\n guillemotleft: '«',\n textlnot: '¬',\n textregistered: '®',\n textasciimacron: '¯',\n textdegree: '°',\n textpm: '±',\n texttwosuperior: '²',\n textthreesuperior: '³',\n textasciiacute: '´',\n textmu: 'µ',\n textparagraph: '¶',\n textperiodcentered: '·',\n textonesuperior: '¹',\n textordmasculine: 'º',\n guillemetright: '»',\n guillemotright: '»',\n textonequarter: '¼',\n textonehalf: '½',\n textthreequarters: '¾',\n textquestiondown: '¿',\n AE: 'Æ',\n DH: 'Ð',\n texttimes: '×',\n O: 'Ø',\n TH: 'Þ',\n ss: 'ß',\n ae: 'æ',\n dh: 'ð',\n textdiv: '÷',\n o: 'ø',\n th: 'þ',\n DJ: 'Đ',\n dj: 'đ',\n i: 'ı',\n IJ: 'IJ',\n ij: 'ij',\n L: 'Ł',\n l: 'ł',\n NG: 'Ŋ',\n ng: 'ŋ',\n OE: 'Œ',\n oe: 'œ',\n textflorin: 'ƒ',\n j: 'ȷ',\n textasciicaron: 'ˇ',\n textasciibreve: '˘',\n textacutedbl: '˝',\n textgravedbl: '˵',\n texttildelow: '˷',\n textbaht: '฿',\n SS: 'ẞ',\n textcompwordmark: '',\n textendash: '',\n textemdash: '—',\n textbardbl: '‖',\n textquoteleft: '',\n textquoteright: '',\n quotesinglbase: '',\n textquotedblleft: '“',\n textquotedblright: '”',\n quotedblbase: '„',\n textdagger: '†',\n textdaggerdbl: '‡',\n textbullet: '•',\n textellipsis: '…',\n textperthousand: '‰',\n textpertenthousand: '‱',\n guilsinglleft: '',\n guilsinglright: '',\n textreferencemark: '※',\n textinterrobang: '‽',\n textfractionsolidus: '',\n textlquill: '⁅',\n textrquill: '⁆',\n textdiscount: '⁒',\n textcolonmonetary: '₡',\n textlira: '₤',\n textnaira: '₦',\n textwon: '₩',\n textdong: '₫',\n texteuro: '€',\n textpeso: '₱',\n textcelsius: '℃',\n textnumero: '№',\n textcircledP: '℗',\n textrecipe: '℞',\n textservicemark: '℠',\n texttrademark: '™',\n textohm: 'Ω',\n textmho: '℧',\n textestimated: '',\n textleftarrow: '←',\n textuparrow: '↑',\n textrightarrow: '→',\n textdownarrow: '↓',\n textminus: '',\n Hwithstroke: 'Ħ',\n hwithstroke: 'ħ',\n textasteriskcentered: '',\n textsurd: '√',\n textlangle: '〈',\n textrangle: '〉',\n textblank: '␢',\n textvisiblespace: '␣',\n textopenbullet: '◦',\n textbigcircle: '◯',\n textmusicalnote: '♪',\n textmarried: '⚭',\n textdivorced: '⚮',\n textinterrobangdown: '⸘',\n textcommabelow: null,\n copyright: '©',\n Gamma: 'Γ',\n Delta: 'Δ',\n Theta: 'Θ',\n Lambda: 'Λ',\n Xi: 'Ξ',\n Pi: 'Π',\n Sigma: 'Σ',\n Phi: 'Φ',\n Psi: 'Ψ',\n Omega: 'Ω',\n alpha: 'α',\n beta: 'β',\n gamma: 'γ',\n delta: 'δ',\n varepsilon: 'ε',\n zeta: 'ζ',\n eta: 'η',\n theta: 'θ',\n iota: 'ι',\n kappa: 'κ',\n lambda: 'λ',\n mu: 'μ',\n nu: 'ν',\n xi: 'ξ',\n pi: 'π',\n rho: 'ρ',\n varsigma: 'ς',\n sigma: 'σ',\n tau: 'τ',\n upsilon: 'υ',\n varphi: 'φ',\n chi: 'χ',\n psi: 'ψ',\n omega: 'ω',\n vartheta: 'ϑ',\n Upsilon: 'ϒ',\n phi: 'ϕ',\n varpi: 'ϖ',\n varrho: 'ϱ',\n epsilon: 'ϵ',\n },\n}\n\nexport default unicode\n","import _required from './required.js'\nimport _fieldTypes from './fieldTypes.js'\nimport unicode from './unicode.js'\nexport const required = _required\nexport const fieldTypes = _fieldTypes\nexport const diacritics = unicode.diacritics\nexport const commands = unicode.commands\n\n// Adapted from astrocite-bibtex (accessed 2018-02-22)\n// https://github.com/dsifford/astrocite/blob/668a9e4/packages/astrocite-bibtex/src/constants.ts#L112-L148\nexport const defaultStrings = {\n jan: '01',\n feb: '02',\n mar: '03',\n apr: '04',\n may: '05',\n jun: '06',\n jul: '07',\n aug: '08',\n sep: '09',\n oct: '10',\n nov: '11',\n dec: '12',\n acmcs: 'ACM Computing Surveys',\n acta: 'Acta Informatica',\n cacm: 'Communications of the ACM',\n ibmjrd: 'IBM Journal of Research and Development',\n ibmsj: 'IBM Systems Journal',\n ieeese: 'IEEE Transactions on Software Engineering',\n ieeetc: 'IEEE Transactions on Computers',\n ieeetcad: 'IEEE Transactions on Computer-Aided Design of Integrated Circuits',\n ipl: 'Information Processing Letters',\n jacm: 'Journal of the ACM',\n jcss: 'Journal of Computer and System Sciences',\n scp: 'Science of Computer Programming',\n sicomp: 'SIAM Journal on Computing',\n tocs: 'ACM Transactions on Computer Systems',\n tods: 'ACM Transactions on Database Systems',\n tog: 'ACM Transactions on Graphics',\n toms: 'ACM Transactions on Mathematical Software',\n toois: 'ACM Transactions on Office Information Systems',\n toplas: 'ACM Transactions on Programming Languages and Systems',\n tcs: 'Theoretical Computer Science',\n}\nexport const formattingEnvs = {\n it: 'italics',\n itshape: 'italics',\n sl: 'italics',\n slshape: 'italics',\n em: 'italics',\n\n bf: 'bold',\n bfseries: 'bold',\n\n sc: 'smallcaps',\n scshape: 'smallcaps',\n\n // Font selection\n rm: undefined,\n sf: undefined,\n tt: undefined,\n}\n\nexport const formattingCommands = {\n textit: 'italics',\n textsl: 'italics',\n emph: 'italics',\n mkbibitalic: 'italics',\n mkbibemph: 'italics',\n\n textbf: 'bold',\n strong: 'bold',\n mkbibbold: 'bold',\n\n textsc: 'smallcaps',\n\n textsuperscript: 'superscript',\n textsubscript: 'subscript',\n\n enquote: 'quotes',\n mkbibquote: 'quotes',\n\n // Font selection\n textmd: undefined,\n textrm: undefined,\n textsf: undefined,\n texttt: undefined,\n textup: undefined,\n}\n\nexport const formatting = {\n italics: ['<i>', '</i>'],\n bold: ['<b>', '</b>'],\n superscript: ['<sup>', '</sup>'],\n subscript: ['<sub>', '</sub>'],\n smallcaps: ['<span style=\"font-variant:small-caps;\">', '</span>'],\n nocase: ['<span class=\"nocase\">', '</span>'],\n quotes: ['\\u201C', '\\u201D'],\n}\n\n// Partly adapted from retorquere/bibtex-parser (2020-11-16)\n// https://github.com/retorquere/bibtex-parser/blob/7ad73df/index.ts\nexport const argumentCommands = {\n ElsevierGlyph(glyph) {\n return String.fromCharCode(parseInt(glyph, 16))\n },\n href(url, text) {\n return url\n },\n url(url) {\n return url\n },\n}\n\nexport const ligaturePattern = /---?|''|``|~/g\n\nexport const ligatures = {\n '--': '\\u2013',\n '---': '\\u2014',\n '``': '\\u201C',\n \"''\": '\\u201D',\n '~': '\\u00A0',\n}\n\nexport const mathScriptFormatting = {\n '^': 'superscript',\n sp: 'superscript',\n\n _: 'subscript',\n sb: 'subscript',\n\n mathrm: undefined,\n}\n\n/* eslint-disable quote-props */\nexport const mathScripts = {\n '^': {\n 0: '\\u2070',\n 1: '\\u00B9',\n 2: '\\u00B2',\n 3: '\\u00B3',\n 4: '\\u2074',\n 5: '\\u2075',\n 6: '\\u2076',\n 7: '\\u2077',\n 8: '\\u2078',\n 9: '\\u2079',\n '+': '\\u207A',\n '-': '\\u207B',\n '=': '\\u207C',\n '(': '\\u207D',\n ')': '\\u207E',\n i: '\\u2071',\n n: '\\u207F',\n },\n _: {\n 0: '\\u2080',\n 1: '\\u2081',\n 2: '\\u2082',\n 3: '\\u2083',\n 4: '\\u2084',\n 5: '\\u2085',\n 6: '\\u2086',\n 7: '\\u2087',\n 8: '\\u2088',\n 9: '\\u2089',\n '+': '\\u208A',\n '-': '\\u208B',\n '=': '\\u208C',\n '(': '\\u208D',\n ')': '\\u208E',\n a: '\\u2090',\n e: '\\u2091',\n o: '\\u2092',\n x: '\\u2093',\n '\\u0259': '\\u2094',\n h: '\\u2095',\n k: '\\u2096',\n l: '\\u2097',\n m: '\\u2098',\n n: '\\u2099',\n s: '\\u209A',\n p: '\\u209B',\n t: '\\u209C',\n },\n}\n/* eslint-enable quote-props */\n\n// Adapted from retorquere/bibtex-parser (2020-10-15)\n// https://github.com/retorquere/bibtex-parser/blob/0c8bd92/index.ts#L416-L441\nexport const sentenceCaseLanguages = [\n 'american',\n 'british',\n 'canadian',\n 'english',\n 'australian',\n 'newzealand',\n 'usenglish',\n 'ukenglish',\n 'en',\n 'eng',\n 'en-au',\n 'en-bz',\n 'en-ca',\n 'en-cb',\n 'en-gb',\n 'en-ie',\n 'en-jm',\n 'en-nz',\n 'en-ph',\n 'en-tt',\n 'en-us',\n 'en-za',\n 'en-zw',\n 'anglais',\n]\n","import { util, logger } from '../../core/index.js'\n\nimport moo from 'moo'\nimport { defaultStrings } from './constants.js'\n\nconst identifier = /[a-zA-Z_][a-zA-Z0-9_:-]*/\nconst whitespace = {\n comment: /%.*/,\n whitespace: { match: /\\s+/, lineBreaks: true },\n}\n\nconst lexer = moo.states({\n main: {\n junk: { match: /@[cC][oO][mM][mM][eE][nN][tT].+|[^@]+/, lineBreaks: true },\n at: { match: '@', push: 'entry' },\n },\n entry: {\n ...whitespace,\n otherEntryType: {\n match: /[sS][tT][rR][iI][nN][gG]|[pP][rR][eE][aA][mM][bB][lL][eE]/,\n next: 'otherEntryContents',\n },\n dataEntryType: {\n match: identifier,\n next: 'dataEntryContents',\n },\n },\n otherEntryContents: {\n ...whitespace,\n lbrace: { match: /[{(]/, next: 'fields' },\n },\n dataEntryContents: {\n ...whitespace,\n lbrace: { match: /[{(]/, next: 'dataEntryContents' },\n label: /[^,\\s]+/,\n comma: { match: ',', next: 'fields' },\n },\n fields: {\n ...whitespace,\n identifier,\n number: /-?\\d+/,\n hash: '#',\n equals: '=',\n comma: ',',\n quote: { match: '\"', push: 'quotedLiteral' },\n lbrace: { match: '{', push: 'bracedLiteral' },\n rbrace: { match: /[})]/, pop: true },\n },\n quotedLiteral: {\n lbrace: { match: '{', push: 'bracedLiteral' },\n quote: { match: '\"', pop: true },\n text: { match: /(?:\\\\[\\\\{]|[^{\"])+/, lineBreaks: true },\n },\n bracedLiteral: {\n lbrace: { match: '{', push: 'bracedLiteral' },\n rbrace: { match: '}', pop: true },\n text: { match: /(?:\\\\[\\\\{}]|[^{}])+/, lineBreaks: true },\n },\n})\n\nconst delimiters = {\n '(': ')',\n '{': '}',\n}\n\nexport const bibtexGrammar = new util.Grammar(\n {\n Main() {\n const entries = []\n\n while (true) {\n while (this.matchToken('junk')) {\n this.consumeToken('junk')\n }\n\n if (this.matchEndOfFile()) {\n break\n }\n\n entries.push(this.consumeRule('Entry'))\n }\n\n return entries.filter(Boolean)\n },\n\n _() {\n let oldToken\n while (oldToken !== this.token) {\n oldToken = this.token\n this.consumeToken('whitespace', true)\n this.consumeToken('comment', true)\n }\n },\n\n Entry() {\n this.consumeToken('at')\n this.consumeRule('_')\n\n const type = (\n this.matchToken('otherEntryType')\n ? this.consumeToken('otherEntryType')\n : this.consumeToken('dataEntryType')\n ).value.toLowerCase()\n\n this.consumeRule('_')\n const openBrace = this.consumeToken('lbrace').value\n this.consumeRule('_')\n\n let result\n\n if (type === 'string') {\n const [key, value] = this.consumeRule('Field')\n this.state.strings[key] = value\n } else if (type === 'preamble') {\n this.consumeRule('Expression')\n } else {\n const label = this.consumeToken('label').value\n\n this.consumeRule('_')\n this.consumeToken('comma')\n this.consumeRule('_')\n\n const properties = this.consumeRule('EntryBody')\n\n result = { type, label, properties }\n }\n\n this.consumeRule('_')\n const closeBrace = this.consumeToken('rbrace').value\n if (closeBrace !== delimiters[openBrace]) {\n logger.warn(\n '[plugin-bibtex]',\n `entry started with \"${openBrace}\", but ends with \"${closeBrace}\"`\n )\n }\n\n return result\n },\n\n EntryBody() {\n const properties = {}\n\n while (this.matchToken('identifier')) {\n const [field, value] = this.consumeRule('Field')\n properties[field] = value\n\n this.consumeRule('_')\n if (this.consumeToken('comma', true)) {\n this.consumeRule('_')\n } else {\n break\n }\n }\n\n return properties\n },\n\n Field() {\n const field = this.consumeToken('identifier').value.toLowerCase()\n\n this.consumeRule('_')\n this.consumeToken('equals')\n this.consumeRule('_')\n\n const value = this.consumeRule('Expression')\n\n return [field, value]\n },\n\n Expression() {\n let output = this.consumeRule('ExpressionPart')\n this.consumeRule('_')\n\n while (this.matchToken('hash')) {\n this.consumeToken('hash')\n this.consumeRule('_')\n output += this.consumeRule('ExpressionPart').toString()\n this.consumeRule('_')\n }\n\n return output\n },\n\n ExpressionPart() {\n if (this.matchToken('identifier')) {\n return this.state.strings[this.consumeToken('identifier').value.toLowerCase()] || ''\n } else if (this.matchToken('number')) {\n return parseInt(this.consumeToken('number'))\n } else if (this.matchToken('quote')) {\n return this.consumeRule('QuoteString')\n } else {\n return this.consumeRule('BracketString')\n }\n },\n\n QuoteString() {\n let output = ''\n this.consumeToken('quote')\n while (!this.matchToken('quote')) {\n output += this.consumeRule('Text')\n }\n this.consumeToken('quote')\n return output\n },\n\n BracketString() {\n let output = ''\n this.consumeToken('lbrace')\n while (!this.matchToken('rbrace')) {\n output += this.consumeRule('Text')\n }\n this.consumeToken('rbrace')\n return output\n },\n\n Text() {\n if (this.matchToken('lbrace')) {\n return `{${this.consumeRule('BracketString')}}`\n } else {\n return this.consumeToken('text').value\n }\n },\n },\n {\n strings: defaultStrings,\n }\n)\n\nexport function parse(text) {\n return bibtexGrammar.parse(lexer.reset(text))\n}\n","/**\n * @access private\n * @constant bibTxtRegex\n * @default\n */\nconst bibTxtRegex = {\n splitEntries: /\\n\\s*(?=\\[)/g,\n parseEntry: /^\\[(.+?)\\]\\s*(?:\\n([\\s\\S]+))?$/,\n splitPairs: /((?=.)\\s)*\\n\\s*/g,\n splitPair: /:(.*)/,\n}\n\n/**\n * Parse single Bib.TXT entry\n *\n * @access private\n * @method parseBibTxtEntry\n *\n * @param {String} entry - The input data\n *\n * @return {Object} Array of BibTeX-JSON\n */\nconst parseBibTxtEntry = (entry) => {\n const [, label, pairs] = entry.match(bibTxtRegex.parseEntry) || []\n\n if (!label || !pairs) {\n return {}\n } else {\n const out = {\n type: 'book',\n label,\n properties: {},\n }\n\n pairs\n .trim()\n .split(bibTxtRegex.splitPairs)\n .filter((v) => v)\n .forEach((pair) => {\n let [key, value] = pair.split(bibTxtRegex.splitPair)\n\n /* istanbul ignore else */\n if (value) {\n key = key.trim()\n value = value.trim()\n\n if (key === 'type') {\n out.type = value\n } else {\n out.properties[key] = value\n }\n }\n })\n\n return out\n }\n}\n\n/**\n * Parse Bib.TXT data\n *\n * @access private\n * @method parseBibTxt\n *\n * @param {String} src - The input data\n *\n * @return {Array<Object>} Array of BibTeX-JSON\n */\nconst parseBibTxt = (src) => src.trim().split(bibTxtRegex.splitEntries).map(parseBibTxtEntry)\n\nexport { parseBibTxt as parse, parseBibTxt as text, parseBibTxtEntry as textEntry }\n","const biblatexTypes = {\n source: {\n article: 'article-journal',\n book: 'book',\n mvbook: 'book',\n inbook: 'chapter',\n bookinbook: 'book',\n booklet: 'book',\n collection: 'book',\n mvcollection: 'book',\n incollection: 'chapter',\n dataset: 'dataset',\n online: 'webpage',\n patent: 'patent',\n periodical: 'article-journal',\n proceedings: 'book',\n mvproceedings: 'book',\n inproceedings: 'paper-conference',\n reference: 'book',\n mvreference: 'book',\n inreference: 'entry',\n report: 'report',\n software: 'book',\n thesis: 'thesis',\n unpublished: 'manuscript',\n artwork: 'graphic',\n audio: 'song',\n image: 'figure',\n jurisdiction: 'legal_case',\n legislation: 'legislation',\n legal: 'treaty',\n letter: 'personal_communication',\n movie: 'motion_picture',\n music: 'musical_score',\n review: 'review',\n video: 'motion_picture',\n conference: 'paper-conference',\n electronic: 'webpage',\n mastersthesis: 'thesis',\n phdthesis: 'thesis',\n techreport: 'report',\n www: 'webpage',\n },\n target: {\n article: 'article',\n 'article-journal': 'article',\n 'article-magazine': 'article',\n 'article-newspaper': 'article',\n bill: 'legislation',\n book: 'book',\n broadcast: 'audio',\n chapter: 'inbook',\n dataset: 'dataset',\n entry: 'inreference',\n 'entry-dictionary': 'inreference',\n 'entry-encyclopedia': 'inreference',\n figure: 'artwork',\n graphic: 'artwork',\n interview: 'audio',\n legal_case: 'jurisdiction',\n legislation: 'legislation',\n manuscript: 'unpublished',\n motion_picture: 'movie',\n musical_score: 'music',\n 'paper-conference': 'inproceedings',\n patent: 'patent',\n personal_communication: 'letter',\n post: 'online',\n 'post-weblog': 'online',\n report: 'report',\n review: 'review',\n 'review-book': 'review',\n song: 'music',\n speech: 'audio',\n thesis: 'thesis',\n treaty: 'legal',\n webpage: 'online',\n },\n}\n\nexport default biblatexTypes\n","const bibtexTypes = {\n source: {\n article: 'article-journal',\n book: 'book',\n booklet: 'book',\n conference: 'paper-conference',\n inbook: 'chapter',\n incollection: 'chapter',\n inproceedings: 'paper-conference',\n mastersthesis: 'thesis',\n phdthesis: 'thesis',\n proceedings: 'book',\n techreport: 'report',\n unpublished: 'manuscript',\n },\n target: {\n article: 'article',\n 'article-journal': 'article',\n 'article-magazine': 'article',\n 'article-newspaper': 'article',\n book: 'book',\n chapter: 'inbook',\n manuscript: 'unpublished',\n 'paper-conference': 'inproceedings',\n report: 'techreport',\n review: 'article',\n 'review-book': 'article',\n },\n}\n\nexport default bibtexTypes\n","import biblatex from './mapping/biblatexTypes.js'\nimport bibtex from './mapping/bibtexTypes.js'\nimport * as constants from './input/constants.js'\nexport default {\n constants,\n types: {\n biblatex,\n bibtex,\n },\n parse: {\n biblatex: true,\n strict: false,\n sentenceCase: 'never',\n },\n format: {\n useIdAsLabel: false,\n },\n}\n","//@ts-nocheck\nimport { util } from '../../core/index.js'\nimport config from '../config.js'\nconst stopWords = new Set(['the', 'a', 'an'])\nconst unsafeChars = /(?:<\\/?.*?>|[\\u0020-\\u002F\\u003A-\\u0040\\u005B-\\u005E\\u0060\\u007B-\\u007F])+/g\nconst unicode = /[^\\u0020-\\u007F]+/g\n\nfunction firstWord(text) {\n if (!text) {\n return ''\n } else {\n return text\n .normalize('NFKD')\n .replace(unicode, '')\n .split(unsafeChars)\n .find((word) => word.length && !stopWords.has(word.toLowerCase()))\n }\n}\n\nconst name = new util.Translator([\n {\n source: 'given',\n target: 'given',\n },\n {\n source: 'family',\n target: 'family',\n },\n {\n source: 'suffix',\n target: 'suffix',\n },\n {\n source: 'prefix',\n target: 'non-dropping-particle',\n },\n {\n source: 'family',\n target: 'literal',\n when: {\n source: false,\n target: {\n family: false,\n given: false,\n },\n },\n },\n])\nconst months = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 'jul', 'aug', 'sep', 'oct', 'nov', 'dec']\nexport const TYPE = 'BibTeX type'\nexport const LABEL = 'BibTeX label'\nexport const MONTHS = {\n jan: 1,\n feb: 2,\n mar: 3,\n apr: 4,\n may: 5,\n jun: 6,\n jul: 7,\n aug: 8,\n sep: 9,\n oct: 10,\n nov: 11,\n dec: 12,\n january: 1,\n february: 2,\n march: 3,\n april: 4,\n may: 5,\n june: 6,\n july: 7,\n august: 8,\n september: 9,\n october: 10,\n november: 11,\n december: 12,\n}\nexport const TYPE_KEYS = {\n bathesis: \"Bachelor's thesis\",\n mathesis: \"Master's thesis\",\n phdthesis: 'PhD thesis',\n candthesis: 'Candidate thesis',\n techreport: 'technical report',\n resreport: 'research report',\n software: 'computer software',\n datacd: 'data cd',\n audiocd: 'audio cd',\n patent: 'patent',\n patentde: 'German patent',\n patenteu: 'European patent',\n patentfr: 'French patent',\n patentuk: 'British patent',\n patentus: 'U.S. patent',\n patreq: 'patent request',\n patreqde: 'German patent request',\n patreqeu: 'European patent request',\n patreqfr: 'French patent request',\n patrequk: 'British patent request',\n patrequs: 'U.S. patent request',\n}\nexport const STANDARD_NUMBERS_PATTERN =\n /(^(?:ISAN )?(?:[0-9a-f]{4}-){4}[0-9a-z](?:-(?:[0-9a-f]{4}-){2}[0-9a-z])?$)|(^(?:979-?0-?|M-?)(?:\\d{9}|(?=[\\d-]{11}$)\\d+-\\d+-\\d)$)|(^ISRN .{1,36}$)|(^(?:ISWC )?T-?\\d{9}-?\\d$)/i\nexport function parseDate(date) {\n const parts = date\n .split('T')[0]\n .replace(/[?~%]$/, '')\n .split('-')\n const year = +parts[0].replace(/^Y(?=-?\\d{4}\\d+)/, '').replace(/X/g, '0')\n const month = +parts[1]\n const day = +parts[2]\n\n if (!month || month > 20) {\n return [year]\n } else if (!day) {\n return [year, month]\n } else {\n return [year, month, day]\n }\n}\nexport function parseMonth(value) {\n if (value == null) {\n return []\n }\n\n if (+value) {\n return [parseInt(value, 10)]\n }\n\n value = value.trim().toLowerCase()\n\n if (value in MONTHS) {\n return [MONTHS[value]]\n }\n\n const parts = value.split(/\\s+/)\n let month\n let day\n\n if (parts[0] in MONTHS) {\n month = MONTHS[parts[0]]\n day = parseInt(parts[1])\n } else if (parts[1] in MONTHS) {\n month = MONTHS[parts[1]]\n day = parseInt(parts[0])\n }\n\n return day ? [month, day] : month ? [month] : []\n}\nexport function formatLabel(author, issued, suffix, title) {\n let label = ''\n\n if (author && author[0]) {\n label += firstWord(author[0].family || author[0].literal)\n }\n\n if (issued && issued['date-parts'] && issued['date-parts'][0]) {\n label += issued['date-parts'][0][0]\n }\n\n if (suffix) {\n label += suffix\n } else if (title) {\n label += firstWord(title)\n }\n\n return label\n}\nexport const Converters = {\n PICK: {\n toTarget(...args) {\n return args.find(Boolean)\n },\n\n toSource(value) {\n return [value]\n },\n },\n DATE: {\n toTarget(date) {\n const parts = date\n .split('/')\n .map((part) => (part && part !== '..' ? parseDate(part) : undefined))\n return isNaN(parts[0][0])\n ? {\n literal: date,\n }\n : {\n 'date-parts': parts,\n }\n },\n\n toSource(date) {\n if ('date-parts' in date) {\n return date['date-parts']\n .map((datePart) =>\n datePart.map((datePart) => datePart.toString().padStart(2, '0')).join('-')\n )\n .join('/')\n }\n },\n },\n YEAR_MONTH: {\n toTarget(year, month, day) {\n if (isNaN(+year)) {\n return {\n literal: year,\n }\n } else if (!isNaN(+day) && !isNaN(+month)) {\n return {\n 'date-parts': [[+year, +month, +day]],\n }\n } else {\n return {\n 'date-parts': [[+year, ...parseMonth(month)]],\n }\n }\n },\n\n toSource(date) {\n if ('date-parts' in date) {\n const [year, month, day] = date['date-parts'][0]\n return [year.toString(), month ? (day ? `${months[month - 1]} ${day}` : month) : undefined]\n }\n },\n },\n EPRINT: {\n toTarget(id, type) {\n if (type === 'pubmed') {\n return id\n }\n },\n\n toSource(id) {\n return [id, 'pubmed']\n },\n },\n HOW_PUBLISHED: {\n toTarget(howPublished) {\n if (howPublished.startsWith('http')) {\n return howPublished\n }\n },\n },\n KEYWORDS: {\n toTarget(list) {\n return list.join(',')\n },\n\n toSource(list) {\n return list.split(',')\n },\n },\n LABEL: {\n toTarget(label) {\n return [label, label]\n },\n\n toSource(id, label, author, issued, suffix, title) {\n let safeId\n\n if (id === null) {\n safeId = 'null'\n } else if (id === undefined) {\n safeId = 'undefined'\n } else {\n safeId = id.toString().replace(unsafeChars, '')\n }\n\n if (config.format.useIdAsLabel) {\n return safeId\n }\n\n if (label && !unsafeChars.test(label)) {\n return label\n } else {\n return formatLabel(author, issued, suffix, title) || safeId\n }\n },\n },\n NAMES: {\n toTarget(list) {\n return list.map(name.convertToTarget)\n },\n\n toSource(list) {\n return list.map(name.convertToSource)\n },\n },\n STANDARD_NUMBERS: {\n toTarget(...args) {\n return args.find(Boolean)\n },\n\n toSource(number) {\n const match = number.toString().match(STANDARD_NUMBERS_PATTERN)\n return match ? match.slice(1, 5) : []\n },\n },\n STATUS: {\n toSource(state) {\n if (/^(inpreparation|submitted|forthcoming|inpress|prepublished)$/i.test(state)) {\n return state\n }\n },\n },\n TITLE: {\n toTarget(title, subtitle, addon) {\n if (subtitle) {\n title += ': ' + subtitle\n }\n\n return title\n },\n\n toSource(title) {\n return [title]\n },\n },\n}\n","import { util } from '../../core/index.js'\nimport { format as formatDate } from '@citation-js/date'\nimport types from './biblatexTypes.js'\nimport { TYPE, LABEL, TYPE_KEYS, Converters } from './shared.js'\nconst nonSpec = [\n {\n source: 'note',\n target: 'accessed',\n when: {\n source: false,\n target: { note: false, addendum: false },\n },\n convert: {\n toSource(accessed) {\n return `[Online; accessed ${formatDate(accessed)}]`\n },\n },\n },\n {\n source: 'numpages',\n target: 'number-of-pages',\n when: {\n source: { pagetotal: false },\n target: false,\n },\n },\n {\n source: 'pmid',\n target: 'PMID',\n when: {\n source: {\n eprinttype(type) {\n return type !== 'pmid'\n },\n archiveprefix(type) {\n return type !== 'pmid'\n },\n },\n target: false,\n },\n },\n {\n source: 'pmcid',\n target: 'PMCID',\n when: {\n target: false,\n },\n },\n {\n source: 's2id',\n target: 'custom',\n convert: {\n toTarget(S2ID) {\n return { S2ID }\n },\n toSource({ S2ID }) {\n return S2ID\n },\n },\n },\n]\n\nconst aliases = [\n {\n source: 'annote',\n target: 'annote',\n when: {\n source: { annotation: false },\n target: false,\n },\n },\n {\n source: 'address',\n target: 'publisher-place',\n convert: Converters.PICK,\n when: {\n source: { location: false },\n target: false,\n },\n },\n {\n source: ['eprint', 'archiveprefix'],\n target: 'PMID',\n convert: Converters.EPRINT,\n when: {\n source: { eprinttype: false },\n target: false,\n },\n },\n {\n source: 'journal',\n target: 'container-title',\n when: {\n source: {\n maintitle: false,\n booktitle: false,\n journaltitle: false,\n },\n target: false,\n },\n },\n {\n source: 'school',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: {\n institution: false,\n organization: false,\n publisher: false,\n },\n target: false,\n },\n },\n]\n\nexport default new util.Translator([\n ...aliases,\n ...nonSpec,\n {\n source: 'abstract',\n target: 'abstract',\n },\n {\n source: 'urldate',\n target: 'accessed',\n convert: Converters.DATE,\n },\n {\n source: 'annotation',\n target: 'annote',\n },\n {\n source: 'author',\n target: 'author',\n convert: Converters.NAMES,\n },\n {\n source: 'library',\n target: 'call-number',\n },\n {\n source: 'chapter',\n target: 'chapter-number',\n },\n {\n source: 'bookauthor',\n target: 'container-author',\n convert: Converters.NAMES,\n },\n\n // Regarding maintitle, booktitle & journaltitle:\n // When importing, maintitle is preferred, since it represents the\n // larger container. When exporting, booktitle is preferred since\n // it is more common, unless number-of-volumes is present indicating a\n // multi-volume book.\n // journaltitle is only used for articles.\n {\n source: ['maintitle', 'mainsubtitle', 'maintitleaddon'],\n target: 'container-title',\n when: {\n source: true,\n target: { 'number-of-volumes': true },\n },\n convert: Converters.TITLE,\n },\n {\n source: ['booktitle', 'booksubtitle', 'booktitleaddon'],\n target: 'container-title',\n when: {\n source: { maintitle: false },\n target: {\n 'number-of-volumes': false,\n type(type) {\n return !type || !type.startsWith('article')\n },\n },\n },\n convert: Converters.TITLE,\n },\n {\n source: ['journaltitle', 'journalsubtitle', 'journaltitleaddon'],\n target: 'container-title',\n when: {\n source: { [TYPE]: 'article' },\n target: {\n type: ['article', 'article-newspaper', 'article-journal', 'article-magazine'],\n },\n },\n convert: Converters.TITLE,\n },\n {\n source: 'shortjournal',\n target: 'container-title-short',\n when: {\n source: { [TYPE]: 'article' },\n target: {\n type: ['article', 'article-newspaper', 'article-journal', 'article-magazine'],\n },\n },\n },\n {\n source: 'shortjournal',\n target: 'journalAbbreviation',\n when: {\n source: false,\n target: {\n 'container-title-short': false,\n },\n },\n },\n {\n source: 'number',\n target: 'collection-number',\n when: {\n source: {\n [TYPE]: [\n 'book',\n 'mvbook',\n 'inbook',\n 'bookinbook',\n 'suppbook',\n 'collection',\n 'mvcollection',\n 'incollection',\n 'suppcollection',\n 'manual',\n 'suppperiodical',\n 'proceedings',\n 'mvproceedings',\n 'refererence',\n ],\n },\n target: {\n type: [\n 'bill',\n 'book',\n 'broadcast',\n 'chapter',\n 'dataset',\n 'entry',\n 'entry-dictionary',\n 'entry-encyclopedia',\n 'figure',\n 'graphic',\n 'interview',\n 'legislation',\n 'legal_case',\n 'manuscript',\n 'map',\n 'motion_picture',\n 'musical_score',\n 'pamphlet',\n 'post',\n 'post-weblog',\n 'personal_communication',\n 'review',\n 'review-book',\n 'song',\n 'speech',\n 'thesis',\n 'treaty',\n 'webpage',\n ],\n },\n },\n },\n {\n source: 'series',\n target: 'collection-title',\n },\n {\n source: 'shortseries',\n target: 'collection-title-short',\n },\n {\n source: 'doi',\n target: 'DOI',\n },\n {\n source: 'edition',\n target: 'edition',\n },\n {\n source: 'editor',\n target: 'editor',\n convert: Converters.NAMES,\n },\n {\n source: [TYPE, 'entrysubtype', 'type'],\n target: ['type', 'genre'],\n convert: {\n toTarget(type, subtype, typeKey) {\n if (!typeKey) {\n if (type === 'mastersthesis') {\n typeKey = 'mathesis'\n }\n if (type === 'phdthesis') {\n typeKey = 'phdthesis'\n }\n if (type === 'techreport') {\n typeKey = 'techreport'\n }\n }\n\n return [types.source[type] || 'document', typeKey || subtype]\n },\n toSource(type, genre) {\n const sourceType = types.target[type] || 'misc'\n return genre in TYPE_KEYS ? [sourceType, undefined, genre] : [sourceType, genre]\n },\n },\n },\n {\n source: TYPE,\n when: { target: { type: false } },\n convert: {\n toSource() {\n return 'misc'\n },\n },\n },\n {\n source: 'eventdate',\n target: 'event-date',\n convert: Converters.DATE,\n },\n {\n source: 'venue',\n target: 'event-place',\n },\n {\n source: ['eventtitle', 'eventtitleaddon'],\n target: 'event-title',\n convert: Converters.EVENT_TITLE,\n },\n {\n source: ['eventtitle', 'eventtitleaddon'],\n target: 'event',\n convert: Converters.EVENT_TITLE,\n when: { source: false, target: { 'event-title': false } },\n },\n {\n source: LABEL,\n target: ['id', 'citation-key', 'author', 'issued', 'year-suffix', 'title'],\n convert: Converters.LABEL,\n },\n {\n source: 'isbn',\n target: 'ISBN',\n },\n {\n source: 'issn',\n target: 'ISSN',\n },\n {\n source: 'issue',\n target: 'issue',\n when: {\n source: {\n number: false,\n [TYPE]: ['article', 'periodical'],\n },\n target: {\n issue(issue) {\n return typeof issue === 'string' && !issue.match(/\\d+/)\n },\n type: ['article', 'article-journal', 'article-newspaper', 'article-magazine', 'periodical'],\n },\n },\n },\n {\n source: 'number',\n target: 'issue',\n when: {\n source: {\n [TYPE]: ['article', 'periodical', 'inproceedings'],\n },\n target: {\n issue(issue) {\n return issue && (typeof issue === 'number' || issue.match(/\\d+/))\n },\n type: [\n 'article',\n 'article-journal',\n 'article-newspaper',\n 'article-magazine',\n 'paper-conference',\n 'periodical',\n ],\n },\n },\n },\n {\n source: 'date',\n target: 'issued',\n convert: Converters.DATE,\n },\n {\n source: ['year', 'month', 'day'],\n target: 'issued',\n convert: Converters.YEAR_MONTH,\n when: {\n source: { date: false },\n target: false,\n },\n },\n {\n source: 'location',\n target: 'jurisdiction',\n when: {\n source: { type: 'patent' },\n target: { type: 'patent' },\n },\n },\n {\n source: 'keywords',\n target: 'keyword',\n convert: Converters.KEYWORDS,\n },\n {\n source: 'language',\n target: 'language',\n convert: Converters.PICK,\n },\n {\n source: 'langid',\n target: 'language',\n when: { source: { language: false }, target: false },\n },\n {\n source: 'note',\n target: 'note',\n },\n {\n source: 'addendum',\n target: 'note',\n when: { source: { note: false }, target: false },\n },\n {\n source: 'eid',\n target: 'number',\n when: { target: { type: ['article-journal'] } },\n },\n {\n source: ['isan', 'ismn', 'isrn', 'iswc'],\n target: 'number',\n convert: Converters.STANDARD_NUMBERS,\n when: {\n source: {\n [TYPE](type) {\n return type !== 'patent'\n },\n },\n target: {\n type(type) {\n return type !== 'patent'\n },\n },\n },\n },\n {\n source: 'number',\n target: 'number',\n when: {\n source: { [TYPE]: ['patent', 'report', 'techreport', 'legislation'] },\n target: { type: ['patent', 'report', 'legislation'] },\n },\n },\n {\n source: 'origdate',\n target: 'original-date',\n convert: Converters.DATE,\n },\n {\n source: 'origlocation',\n target: 'original-publisher-place',\n convert: Converters.PICK,\n },\n {\n source: 'origpublisher',\n target: 'original-publisher',\n convert: Converters.PICK,\n },\n {\n source: 'origtitle',\n target: 'original-title',\n },\n {\n source: 'pages',\n target: 'page',\n when: { source: { bookpagination: [undefined, 'page'] } },\n convert: Converters.PAGES,\n },\n {\n source: 'pagetotal',\n target: 'number-of-pages',\n },\n {\n source: 'part',\n target: 'part-number',\n },\n {\n source: ['eprint', 'eprinttype'],\n target: 'PMID',\n convert: Converters.EPRINT,\n },\n {\n source: 'location',\n target: 'publisher-place',\n convert: Converters.PICK,\n },\n {\n source: 'publisher',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: true,\n target: {\n // All except:\n // - thesis, report: institution\n // - webpage: organization\n type: [\n 'article',\n 'article-journal',\n 'article-magazine',\n 'article-newspaper',\n 'bill',\n 'book',\n 'broadcast',\n 'chapter',\n 'classic',\n 'collection',\n 'dataset',\n 'document',\n 'entry',\n 'entry-dictionary',\n 'entry-encyclopedia',\n 'event',\n 'figure',\n 'graphic',\n 'hearing',\n 'interview',\n 'legal_case',\n 'legislation',\n 'manuscript',\n 'map',\n 'motion_picture',\n 'musical_score',\n 'pamphlet',\n 'paper-conference',\n 'patent',\n 'performance',\n 'periodical',\n 'personal_communication',\n 'post',\n 'post-weblog',\n 'regulation',\n 'review',\n 'review-book',\n 'software',\n 'song',\n 'speech',\n 'standard',\n 'treaty',\n ],\n },\n },\n },\n {\n source: 'organization',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: {\n publisher: false,\n },\n target: {\n type: 'webpage', // TODO paper-conference?\n },\n },\n },\n {\n source: 'institution',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: {\n publisher: false,\n organization: false,\n },\n target: {\n type: ['report', 'thesis'],\n },\n },\n },\n {\n source: 'howpublished',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: {\n howpublished(howPublished) {\n return howPublished && !howPublished.startsWith('http')\n },\n publisher: false,\n organization: false,\n institution: false,\n },\n target: {\n type: 'manuscript',\n },\n },\n },\n {\n source: ['pages', 'bookpagination'],\n target: 'section',\n when: {\n source: { bookpagination: 'section' },\n target: { page: false },\n },\n convert: {\n toTarget(section) {\n return section\n },\n toSource(section) {\n return [section, 'section']\n },\n },\n },\n {\n source: 'pubstate',\n target: 'status',\n convert: Converters.STATUS,\n },\n {\n source: 'shorttitle',\n target: 'title-short',\n },\n {\n source: 'shorttitle',\n target: 'shortTitle',\n when: { source: false, target: { 'title-short': false } },\n },\n {\n source: ['title', 'subtitle', 'titleaddon'],\n target: 'title',\n convert: Converters.TITLE,\n },\n {\n source: 'translator',\n target: 'translator',\n convert: Converters.NAMES,\n },\n {\n source: 'url',\n target: 'URL',\n },\n {\n source: 'howpublished',\n target: 'URL',\n convert: Converters.HOW_PUBLISHED,\n when: {\n source: {\n url: false,\n },\n target: false,\n },\n },\n {\n source: 'version',\n target: 'version',\n },\n {\n source: 'volume',\n target: 'volume',\n },\n {\n source: 'volumes',\n target: 'number-of-volumes',\n },\n {\n source: ['issuetitle', 'issuesubtitle', 'issuetitleaddon'],\n target: 'volume-title',\n convert: Converters.TITLE,\n },\n])\n","import { util } from '../../core/index.js'\nimport { format as formatDate } from '@citation-js/date'\nimport types from './bibtexTypes.js'\nimport { TYPE, LABEL, Converters } from './shared.js'\nexport default new util.Translator([\n {\n source: 'note',\n target: 'accessed',\n when: {\n source: false,\n target: { note: false },\n },\n convert: {\n toSource(accessed) {\n return `[Online; accessed ${formatDate(accessed)}]`\n },\n },\n },\n {\n source: 'annote',\n target: 'annote',\n },\n {\n source: 'address',\n target: 'publisher-place',\n convert: Converters.PICK,\n },\n {\n source: 'author',\n target: 'author',\n convert: Converters.NAMES,\n },\n {\n source: 'chapter',\n target: 'chapter-number',\n },\n {\n source: 'number',\n target: 'collection-number',\n when: {\n source: {\n [TYPE]: [\n 'book',\n 'mvbook',\n 'inbook',\n 'collection',\n 'mvcollection',\n 'incollection',\n 'suppcollection',\n 'manual',\n 'suppperiodical',\n 'proceedings',\n 'mvproceedings',\n 'refererence',\n ],\n },\n target: {\n type: [\n 'bill',\n 'book',\n 'broadcast',\n 'chapter',\n 'dataset',\n 'entry',\n 'entry-dictionary',\n 'entry-encyclopedia',\n 'figure',\n 'graphic',\n 'interview',\n 'legislation',\n 'legal_case',\n 'manuscript',\n 'map',\n 'motion_picture',\n 'musical_score',\n 'pamphlet',\n 'post',\n 'post-weblog',\n 'personal_communication',\n 'review',\n 'review-book',\n 'song',\n 'speech',\n 'thesis',\n 'treaty',\n 'webpage',\n ],\n },\n },\n },\n {\n source: 'series',\n target: 'collection-title',\n },\n {\n source: 'booktitle',\n target: 'container-title',\n when: {\n target: {\n type: ['chapter', 'paper-conference'],\n },\n },\n },\n {\n source: 'journal',\n target: 'container-title',\n when: {\n source: {\n [TYPE]: 'article',\n },\n target: {\n type: ['article', 'article-newspaper', 'article-journal', 'article-magazine'],\n },\n },\n },\n {\n source: 'edition',\n target: 'edition',\n },\n {\n source: 'editor',\n target: 'editor',\n convert: Converters.NAMES,\n },\n {\n source: LABEL,\n target: ['id', 'citation-key', 'author', 'issued', 'year-suffix', 'title'],\n convert: Converters.LABEL,\n },\n {\n source: 'number',\n target: 'issue',\n when: {\n source: {\n [TYPE]: ['article', 'periodical', 'inproceedings'],\n },\n target: {\n issue(issue) {\n return typeof issue === 'number' || (typeof issue === 'string' && issue.match(/\\d+/))\n },\n type: [\n 'article',\n 'article-journal',\n 'article-newspaper',\n 'article-magazine',\n 'paper-conference',\n 'periodical',\n ],\n },\n },\n },\n {\n source: ['year', 'month', 'day'],\n target: 'issued',\n convert: Converters.YEAR_MONTH,\n },\n {\n source: 'note',\n target: 'note',\n },\n {\n source: 'number',\n target: 'number',\n when: {\n source: { [TYPE]: ['patent', 'report', 'techreport'] },\n target: { type: ['patent', 'report'] },\n },\n },\n {\n source: 'pages',\n target: 'page',\n convert: Converters.PAGES,\n },\n {\n source: 'publisher',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n target: {\n // All except manuscript, paper-conference, techreport and thesis\n type: [\n 'article',\n 'article-journal',\n 'article-magazine',\n 'article-newspaper',\n 'bill',\n 'book',\n 'broadcast',\n 'chapter',\n 'classic',\n 'collection',\n 'dataset',\n 'document',\n 'entry',\n 'entry-dictionary',\n 'entry-encyclopedia',\n 'event',\n 'figure',\n 'graphic',\n 'hearing',\n 'interview',\n 'legal_case',\n 'legislation',\n 'map',\n 'motion_picture',\n 'musical_score',\n 'pamphlet',\n 'patent',\n 'performance',\n 'periodical',\n 'personal_communication',\n 'post',\n 'post-weblog',\n 'regulation',\n 'review',\n 'review-book',\n 'software',\n 'song',\n 'speech',\n 'standard',\n 'treaty',\n 'webpage',\n ],\n },\n },\n },\n {\n source: 'organization',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: { publisher: false },\n target: { type: 'paper-conference' },\n },\n },\n {\n source: 'institution',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: {\n publisher: false,\n organization: false,\n },\n target: { type: 'report' },\n },\n },\n {\n source: 'school',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: {\n institution: false,\n organization: false,\n publisher: false,\n },\n target: { type: 'thesis' },\n },\n },\n {\n source: 'howpublished',\n target: 'publisher',\n convert: Converters.PICK,\n when: {\n source: {\n howpublished(howPublished) {\n return howPublished && !howPublished.startsWith('http')\n },\n publisher: false,\n organization: false,\n institution: false,\n school: false,\n },\n target: {\n type: 'manuscript',\n },\n },\n },\n {\n source: 'title',\n target: 'title',\n },\n {\n source: [TYPE, 'type'],\n target: ['type', 'genre'],\n convert: {\n toTarget(sourceType, subType) {\n /* istanbul ignore next */\n const type = types.source[sourceType] || 'document'\n\n if (subType) {\n return [type, subType]\n } else if (sourceType === 'mastersthesis') {\n return [type, \"Master's thesis\"]\n } else if (sourceType === 'phdthesis') {\n return [type, 'PhD thesis']\n } else {\n return [type]\n }\n },\n toSource(targetType, genre) {\n const type = types.target[targetType] || 'misc'\n\n if (/^(master'?s|diploma) thesis$/i.test(genre)) {\n return ['mastersthesis']\n } else if (/^(phd|doctoral) thesis$/i.test(genre)) {\n return ['phdthesis']\n } else {\n return [type, genre]\n }\n },\n },\n },\n {\n source: TYPE,\n when: {\n target: { type: false },\n },\n convert: {\n toSource() {\n return 'misc'\n },\n },\n },\n {\n source: 'howpublished',\n target: 'URL',\n convert: Converters.HOW_PUBLISHED,\n when: {\n target: {\n publisher: false,\n },\n },\n },\n {\n source: 'volume',\n target: 'volume',\n },\n])\n","function _objectWithoutProperties(source, excluded) {\n if (source == null) return {}\n var target = _objectWithoutPropertiesLoose(source, excluded)\n var key, i\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source)\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i]\n if (excluded.indexOf(key) >= 0) continue\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue\n target[key] = source[key]\n }\n }\n return target\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {}\n var target = {}\n var sourceKeys = Object.keys(source)\n var key, i\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i]\n if (excluded.indexOf(key) >= 0) continue\n target[key] = source[key]\n }\n return target\n}\n\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, 'string')\n return typeof key === 'symbol' ? key : String(key)\n}\n\nfunction _toPrimitive(input, hint) {\n if (typeof input !== 'object' || input === null) return input\n var prim = input[Symbol.toPrimitive]\n if (prim !== undefined) {\n var res = prim.call(input, hint || 'default')\n if (typeof res !== 'object') return res\n throw new TypeError('@@toPrimitive must return a primitive value.')\n }\n return (hint === 'string' ? String : Number)(input)\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object)\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object)\n if (enumerableOnly) {\n symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable\n })\n }\n keys.push.apply(keys, symbols)\n }\n return keys\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {}\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key])\n })\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source))\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key))\n })\n }\n }\n return target\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true,\n })\n } else {\n obj[key] = value\n }\n return obj\n}\n\nimport { TYPE, LABEL } from './shared.js'\nimport biblatex from './biblatex.js'\nimport bibtex from './bibtex.js'\n\nfunction crossref(entry, registry) {\n if (entry.crossref in registry) {\n const parent = registry[entry.crossref].properties\n\n if (parent === entry) {\n return entry\n }\n\n return Object.assign({}, crossref(parent, registry), entry)\n }\n\n return entry\n}\n\nfunction _parse(input, spec) {\n const registry = {}\n\n for (const entry of input) {\n registry[entry.label] = entry\n }\n\n return input.map(({ type, label, properties }) =>\n spec.convertToTarget(\n _objectSpread(\n {\n [TYPE]: type,\n [LABEL]: label,\n },\n crossref(properties, registry)\n )\n )\n )\n}\n\nfunction _format(input, spec) {\n return input.map((entry) => {\n const _spec$convertToSource = spec.convertToSource(entry),\n { [TYPE]: type, [LABEL]: label } = _spec$convertToSource,\n properties = _objectWithoutProperties(\n _spec$convertToSource,\n [TYPE, LABEL].map(_toPropertyKey)\n )\n\n return {\n type,\n label,\n properties,\n }\n })\n}\n\nexport function parseBibtex(input) {\n return _parse(input, bibtex)\n}\nexport function formatBibtex(input) {\n return _format(input, bibtex)\n}\nexport function parse(input) {\n return _parse(input, biblatex)\n}\nexport function format(input) {\n return _format(input, biblatex)\n}\n","// @ts-nocheck\n/**\n * @access private\n * @param {String}\n * @returns {Boolean|null} true if uppercase, false if lowercase, null if neither\n */\nexport function getStringCase(string) {\n const a = string.toUpperCase()\n const b = string.toLowerCase()\n\n for (let i = 0; i < string.length; i++) {\n if (a[i] !== b[i]) {\n return a[i] === string[i]\n }\n }\n\n return null\n}\n\n/**\n * @access private\n * @param {Array<Object>} parts\n * @return {String|undefined}\n */\nexport function formatNameParts(parts) {\n if (parts.length === 0) {\n return undefined\n }\n\n let piece = ''\n\n while (parts.length > 1) {\n const { value, hyphenated } = parts.shift()\n piece += value + (hyphenated ? '-' : ' ')\n }\n\n const output = piece + parts[0].value\n return output[0] && output\n}\n\n/**\n * @access private\n * @param {Array<Object>} parts\n * @param {Boolean} [orderGiven=true] - also consider the given name\n * @return {Array<String>}\n */\nexport function orderNameParts(parts, /* istanbul ignore next */ orderGiven = true) {\n const given = []\n const undecided = []\n\n if (orderGiven) {\n while (parts.length > 1 && parts[0].upperCase !== false) {\n given.push(...undecided)\n undecided.length = 0\n\n while (parts.length > 1 && parts[0].upperCase !== false && !parts[0].hyphenated) {\n given.push(parts.shift())\n }\n\n while (parts.length > 0 && parts[0].upperCase !== false && parts[0].hyphenated) {\n undecided.push(parts.shift())\n }\n }\n }\n\n const prefix = []\n const family = []\n\n while (parts.length > 1) {\n prefix.push(...family)\n family.length = 0\n\n while (parts.length > 1 && parts[0].upperCase === false) {\n prefix.push(parts.shift())\n }\n\n while (parts.length > 0 && parts[0].upperCase !== false) {\n family.push(parts.shift())\n }\n }\n\n if (undecided.length) {\n family.unshift(...undecided)\n }\n if (parts.length) {\n family.push(parts[0])\n }\n\n return [formatNameParts(given), formatNameParts(prefix), formatNameParts(family)]\n}\n\n/**\n * @access private\n * @param {Array<Array<Object>>} pieces\n * @return {Object}\n */\nexport function orderNamePieces(pieces) {\n if (pieces[0][0].label) {\n const name = {}\n for (const [{ value, label }] of pieces) {\n name[label] = value\n }\n return name\n }\n\n const name = {}\n const [given, prefix, family] = orderNameParts(pieces[0], pieces.length === 1)\n\n if (family) {\n name.family = family\n }\n if (prefix) {\n name.prefix = prefix\n }\n\n if (pieces.length === 3) {\n name.given = formatNameParts(pieces[2])\n name.suffix = formatNameParts(pieces[1])\n } else if (pieces.length === 2) {\n name.given = formatNameParts(pieces[1])\n } else if (given) {\n name.given = given\n }\n\n return name\n}\n","import { util } from '../../core/index.js'\nimport moo from 'moo'\nimport config from '../config.js'\nimport * as constants from './constants.js'\nimport { orderNamePieces, formatNameParts, getStringCase } from './name.js'\n\nconst text = {\n command: {\n match: /\\\\(?:[a-zA-Z]+|.) */,\n type: moo.keywords({\n commandBegin: '\\\\begin',\n commandEnd: '\\\\end',\n }),\n value: (s) => s.slice(1).trim(),\n },\n lbrace: { match: '{', push: 'bracedLiteral' },\n mathShift: { match: '$', push: 'mathLiteral' },\n whitespace: {\n match: /[\\s]+|~/,\n lineBreaks: true,\n // \\xa0 = Non-breakable space\n value(token) {\n return token === '~' ? '\\xa0' : ' '\n },\n },\n}\n\nconst lexer = moo.states({\n stringLiteral: {\n ...text,\n text: /[^{$}\\s~\\\\]+/,\n },\n namesLiteral: {\n and: /\\s+[aA][nN][dD]\\s+/,\n comma: ',',\n hyphen: '-',\n equals: '=',\n ...text,\n text: /[^{$}\\s~\\\\,=-]+/,\n },\n listLiteral: {\n and: /\\s+and\\s+/,\n ...text,\n text: /[^{$}\\s~\\\\]+/,\n },\n separatedLiteral: {\n comma: ',',\n ...text,\n text: /[^{$}\\s~\\\\,]+/,\n },\n bracedLiteral: {\n ...text,\n rbrace: { match: '}', pop: true },\n text: /[^{$}\\s~\\\\]+/,\n },\n mathLiteral: {\n ...text,\n mathShift: { match: '$', pop: true },\n script: /[\\^_]/,\n text: /[^{$}\\s~\\\\^_]+/,\n },\n})\n\nfunction flattenConsString(string) {\n // eslint-disable-next-line no-unused-expressions\n string[0]\n return string\n}\n\nfunction applyFormatting(text, format) {\n if (format in constants.formatting) {\n return text && constants.formatting[format].join(text)\n } else {\n return text\n }\n}\n\nexport const valueGrammar = new util.Grammar(\n {\n String() {\n let output = ''\n while (!this.matchEndOfFile()) {\n output += this.consumeRule('Text')\n }\n return flattenConsString(output)\n },\n\n StringNames() {\n const list = []\n\n while (true) {\n this.consumeToken('whitespace', true)\n list.push(this.consumeRule('Name'))\n this.consumeToken('whitespace', true)\n\n if (this.matchEndOfFile()) {\n return list\n } else {\n this.consumeToken('and')\n }\n }\n },\n\n Name() {\n const pieces = []\n\n while (true) {\n pieces.push(this.consumeRule('NamePiece'))\n\n if (this.matchEndOfFile() || this.matchToken('and')) {\n return orderNamePieces(pieces)\n } else {\n this.consumeToken('comma')\n this.consumeToken('whitespace', true)\n }\n }\n },\n\n NamePiece() {\n const parts = []\n\n while (true) {\n const part = this.consumeRule('NameToken')\n\n if (part.label) {\n part.label = formatNameParts([...parts, { value: part.label }])\n return [part]\n }\n\n parts.push(part)\n\n if (this.matchEndOfFile() || this.matchToken('and') || this.matchToken('comma')) {\n return parts\n } else {\n while (this.matchToken('hyphen') || this.matchToken('whitespace')) {\n this.consumeToken()\n }\n }\n }\n },\n\n NameToken() {\n let upperCase = null\n let value = ''\n\n while (true) {\n // If needed, test regular text for case\n if (upperCase === null && this.matchToken('text')) {\n const text = this.consumeToken().value\n value += text\n upperCase = getStringCase(text)\n\n // If end of name part, return up\n } else if (\n this.matchEndOfFile() ||\n this.matchToken('and') ||\n this.matchToken('comma') ||\n this.matchToken('whitespace')\n ) {\n return { value, upperCase }\n\n // Same for hyphen, but note it is hyphenated\n } else if (this.matchToken('hyphen')) {\n return { value, upperCase, hyphenated: true }\n\n // If equals we are in BibLaTeX extended mode\n // 'family=Last, given=First, prefix=von'\n } else if (this.matchToken('equals')) {\n this.consumeToken('equals')\n const text = this.consumeRule('NamePiece')\n if (text[0].label) {\n value += '=' + text[0].label\n }\n return { value: formatNameParts(text), label: value }\n\n // Else consume other text\n } else {\n value += this.consumeRule('Text')\n }\n }\n },\n\n StringList() {\n const list = []\n while (!this.matchEndOfFile()) {\n let output = ''\n while (!this.matchEndOfFile() && !this.matchToken('and')) {\n output += this.consumeRule('Text')\n }\n list.push(flattenConsString(output))\n\n this.consumeToken('and', true)\n }\n return list.length === 1 ? list[0] : list\n },\n\n StringSeparated() {\n const list = []\n while (!this.matchEndOfFile()) {\n let output = ''\n while (!this.matchEndOfFile() && !this.matchToken('comma')) {\n output += this.consumeRule('Text')\n }\n list.push(output.trim())\n\n this.consumeToken('comma', true)\n this.consumeToken('whitespace', true)\n }\n return list\n },\n\n StringVerbatim() {\n let output = ''\n while (!this.matchEndOfFile()) {\n output += this.consumeToken().text\n }\n return flattenConsString(output)\n },\n\n StringUri() {\n const uri = this.consumeRule('StringVerbatim')\n try {\n if (decodeURI(uri) === uri) {\n return encodeURI(uri)\n } else {\n return uri\n }\n } catch (e) {\n // malformed URI\n return encodeURI(uri)\n }\n },\n\n StringTitleCase() {\n this.state.sentenceCase = true\n let output = ''\n\n while (!this.matchEndOfFile()) {\n output += this.consumeRule('Text')\n }\n\n return flattenConsString(output)\n },\n\n BracketString() {\n let output = ''\n this.consumeToken('lbrace')\n\n const sentenceCase = this.state.sentenceCase\n // If the bracket string starts with a command the sentence case behavior\n // is maintained within the brackets.\n this.state.sentenceCase = sentenceCase && this.matchToken('command')\n this.state.partlyLowercase &&= this.state.sentenceCase\n\n while (!this.matchToken('rbrace')) {\n output += this.consumeRule('Text')\n }\n\n // topLevel meaning that the bracket string is not top level but a direct\n // child of the top level value.\n const topLevel = sentenceCase && !this.state.sentenceCase\n // Protect the case of the bracket string if it is a direct child of the top\n // level, and the string is partly lowercase.\n const protectCase = topLevel && this.state.partlyLowercase\n // Restore the sentence case of the outside of the brackets.\n this.state.sentenceCase = sentenceCase\n\n this.consumeToken('rbrace')\n\n return protectCase ? applyFormatting(output, 'nocase') : output\n },\n\n MathString() {\n let output = ''\n this.consumeToken('mathShift')\n while (!this.matchToken('mathShift')) {\n if (this.matchToken('script')) {\n const script = this.consumeToken('script').value\n const text = this.consumeRule('Text').split('')\n if (text.every((char) => char in constants.mathScripts[script])) {\n output += text.map((char) => constants.mathScripts[script][char]).join('')\n } else {\n const formatName = constants.mathScriptFormatting[script]\n output += constants.formatting[formatName].join(text.join(''))\n }\n\n continue\n }\n\n if (this.matchToken('command')) {\n const command = this.token.value\n if (command in constants.mathScriptFormatting) {\n this.consumeToken('command')\n const text = this.consumeRule('BracketString')\n output += applyFormatting(text, constants.mathScriptFormatting[command])\n continue\n }\n }\n\n output += this.consumeRule('Text')\n }\n this.consumeToken('mathShift')\n return output\n },\n\n Text() {\n /* eslint-disable padded-blocks */\n if (this.matchToken('lbrace')) {\n return this.consumeRule('BracketString')\n } else if (this.matchToken('mathShift')) {\n return this.consumeRule('MathString')\n } else if (this.matchToken('whitespace')) {\n return this.consumeToken('whitespace').value\n } else if (this.matchToken('commandBegin')) {\n return this.consumeRule('EnclosedEnv')\n } else if (this.matchToken('command')) {\n return this.consumeRule('Command')\n }\n /* eslint-enable padded-blocks */\n\n const text = this.consumeToken('text').value.replace(\n constants.ligaturePattern,\n (ligature) => constants.ligatures[ligature]\n )\n\n const afterPunctuation = this.state.afterPunctuation\n this.state.afterPunctuation = /[?!.:]$/.test(text)\n\n // If the text fragment is not topLevel and has a case, check whether lowercase\n if (!this.state.sentenceCase) {\n this.state.partlyLowercase ||= text === text.toLowerCase() && text !== text.toUpperCase()\n return text\n }\n\n // Unicode-safe splitting (as in, accounting for surrogate pairs)\n const [first, ...otherCharacters] = text\n const rest = otherCharacters.join('')\n const restLowerCase = rest.toLowerCase()\n\n // Word case should be preserved for proper nouns (e.g. those with capital\n // letters in other places than the first letter).\n if (rest !== restLowerCase) {\n return text\n }\n\n if (!afterPunctuation) {\n return text.toLowerCase()\n }\n\n return first + restLowerCase\n // return first.toUpperCase() + restLowerCase\n },\n\n Command() {\n const commandToken = this.consumeToken('command')\n const command = commandToken.value\n\n // formatting envs\n if (command in constants.formattingEnvs) {\n const text = this.consumeRule('Env')\n const format = constants.formattingEnvs[command]\n return applyFormatting(text, format)\n\n // formatting commands\n } else if (command in constants.formattingCommands) {\n const text = this.consumeRule('BracketString')\n const format = constants.formattingCommands[command]\n return applyFormatting(text, format)\n\n // commands\n } else if (command in constants.commands) {\n return constants.commands[command]\n\n // diacritics\n } else if (command in constants.diacritics && !this.matchEndOfFile()) {\n const text = this.consumeRule('Text')\n const diacritic = text[0] + constants.diacritics[command]\n return diacritic.normalize('NFC') + text.slice(1)\n\n // argument commands\n } else if (command in constants.argumentCommands) {\n const func = constants.argumentCommands[command]\n const args = []\n let arity = func.length\n\n while (arity-- > 0) {\n this.consumeToken('whitespace', true)\n args.push(this.consumeRule('BracketString'))\n }\n\n return func(...args)\n\n // escapes\n } else if (/^[&%$#_{}]$/.test(command)) {\n return commandToken.text.slice(1)\n\n // unknown commands\n } else {\n return commandToken.text\n }\n },\n\n Env() {\n let output = ''\n while (!this.matchEndOfFile() && !this.matchToken('rbrace')) {\n output += this.consumeRule('Text')\n }\n return output\n },\n\n EnclosedEnv() {\n this.consumeToken('commandBegin')\n const beginEnv = this.consumeRule('BracketString')\n\n let output = ''\n\n while (!this.matchToken('commandEnd')) {\n output += this.consumeRule('Text')\n }\n\n const end = this.consumeToken('commandEnd')\n const endEnv = this.consumeRule('BracketString')\n\n if (beginEnv !== endEnv) {\n throw new SyntaxError(\n this.lexer.formatError(\n end,\n `environment started with \"${beginEnv}\", ended with \"${endEnv}\"`\n )\n )\n }\n\n return applyFormatting(output, constants.formattingEnvs[beginEnv])\n },\n },\n {\n sentenceCase: false,\n partlyLowercase: false,\n afterPunctuation: true,\n }\n)\n\nfunction singleLanguageIsEnglish(language) {\n return constants.sentenceCaseLanguages.includes(language.toLowerCase())\n}\n\nfunction isEnglish(languages) {\n if (Array.isArray(languages)) {\n return languages.every(singleLanguageIsEnglish)\n }\n return singleLanguageIsEnglish(languages)\n}\n\nfunction getMainRule(fieldType, languages) {\n if (fieldType[1] === 'name') {\n /* istanbul ignore next: does not exist */\n return fieldType[0] === 'list' ? 'StringNames' : 'Name'\n }\n\n if (fieldType[1] === 'title') {\n const option = config.parse.sentenceCase\n if (option === 'always' || (option === 'english' && isEnglish(languages))) {\n return 'StringTitleCase'\n } else {\n return 'String'\n }\n }\n\n switch (fieldType[0] === 'field' ? fieldType[1] : fieldType[0]) {\n case 'list':\n return 'StringList'\n case 'separated':\n return 'StringSeparated'\n case 'verbatim':\n return 'StringVerbatim'\n case 'uri':\n return 'StringUri'\n case 'title':\n case 'literal':\n default:\n return 'String'\n }\n}\n\nfunction getLexerState(fieldType) {\n if (fieldType[1] === 'name') {\n return 'namesLiteral'\n }\n\n switch (fieldType[0]) {\n case 'list':\n return 'listLiteral'\n case 'separated':\n return 'separatedLiteral'\n case 'field':\n default:\n return 'stringLiteral'\n }\n}\n\nexport function parse(text, field, languages = []) {\n const fieldType = constants.fieldTypes[field] || []\n return valueGrammar.parse(\n lexer.reset(text, {\n state: getLexerState(fieldType),\n line: 0,\n col: 0,\n }),\n getMainRule(fieldType, languages)\n )\n}\n","import config from '../config.js'\nimport { parse as mapBiblatex, parseBibtex as mapBibtex } from '../mapping/index.js'\nimport { parse as parseValue } from './value.js'\nimport { required } from './constants.js'\n\nfunction validate(entries, requirements) {\n const problems = []\n\n for (const { type, label, properties } of entries) {\n if (type in requirements) {\n const missing = []\n for (const field of requirements[type]) {\n if (Array.isArray(field) && !field.some((field) => field in properties)) {\n missing.push(field.join('/'))\n } else if (typeof field === 'string' && !(field in properties)) {\n missing.push(field)\n }\n }\n if (missing.length) {\n problems.push([label, `missing fields: ${missing.join(', ')}`])\n }\n } else {\n problems.push([label, `invalid type: \"${type}\"`])\n }\n }\n\n if (problems.length) {\n throw new RangeError(\n ['Invalid entries:']\n .concat(problems.map(([label, problem]) => ` - ${label} has ${problem}`))\n .join('\\n')\n )\n }\n}\n\nfunction parseEntryValues(entry) {\n const output = {}\n\n if ('language' in entry.properties) {\n output.language = parseValue(entry.properties.language, 'language')\n }\n\n for (const property in entry.properties) {\n const value = entry.properties[property]\n if (value === '') {\n continue\n }\n output[property] = parseValue(value + '', property, output.language)\n }\n\n return { ...entry, properties: output }\n}\n\nexport function parse(entries) {\n if (config.parse.strict) {\n validate(entries, required.biblatex)\n }\n\n return mapBiblatex(entries.map(parseEntryValues))\n}\n\nexport function parseBibtex(entries) {\n if (config.parse.strict) {\n validate(entries, required.bibtex)\n }\n\n return mapBibtex(entries.map(parseEntryValues))\n}\n","import { parse as parseFile } from './file.js'\nimport { parse as parseBibtxt } from './bibtxt.js'\nimport { parse as parseEntries, parseBibtex } from './entries.js'\n\n/**\n * @constant {module:@citation-js/core.plugins~pluginRef} ref\n * @memberof module:@citation-js/plugin-bibtex\n * @default '@bibtex'\n */\nexport const ref = '@bibtex'\n\n/**\n * @namespace formats\n * @type module:@citation-js/core.plugins.input~format,module:@citation-js/core.plugins.input~parsers\n * @memberof module:@citation-js/plugin-bibtex\n */\nexport const formats = {\n /**\n * BibLaTeX file.\n *\n * @type module:@citation-js/core.plugins.input~parsers\n * @memberof module:@citation-js/plugin-bibtex.formats\n * @property {module:@citation-js/core.plugins.input~dataParser} parse\n * @property {module:@citation-js/core.plugins.input~typeParser} parseType\n */\n '@biblatex/text': {\n parse: parseFile,\n parseType: {\n dataType: 'String',\n predicate: /@\\s{0,5}[A-Za-z]{1,13}\\s{0,5}\\{\\s{0,5}[^@{}\"=,\\\\\\s]{0,100}\\s{0,5},[\\s\\S]*\\}/,\n },\n },\n\n /**\n * BibLaTeX object.\n *\n * ```js\n * {\n * type: '...',\n * label: '...',\n * properties: {...}\n * }\n * ```\n *\n * @type module:@citation-js/core.plugins.input~parsers\n * @memberof module:@citation-js/plugin-bibtex.formats\n * @property {module:@citation-js/core.plugins.input~dataParser} parse\n * @property {module:@citation-js/core.plugins.input~typeParser} parseType\n */\n '@biblatex/entry+object': {\n parse(input) {\n return parseEntries([input])\n },\n parseType: {\n dataType: 'SimpleObject',\n propertyConstraint: { props: ['type', 'label', 'properties'] },\n },\n },\n\n /**\n * Array of {@link module:@citation-js/plugin-bibtex.formats.\"@biblatex/entries+list\"|BibLaTeX objects}.\n *\n * @type module:@citation-js/core.plugins.input~parsers\n * @memberof module:@citation-js/plugin-bibtex.formats\n * @property {module:@citation-js/core.plugins.input~dataParser} parse\n * @property {module:@citation-js/core.plugins.input~typeParser} parseType\n */\n '@biblatex/entries+list': {\n parse: parseEntries,\n parseType: { elementConstraint: '@biblatex/entry+object' },\n },\n\n /**\n * BibTeX file.\n *\n * @type module:@citation-js/core.plugins.input~parsers\n * @memberof module:@citation-js/plugin-bibtex.formats\n * @property {module:@citation-js/core.plugins.input~dataParser} parse\n * @property {module:@citation-js/core.plugins.input~format} outputs\n */\n '@bibtex/text': {\n parse: parseFile,\n outputs: '@bibtex/entries+list',\n },\n\n /**\n * BibTeX object.\n *\n * ```js\n * {\n * type: '...',\n * label: '...',\n * properties: {...}\n * }\n * ```\n *\n * @type module:@citation-js/core.plugins.input~parsers\n * @memberof module:@citation-js/plugin-bibtex.formats\n * @property {module:@citation-js/core.plugins.input~dataParser} parse\n */\n '@bibtex/entry+object': {\n parse(input) {\n return parseBibtex([input])\n },\n },\n\n /**\n * Array of {@link module:@citation-js/plugin-bibtex.formats.\"@bibtex/entries+list\"|BibTeX objects}.\n *\n * @type module:@citation-js/core.plugins.input~parsers\n * @memberof module:@citation-js/plugin-bibtex.formats\n * @property {module:@citation-js/core.plugins.input~dataParser} parse\n */\n '@bibtex/entries+list': {\n parse: parseBibtex,\n },\n\n /**\n * Bib.TXT file.\n *\n * @type module:@citation-js/core.plugins.input~parsers\n * @memberof module:@citation-js/plugin-bibtex.formats\n * @property {module:@citation-js/core.plugins.input~dataParser} parse\n * @property {module:@citation-js/core.plugins.input~typeParser} parseType\n */\n '@bibtxt/text': {\n parse: parseBibtxt,\n parseType: {\n dataType: 'String',\n predicate: /^\\s*(\\[(?!\\s*[{[]).*?\\]\\s*(\\n\\s*[^[]((?!:)\\S)+\\s*:\\s*.+?\\s*)*\\s*)+$/,\n },\n },\n}\n","//@ts-nocheck\nimport { diacritics, commands, ligatures, fieldTypes } from '../input/constants.js'\nconst unicode = {}\n\nfor (const command in commands) {\n unicode[commands[command]] = command\n}\n\nfor (const diacritic in diacritics) {\n unicode[diacritics[diacritic]] = diacritic\n}\n\nfor (const ligature in ligatures) {\n unicode[ligatures[ligature]] = ligature\n}\n\nconst UNSAFE_UNICODE =\n /[^a-zA-Z0-9\\s!\"#%&'()*+,\\-./:;=?@[\\]{}\\u0300-\\u0308\\u030a-\\u030c\\u0332\\u0323\\u0327\\u0328\\u0361\\u0326]/g\nconst DIACRITIC_PATTERN = /.[\\u0300-\\u0308\\u030a-\\u030c\\u0332\\u0323\\u0327\\u0328\\u0361\\u0326]+/g\nconst listDelimiters = {\n separated: ',',\n list: ' and ',\n}\nconst richTextMappings = {\n i: '\\\\textit{',\n b: '\\\\textbf{',\n sc: '\\\\textsc{',\n sup: '\\\\textsuperscript{',\n sub: '\\\\textsubscript{',\n 'span style=\"font-variant:small-caps;\"': '\\\\textsc{',\n 'span class=\"nocase\"': '{',\n}\n\nfunction escapeValue(value) {\n return value\n .normalize('NFKD')\n .replace(UNSAFE_UNICODE, (char) =>\n char in unicode ? (unicode[char] in ligatures ? unicode[char] : `\\\\${unicode[char]}{}`) : ''\n )\n .replace(DIACRITIC_PATTERN, (match) =>\n Array.from(match).reduce((subject, diacritic) => `{\\\\${unicode[diacritic]} ${subject}}`)\n )\n}\n\nfunction formatRichText(value) {\n const closingTags = []\n let tokens = value.split(/<(\\/?(?:i|b|sc|sup|sub|span)|span .*?)>/g)\n tokens = tokens.map((token, index) => {\n if (index % 2 === 0) {\n return escapeValue(token)\n } else if (token in richTextMappings) {\n closingTags.push('/' + token.split(' ')[0])\n return richTextMappings[token]\n } else if (token === closingTags[closingTags.length - 1]) {\n closingTags.pop()\n return '}'\n } else {\n return ''\n }\n })\n return tokens.join('')\n}\n\nfunction formatName(name) {\n if (name.family && !name.prefix && !name.given & !name.suffix) {\n return name.family.includes(listDelimiters.list) ? name.family : `{${name.family}}`\n }\n\n const parts = ['']\n\n if (name.prefix && name.family) {\n parts[0] += name.prefix + ' '\n }\n\n if (name.family) {\n parts[0] += name.family\n }\n\n if (name.suffix) {\n parts.push(name.suffix)\n parts.push(name.given || '')\n } else {\n parts.push(name.given)\n }\n\n return escapeValue(parts.join(', ').trim())\n}\n\nfunction formatTitle(title) {\n return formatRichText(title)\n .split(/(:\\s*)/)\n .map((part, i) => (i % 2 ? part : part.replace(/(?!^)\\b[a-z]*[A-Z].*?\\b/g, '{$&}')))\n .join('')\n}\n\nfunction formatSingleValue(value, valueType) {\n switch (valueType) {\n case 'title':\n return formatTitle(value)\n\n case 'literal':\n return formatRichText(value.toString())\n\n case 'name':\n return formatName(value)\n\n case 'verbatim':\n case 'uri':\n return value.toString()\n\n default:\n return escapeValue(value.toString())\n }\n}\n\nfunction formatList(values, valueType, listType) {\n const delimiter = listDelimiters[listType]\n return values\n .map((value) => {\n const formatted = formatSingleValue(value, valueType)\n return formatted.includes(delimiter) ? `{${formatted}}` : formatted\n })\n .join(delimiter)\n}\n\nexport function format(field, value) {\n if (!(field in fieldTypes)) {\n return formatSingleValue(value, 'verbatim')\n }\n\n const [listType, valueType] = fieldTypes[field]\n\n if (listType in listDelimiters) {\n return formatList(value, valueType, listType)\n } else {\n return formatSingleValue(value, valueType)\n }\n}\n","import { format as mapBiblatex, formatBibtex as mapBibtex } from '../mapping/index.js'\nimport { format as formatValue } from './value.js'\n\nfunction formatEntryValues({ type, label, properties }) {\n const output = {}\n\n for (const property in properties) {\n const value = properties[property]\n output[property] = formatValue(property, value)\n }\n\n return {\n type,\n label,\n properties: output,\n }\n}\n\nexport function format(entries) {\n return mapBiblatex(entries).map(formatEntryValues)\n}\nexport function formatBibtex(entries) {\n return mapBibtex(entries).map(formatEntryValues)\n}\n","function formatEntry({ type, label, properties }, dict) {\n const fields = Object.entries(properties).map(([field, value]) =>\n dict.listItem.join(`${field} = {${value}},`)\n )\n return dict.entry.join(`@${type}{${label},${dict.list.join(fields.join(''))}}`)\n}\n\nexport function format(src, dict) {\n const entries = src.map((entry) => formatEntry(entry, dict)).join('')\n return dict.bibliographyContainer.join(entries)\n}\n","function formatEntry({ type, label, properties }, dict) {\n const fields = Object.entries(properties)\n .concat([['type', type]])\n .map(([field, value]) => dict.listItem.join(`${field}: ${value}`))\n return dict.entry.join(`[${label}]${dict.list.join(fields.join(''))}`)\n}\n\nexport function format(src, dict) {\n const entries = src.map((entry) => formatEntry(entry, dict)).join('\\n')\n return dict.bibliographyContainer.join(entries)\n}\n","import { plugins } from '../../core/index.js'\nimport { format as mapBiblatex, formatBibtex as mapBibtex } from './entries.js'\nimport { format } from './bibtex.js'\nimport { format as formatBibtxt } from './bibtxt.js'\n\nconst factory = function (mapper, formatter) {\n return function (data, opts = {}) {\n const { type, format = type || 'text' } = opts\n data = mapper(data)\n\n if (format === 'object') {\n return data\n } else if (plugins.dict.has(format)) {\n return formatter(data, plugins.dict.get(format), opts)\n } else {\n throw new RangeError(`Output dictionary \"${format}\" not available`)\n }\n }\n}\n\nexport default {\n bibtex: factory(mapBibtex, format),\n biblatex: factory(mapBiblatex, format),\n bibtxt: factory(mapBibtex, formatBibtxt),\n}\n","import { plugins } from '../core/index.js'\nimport { ref, formats as input } from './input/index.js'\nimport config from './config.js'\nimport output from './output/index.js'\nplugins.add(ref, {\n input,\n output,\n config,\n})\n","import { util } from '../core/index.js'\n\nconst defaultLocales = {\n 'en-US': `<?xml version=\"1.0\" encoding=\"utf-8\"?><locale xmlns=\"http://purl.org/net/xbiblio/csl\" version=\"1.0\" xml:lang=\"en-US\"><info><translator><name>Andrew Dunning</name></translator><translator><name>Sebastian Karcher</name></translator><translator><name>Rintze M. Zelle</name></translator><translator><name>Denis Meier</name></translator><translator><name>Brenton M. Wiernik</name></translator><rights license=\"http://creativecommons.org/licenses/by-sa/3.0/\">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights><updated>2015-10-10T23:31:02+00:00</updated></info><style-options punctuation-in-quote=\"true\"/><date form=\"text\"><date-part name=\"month\" suffix=\" \"/><date-part name=\"day\" suffix=\", \"/><date-part name=\"year\"/></date><date form=\"numeric\"><date-part name=\"month\" form=\"numeric-leading-zeros\" suffix=\"/\"/><date-part name=\"day\" form=\"numeric-leading-zeros\" suffix=\"/\"/><date-part name=\"year\"/></date><terms><term name=\"advance-online-publication\">advance online publication</term><term name=\"album\">album</term><term name=\"audio-recording\">audio recording</term><term name=\"film\">film</term><term name=\"henceforth\">henceforth</term><term name=\"loc-cit\">loc. cit.</term><term name=\"no-place\">no place</term><term name=\"no-place\" form=\"short\">n.p.</term><term name=\"no-publisher\">no publisher</term><term name=\"no-publisher\" form=\"short\">n.p.</term><term name=\"on\">on</term><term name=\"op-cit\">op. cit.</term><term name=\"original-work-published\">original work published</term><term name=\"personal-communication\">personal communication</term><term name=\"podcast\">podcast</term><term name=\"podcast-episode\">podcast episode</term><term name=\"preprint\">preprint</term><term name=\"radio-broadcast\">radio broadcast</term><term name=\"radio-series\">radio series</term><term name=\"radio-series-episode\">radio series episode</term><term name=\"special-issue\">special issue</term><term name=\"special-section\">special section</term><term name=\"television-broadcast\">television broadcast</term><term name=\"television-series\">television series</term><term name=\"television-series-episode\">television series episode</term><term name=\"video\">video</term><term name=\"working-paper\">working paper</term><term name=\"accessed\">accessed</term><term name=\"and\">and</term><term name=\"and others\">and others</term><term name=\"anonymous\">anonymous</term><term name=\"anonymous\" form=\"short\">anon.</term><term name=\"at\">at</term><term name=\"available at\">available at</term><term name=\"by\">by</term><term name=\"circa\">circa</term><term name=\"circa\" form=\"short\">c.</term><term name=\"cited\">cited</term><term name=\"edition\"><single>edition</single><multiple>editions</multiple></term><term name=\"edition\" form=\"short\">ed.</term><term name=\"et-al\">et al.</term><term name=\"forthcoming\">forthcoming</term><term name=\"from\">from</term><term name=\"ibid\">ibid.</term><term name=\"in\">in</term><term name=\"in press\">in press</term><term name=\"internet\">internet</term><term name=\"interview\">interview</term><term name=\"letter\">letter</term><term name=\"no date\">no date</term><term name=\"no date\" form=\"short\">n.d.</term><term name=\"online\">online</term><term name=\"presented at\">presented at the</term><term name=\"reference\"><single>reference</single><multiple>references</multiple></term><term name=\"reference\" form=\"short\"><single>ref.</single><multiple>refs.</multiple></term><term name=\"retrieved\">retrieved</term><term name=\"scale\">scale</term><term name=\"version\">version</term><term name=\"article\">preprint</term><term name=\"article-journal\">journal article</term><term name=\"article-magazine\">magazine article</term><term name=\"article-newspaper\">newspaper article</term><term name=\"bill\">bill</term><term name=\"book\">book</term><term name=\"broadcast\">broadcast</term><term name=\"chapter\">book chapter</term><term name=\"classic\">classic</term><term name=\"collection\">collection</term><term name=\"dataset\">dataset</term><term name=\"document\">document</term><term name=\"entry\">entry</term><term name=\"entry-dictionary\">dictionary entry</term><term name=\"entry-encyclopedia\">encyclopedia entry</term><term name=\"event\">event</term><term name=\"graphic\">graphic</term><term name=\"hearing\">hearing</term><term name=\"interview\">interview</term><term name=\"legal_case\">legal case</term><term name=\"legislation\">legislation</term><term name=\"manuscript\">manuscript</term><term name=\"map\">map</term><term name=\"motion_picture\">video recording</term><term name=\"musical_score\">musical score</term><term name=\"pamphlet\">pamphlet</term><term name=\"paper-conference\">conference paper</term><term name=\"patent\">patent</term><term name=\"performance\">performance</term><term name=\"periodical\">periodical</term><term name=\"personal_communication\">personal communication</term><term name=\"post\">post</term><term name=\"post-weblog\">blog post</term><term name=\"regulation\">regulation</term><term name=\"report\">report</term><term name=\"review\">review</term><term name=\"review-book\">book review</term><term name=\"software\">software</term><term name=\"song\">audio recording</term><term name=\"speech\">presentation</term><term name=\"standard\">standard</term><term name=\"thesis\">thesis</term><term name=\"treaty\">treaty</term><term name=\"webpage\">webpage</term><term name=\"article-journal\" form=\"short\">journal art.</term><term name=\"article-magazine\" form=\"short\">mag. art.</term><term name=\"article-newspaper\" form=\"short\">newspaper art.</term><term name=\"book\" form=\"short\">bk.</term><term name=\"chapter\" form=\"short\">bk. chap.</term><term name=\"document\" form=\"short\">doc.</term><term name=\"graphic\" form=\"short\">graph.</term><term name=\"interview\" form=\"short\">interv.</term><term name=\"manuscript\" form=\"short\">MS</term><term name=\"motion_picture\" form=\"short\">video rec.</term><term name=\"report\" form=\"short\">rep.</term><term name=\"review\" form=\"short\">rev.</term><term name=\"review-book\" form=\"short\">bk. rev.</term><term name=\"song\" form=\"short\">audio rec.</term><term name=\"ad\">AD</term><term name=\"bc\">BC</term><term name=\"bce\">BCE</term><term name=\"ce\">CE</term><term name=\"open-quote\">“</term><term name=\"close-quote\">”</term><term name=\"open-inner-quote\"></term><term name=\"close-inner-quote\"></term><term name=\"page-range-delimiter\"></term><term name=\"colon\">:</term><term name=\"comma\">,</term><term name=\"semicolon\">;</term><term name=\"ordinal\">th</term><term name=\"ordinal-01\">st</term><term name=\"ordinal-02\">nd</term><term name=\"ordinal-03\">rd</term><term name=\"ordinal-11\">th</term><term name=\"ordinal-12\">th</term><term name=\"ordinal-13\">th</term><term name=\"long-ordinal-01\">first</term><term name=\"long-ordinal-02\">second</term><term name=\"long-ordinal-03\">third</term><term name=\"long-ordinal-04\">fourth</term><term name=\"long-ordinal-05\">fifth</term><term name=\"long-ordinal-06\">sixth</term><term name=\"long-ordinal-07\">seventh</term><term name=\"long-ordinal-08\">eighth</term><term name=\"long-ordinal-09\">ninth</term><term name=\"long-ordinal-10\">tenth</term><term name=\"act\"><single>act</single><multiple>acts</multiple></term><term name=\"appendix\"><single>appendix</single><multiple>appendices</multiple></term><term name=\"article-locator\"><single>article</single><multiple>articles</multiple></term><term name=\"canon\"><single>canon</single><multiple>canons</multiple></term><term name=\"elocation\"><single>location</single><multiple>locations</multiple></term><term name=\"equation\"><single>equation</single><multiple>equations</multiple></term><term name=\"rule\"><single>rule</single><multiple>rules</multiple></term><term name=\"scene\"><single>scene</single><multiple>scenes</multiple></term><term name=\"table\"><single>table</single><multiple>tables</multiple></term><term name=\"timestamp\"><single></single><multiple></multiple></term><term name=\"title-locator\"><single>title</single><multiple>titles</multiple></term><term name=\"book\"><single>book</single><multiple>books</multiple></term><term name=\"chapter\"><single>chapter</single><multiple>chapters</multiple></term><term name=\"column\"><single>column</single><multiple>columns</multiple></term><term name=\"figure\"><single>figure</single><multiple>figures</multiple></term><term name=\"folio\"><single>folio</single><multiple>folios</multiple></term><term name=\"issue\"><single>number</single><multiple>numbers</multiple></term><term name=\"line\"><single>line</single><multiple>lines</multiple></term><term name=\"note\"><single>note</single><multiple>notes</multiple></term><term name=\"opus\"><single>opus</single><multiple>opera</multiple></term><term name=\"page\"><single>page</single><multiple>pages</multiple></term><term name=\"number-of-pages\"><single>page</single><multiple>pages</multiple></term><term name=\"paragraph\"><single>paragraph</single><multiple>paragraphs</multiple></term><term name=\"part\"><single>part</single><multiple>parts</multiple></term><term name=\"section\"><single>section</single><multiple>sections</multiple></term><term name=\"sub-verbo\"><single>sub verbo</single><multiple>sub verbis</multiple></term><term name=\"verse\"><single>verse</single><multiple>verses</multiple></term><term name=\"volume\"><single>volume</single><multiple>volumes</multiple></term><term name=\"appendix\"><single>app.</single><multiple>apps.</multiple></term><term name=\"article-locator\"><single>art.</single><multiple>arts.</multiple></term><term name=\"elocation\"><single>loc.</single><multiple>locs.</multiple></term><term name=\"equation\"><single>eq.</single><multiple>eqs.</multiple></term><term name=\"rule\"><single>r.</single><multiple>rr.</multiple></term><term name=\"scene\"><single>sc.</single><multiple>scs.</multiple></term><term name=\"table\"><single>tbl.</single><multiple>tbls.</multiple></term><term name=\"timestamp\"><single></single><multiple></multiple></term><term name=\"title-locator\"><single>tit.</single><multiple>tits.</multiple></term><term name=\"book\" form=\"short\"><single>bk.</single><multiple>bks.</multiple></term><term name=\"chapter\" form=\"short\"><single>chap.</single><multiple>chaps.</multiple></term><term name=\"column\" form=\"short\"><single>col.</single><multiple>cols.</multiple></term><term name=\"figure\" form=\"short\"><single>fig.</single><multiple>figs.</multiple></term><term name=\"folio\" form=\"short\"><single>fol.</single><multiple>fols.</multiple></term><term name=\"issue\" form=\"short\"><single>no.</single><multiple>nos.</multiple></term><term name=\"line\" form=\"short\"><single>l.</single><multiple>ll.</multiple></term><term name=\"note\" form=\"short\"><single>n.</single><multiple>nn.</multiple></term><term name=\"opus\" form=\"short\"><single>op.</single><multiple>opp.</multiple></term><term name=\"page\" form=\"short\"><single>p.</single><multiple>pp.</multiple></term><term name=\"number-of-pages\" form=\"short\"><single>p.</single><multiple>pp.</multiple></term><term name=\"paragraph\" form=\"short\"><single>para.</single><multiple>paras.</multiple></term><term name=\"part\" form=\"short\"><single>pt.</single><multiple>pts.</multiple></term><term name=\"section\" form=\"short\"><single>sec.</single><multiple>secs.</multiple></term><term name=\"sub-verbo\" form=\"short\"><single>s.v.</single><multiple>s.vv.</multiple></term><term name=\"verse\" form=\"short\"><single>v.</single><multiple>vv.</multiple></term><term name=\"volume\" form=\"short\"><single>vol.</single><multiple>vols.</multiple></term><term name=\"paragraph\" form=\"symbol\"><single>¶</single><multiple>¶¶</multiple></term><term name=\"section\" form=\"symbol\"><single>§</single><multiple>§§</multiple></term><term name=\"chair\"><single>chair</single><multiple>chairs</multiple></term><term name=\"compiler\"><single>compiler</single><multiple>compilers</multiple></term><term name=\"contributor\"><single>contributor</single><multiple>contributors</multiple></term><term name=\"curator\"><single>curator</single><multiple>curators</multiple></term><term name=\"executive-producer\"><single>executive producer</single><multiple>executive producers</multiple></term><term name=\"guest\"><single>guest</single><multiple>guests</multiple></term><term name=\"host\"><single>host</single><multiple>hosts</multiple></term><term name=\"narrator\"><single>narrator</single><multiple>narrators</multiple></term><term name=\"organizer\"><single>organizer</single><multiple>organizers</multiple></term><term name=\"performer\"><single>performer</single><multiple>performers</multiple></term><term name=\"producer\"><single>producer</single><multiple>producers</multiple></term><term name=\"script-writer\"><single>writer</single><multiple>writers</multiple></term><term name=\"series-creator\"><single>series creator</single><multiple>series creators</multiple></term><term name=\"director\"><single>director</single><multiple>directors</multiple></term><term name=\"editor\"><single>editor</single><multiple>editors</multiple></term><term name=\"editorial-director\"><single>editor</single><multiple>editors</multiple></term><term name=\"illustrator\"><single>illustrator</single><multiple>illustrators</multiple></term><term name=\"translator\"><single>translator</single><multiple>translators</multiple></term><term name=\"editortranslator\"><single>editor &amp; translator</single><multiple>editors &amp; translators</multiple></term><term name=\"compiler\" form=\"short\"><single>comp.</single><multiple>comps.</multiple></term><term name=\"contributor\" form=\"short\"><single>contrib.</single><multiple>contribs.</multiple></term><term name=\"curator\" form=\"short\"><single>cur.</single><multiple>curs.</multiple></term><term name=\"executive-producer\" form=\"short\"><single>exec. prod.</single><multiple>exec. prods.</multiple></term><term name=\"narrator\" form=\"short\"><single>narr.</single><multiple>narrs.</multiple></term><term name=\"organizer\" form=\"short\"><single>org.</single><multiple>orgs.</multiple></term><term name=\"performer\" form=\"short\"><single>perf.</single><multiple>perfs.</multiple></term><term name=\"producer\" form=\"short\"><single>prod.</single><multiple>prods.</multiple></term><term name=\"script-writer\" form=\"short\"><single>writ.</single><multiple>writs.</multiple></term><term name=\"series-creator\" form=\"short\"><single>cre.</single><multiple>cres.</multiple></term><term name=\"director\" form=\"short\"><single>dir.</single><multiple>dirs.</multiple></term><term name=\"editor\" form=\"short\"><single>ed.</single><multiple>eds.</multiple></term><term name=\"editorial-director\" form=\"short\"><single>ed.</single><multiple>eds.</multiple></term><term name=\"illustrator\" form=\"short\"><single>ill.</single><multiple>ills.</multiple></term><term name=\"translator\" form=\"short\"><single>tran.</single><multiple>trans.</multiple></term><term name=\"editortranslator\" form=\"short\"><single>ed. &amp; tran.</single><multiple>eds. &amp; trans.</multiple></term><term name=\"chair\" form=\"verb\">chaired by</term><term name=\"compiler\" form=\"verb\">compiled by</term><term name=\"contributor\" form=\"verb\">with</term><term name=\"curator\" form=\"verb\">curated by</term><term name=\"executive-producer\" form=\"verb\">executive produced by</term><term name=\"guest\" form=\"verb\">with guest</term><term name=\"host\" form=\"verb\">hosted by</term><term name=\"narrator\" form=\"verb\">narrated by</term><term name=\"organizer\" form=\"verb\">organized by</term><term name=\"performer\" form=\"verb\">performed by</term><term name=\"producer\" form=\"verb\">produced by</term><term name=\"script-writer\" form=\"verb\">written by</term><term name=\"series-creator\" form=\"verb\">created by</term><term name=\"container-author\" form=\"verb\">by</term><term name=\"director\" form=\"verb\">directed by</term><term name=\"editor\" form=\"verb\">edited by</term><term name=\"editorial-director\" form=\"verb\">edited by</term><term name=\"illustrator\" form=\"verb\">illustrated by</term><term name=\"interviewer\" form=\"verb\">interview by</term><term name=\"recipient\" form=\"verb\">to</term><term name=\"reviewed-author\" form=\"verb\">by</term><term name=\"translator\" form=\"verb\">translated by</term><term name=\"editortranslator\" form=\"verb\">edited &amp; translated by</term><term name=\"compiler\" form=\"verb-short\">comp. by</term><term name=\"contributor\" form=\"verb-short\">w.</term><term name=\"curator\" form=\"verb-short\">cur. by</term><term name=\"executive-producer\" form=\"verb-short\">exec. prod. by</term><term name=\"guest\" form=\"verb-short\">w. guest</term><term name=\"host\" form=\"verb-short\">hosted by</term><term name=\"narrator\" form=\"verb-short\">narr. by</term><term name=\"organizer\" form=\"verb-short\">org. by</term><term name=\"performer\" form=\"verb-short\">perf. by</term><term name=\"producer\" form=\"verb-short\">prod. by</term><term name=\"script-writer\" form=\"verb-short\">writ. by</term><term name=\"series-creator\" form=\"verb-short\">cre. by</term><term name=\"director\" form=\"verb-short\">dir. by</term><term name=\"editor\" form=\"verb-short\">ed. by</term><term name=\"editorial-director\" form=\"verb-short\">ed. by</term><term name=\"illustrator\" form=\"verb-short\">illus. by</term><term name=\"translator\" form=\"verb-short\">trans. by</term><term name=\"editortranslator\" form=\"verb-short\">ed. &amp; trans. by</term><term name=\"month-01\">January</term><term name=\"month-02\">February</term><term name=\"month-03\">March</term><term name=\"month-04\">April</term><term name=\"month-05\">May</term><term name=\"month-06\">June</term><term name=\"month-07\">July</term><term name=\"month-08\">August</term><term name=\"month-09\">September</term><term name=\"month-10\">October</term><term name=\"month-11\">November</term><term name=\"month-12\">December</term><term name=\"month-01\" form=\"short\">Jan.</term><term name=\"month-02\" form=\"short\">Feb.</term><term name=\"month-03\" form=\"short\">Mar.</term><term name=\"month-04\" form=\"short\">Apr.</term><term name=\"month-05\" form=\"short\">May</term><term name=\"month-06\" form=\"short\">Jun.</term><term name=\"month-07\" form=\"short\">Jul.</term><term name=\"month-08\" form=\"short\">Aug.</term><term name=\"month-09\" form=\"short\">Sep.</term><term name=\"month-10\" form=\"short\">Oct.</term><term name=\"month-11\" form=\"short\">Nov.</term><term name=\"month-12\" form=\"short\">Dec.</term><term name=\"season-01\">Spring</term><term name=\"season-02\">Summer</term><term name=\"season-03\">Autumn</term><term name=\"season-04\">Winter</term></terms></locale>`,\n}\n\nconst locales = new util.Register(defaultLocales)\n\nconst fetchLocale = (lang) => {\n if (locales.has(lang)) {\n return locales.get(lang)\n } else {\n return locales.get('en-US')\n }\n}\n\nexport default fetchLocale\nexport { locales }\n","import { util } from '../core/index.js'\n\nconst defaultTemplates = {\n apa: `<?xml version=\"1.0\" encoding=\"utf-8\"?><style xmlns=\"http://purl.org/net/xbiblio/csl\" class=\"in-text\" version=\"1.0\" demote-non-dropping-particle=\"never\" page-range-format=\"expanded\"><info><title>American Psychological Association 7th edition</title><title-short>APA</title-short><id>http://www.zotero.org/styles/apa</id><link href=\"http://www.zotero.org/styles/apa\" rel=\"self\"/><link href=\"http://www.zotero.org/styles/apa-6th-edition\" rel=\"template\"/><link href=\"https://apastyle.apa.org/style-grammar-guidelines/references/examples\" rel=\"documentation\"/><author><name>Brenton M. Wiernik</name><email>zotero@wiernik.org</email></author><category citation-format=\"author-date\"/><category field=\"psychology\"/><category field=\"generic-base\"/><updated>2022-01-31T14:30:00+00:00</updated><rights license=\"http://creativecommons.org/licenses/by-sa/3.0/\">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights></info><locale xml:lang=\"en\"><terms><term name=\"editortranslator\" form=\"short\"><single>ed. &amp; trans.</single><multiple>eds. &amp; trans.</multiple></term><term name=\"translator\" form=\"short\">trans.</term><term name=\"interviewer\" form=\"short\"><single>interviewer</single><multiple>interviewers</multiple></term><term name=\"collection-editor\" form=\"short\"><single>ed.</single><multiple>eds.</multiple></term><term name=\"circa\" form=\"short\">ca.</term><term name=\"bc\"> B.C.E.</term><term name=\"ad\"> C.E.</term><term name=\"letter\">personal communication</term><term name=\"letter\" form=\"short\">letter</term><term name=\"issue\" form=\"long\"><single>issue</single><multiple>issues</multiple></term></terms></locale><locale xml:lang=\"af\"><terms><term name=\"letter\">persoonlike kommunikasie</term><term name=\"letter\" form=\"short\">brief</term></terms></locale><locale xml:lang=\"ar\"><terms><term name=\"letter\">اتصال شخصي</term><term name=\"letter\" form=\"short\">خطاب</term></terms></locale><locale xml:lang=\"bg\"><terms><term name=\"letter\">лична комуникация</term><term name=\"letter\" form=\"short\">писмо</term></terms></locale><locale xml:lang=\"ca\"><terms><term name=\"letter\">comunicació personal</term><term name=\"letter\" form=\"short\">carta</term></terms></locale><locale xml:lang=\"cs\"><terms><term name=\"letter\">osobní komunikace</term><term name=\"letter\" form=\"short\">dopis</term></terms></locale><locale xml:lang=\"cy\"><terms><term name=\"letter\">cyfathrebu personol</term><term name=\"letter\" form=\"short\">llythyr</term></terms></locale><locale xml:lang=\"da\"><terms><term name=\"et-al\">et al.</term><term name=\"letter\">personlig kommunikation</term><term name=\"letter\" form=\"short\">brev</term></terms></locale><locale xml:lang=\"de\"><terms><term name=\"et-al\">et al.</term><term name=\"letter\">persönliche Kommunikation</term><term name=\"letter\" form=\"short\">Brief</term></terms></locale><locale xml:lang=\"el\"><terms><term name=\"letter\">προσωπική επικοινωνία</term><term name=\"letter\" form=\"short\">επιστολή</term></terms></locale><locale xml:lang=\"es\"><terms><term name=\"from\">de</term><term name=\"letter\">comunicación personal</term><term name=\"letter\" form=\"short\">carta</term></terms></locale><locale xml:lang=\"et\"><terms><term name=\"letter\">isiklik suhtlus</term><term name=\"letter\" form=\"short\">kiri</term></terms></locale><locale xml:lang=\"eu\"><terms><term name=\"letter\">komunikazio pertsonala</term><term name=\"letter\" form=\"short\">gutuna</term></terms></locale><locale xml:lang=\"fa\"><terms><term name=\"letter\">ارتباط شخصی</term><term name=\"letter\" form=\"short\">نامه</term></terms></locale><locale xml:lang=\"fi\"><terms><term name=\"letter\">henkilökohtainen viestintä</term><term name=\"letter\" form=\"short\">kirje</term></terms></locale><locale xml:lang=\"fr\"><terms><term name=\"letter\">communication personnelle</term><term name=\"letter\" form=\"short\">lettre</term><term name=\"editor\" form=\"short\"><single>éd.</single><multiple>éds.</multiple></term></terms></locale><locale xml:lang=\"he\"><terms><term name=\"letter\">תקשורת אישית</term><term name=\"letter\" form=\"short\">מכתב</term></terms></locale><locale xml:lang=\"hr\"><terms><term name=\"letter\">osobna komunikacija</term><term name=\"letter\" form=\"short\">pismo</term></terms></locale><locale xml:lang=\"hu\"><terms><term name=\"letter\">személyes kommunikáció</term><term name=\"letter\" form=\"short\">levél</term></terms></locale><locale xml:lang=\"id\"><terms><term name=\"letter\">komunikasi pribadi</term><term name=\"letter\" form=\"short\">surat</term></terms></locale><locale xml:lang=\"is\"><terms><term name=\"letter\">persónuleg samskipti</term><term name=\"letter\" form=\"short\">bréf</term></terms></locale><locale xml:lang=\"it\"><terms><term name=\"letter\">comunicazione personale</term><term name=\"letter\" form=\"short\">lettera</term></terms></locale><locale xml:lang=\"ja\"><terms><term name=\"letter\">個人的なやり取り</term><term name=\"letter\" form=\"short\">手紙</term></terms></locale><locale xml:lang=\"ko\"><terms><term name=\"letter\">개인 서신</term><term name=\"letter\" form=\"short\">편지</term></terms></locale><locale xml:lang=\"la\"><terms><term name=\"letter\"/><term name=\"letter\" form=\"short\">epistula</term></terms></locale><locale xml:lang=\"lt\"><terms><term name=\"letter\">communicationis personalis</term><term name=\"letter\" form=\"short\"/></terms></locale><locale xml:lang=\"lv\"><terms><term name=\"letter\">personīga komunikācija</term><term name=\"letter\" form=\"short\">vēstule</term></terms></locale><locale xml:lang=\"mn\"><terms><term name=\"letter\">хувийн харилцаа холбоо</term><term name=\"letter\" form=\"short\">захиа</term></terms></locale><locale xml:lang=\"nb\"><terms><term name=\"et-al\">et al.</term><term name=\"letter\">personlig kommunikasjon</term><term name=\"letter\" form=\"short\">brev</term></terms></locale><locale xml:lang=\"nl\"><terms><term name=\"et-al\">et al.</term><term name=\"letter\">persoonlijke communicatie</term><term name=\"letter\" form=\"short\">brief</term></terms></locale><locale xml:lang=\"nn\"><terms><term name=\"et-al\">et al.</term><term name=\"letter\">personlig kommunikasjon</term><term name=\"letter\" form=\"short\">brev</term></terms></locale><locale xml:lang=\"pl\"><terms><term name=\"letter\">osobista komunikacja</term><term name=\"letter\" form=\"short\">list</term></terms></locale><locale xml:lang=\"pt\"><terms><term name=\"letter\">comunicação pessoal</term><term name=\"letter\" form=\"short\">carta</term></terms></locale><locale xml:lang=\"ro\"><terms><term name=\"letter\">comunicare personală</term><term name=\"letter\" form=\"short\">scrisoare</term></terms></locale><locale xml:lang=\"ru\"><terms><term name=\"letter\">личная переписка</term><term name=\"letter\" form=\"short\">письмо</term></terms></locale><locale xml:lang=\"sk\"><terms><term name=\"letter\">osobná komunikácia</term><term name=\"letter\" form=\"short\">list</term></terms></locale><locale xml:lang=\"sl\"><terms><term name=\"letter\">osebna komunikacija</term><term name=\"letter\" form=\"short\">pismo</term></terms></locale><locale xml:lang=\"sr\"><terms><term name=\"letter\">лична комуникација</term><term name=\"letter\" form=\"short\">писмо</term></terms></locale><locale xml:lang=\"sv\"><terms><term name=\"letter\">personlig kommunikation</term><term name=\"letter\" form=\"short\">brev</term></terms></locale><locale xml:lang=\"th\"><terms><term name=\"letter\">การสื่อสารส่วนบุคคล</term><term name=\"letter\" form=\"short\">จดหมาย</term></terms></locale><locale xml:lang=\"tr\"><terms><term name=\"letter\">kişisel iletişim</term><term name=\"letter\" form=\"short\">mektup</term></terms></locale><locale xml:lang=\"uk\"><terms><term name=\"letter\">особисте спілкування</term><term name=\"letter\" form=\"short\">лист</term></terms></locale><locale xml:lang=\"vi\"><terms><term name=\"letter\">giao tiếp cá nhân</term><term name=\"letter\" form=\"short\">thư</term></terms></locale><locale xml:lang=\"zh-CN\"><terms><term name=\"letter\">的私人交流</term><term name=\"letter\" form=\"short\">信函</term></terms></locale><locale xml:lang=\"zh-TW\"><terms><term name=\"letter\">私人通訊</term><term name=\"letter\" form=\"short\">信函</term></terms></locale><macro name=\"author-bib\"><names variable=\"composer\" delimiter=\", \"><name name-as-sort-order=\"all\" and=\"symbol\" sort-separator=\", \" initialize-with=\". \" delimiter=\", \" delimiter-precedes-last=\"always\"/><substitute><names variable=\"author\"/><names variable=\"illustrator\"/><names variable=\"director\"><name name-as-sort-order=\"all\" and=\"symbol\" sort-separator=\", \" initialize-with=\". \" delimiter=\", \" delimiter-precedes-last=\"always\"/><label form=\"long\" prefix=\" (\" suffix=\")\" text-case=\"title\"/></names><choose><if variable=\"container-title\"><choose><if type=\"book entry entry-dictionary entry-encyclopedia\" match=\"any\"><choose><if variable=\"title\"><group delimiter=\" \"><text macro=\"title\"/><text macro=\"parenthetical\"/></group></if><else><text macro=\"title-and-descriptions\"/></else></choose></if></choose></if></choose><names variable=\"editor\" delimiter=\", \"><name name-as-sort-order=\"all\" and=\"symbol\" sort-separator=\", \" initialize-with=\". \" delimiter=\", \" delimiter-precedes-last=\"always\"/><label form=\"short\" prefix=\" (\" suffix=\")\" text-case=\"title\"/></names><names variable=\"editorial-director\"><name name-as-sort-order=\"all\" and=\"symbol\" sort-separator=\", \" initialize-with=\". \" delimiter=\", \" delimiter-precedes-last=\"always\"/><label form=\"short\" prefix=\" (\" suffix=\")\" text-case=\"title\"/></names><names variable=\"collection-editor\"><name name-as-sort-order=\"all\" and=\"symbol\" sort-separator=\", \" initialize-with=\". \" delimiter=\", \" delimiter-precedes-last=\"always\"/><label form=\"short\" prefix=\" (\" suffix=\")\" text-case=\"title\"/></names><choose><if variable=\"title\"><group delimiter=\" \"><text macro=\"title\"/><text macro=\"parenthetical\"/></group></if><else><text macro=\"title-and-descriptions\"/></else></choose></substitute></names></macro><macro name=\"author-intext\"><choose><if type=\"bill legal_case legislation treaty\" match=\"any\"><text macro=\"title-intext\"/></if><else-if type=\"interview personal_communication\" match=\"any\"><choose><if variable=\"archive container-title DOI publisher URL\" match=\"none\"><group delimiter=\", \"><names variable=\"author\"><name and=\"symbol\" delimiter=\", \" initialize-with=\". \"/><substitute><text macro=\"title-intext\"/></substitute></names><text term=\"letter\"/></group></if><else><names variable=\"author\" delimiter=\", \"><name form=\"short\" and=\"symbol\" delimiter=\", \" initialize-with=\". \"/><substitute><text macro=\"title-intext\"/></substitute></names></else></choose></else-if><else><names variable=\"composer\" delimiter=\", \"><name form=\"short\" and=\"symbol\" delimiter=\", \" initialize-with=\". \"/><substitute><names variable=\"author\"/><names variable=\"illustrator\"/><names variable=\"director\"/><choose><if variable=\"container-title\"><choose><if type=\"book entry entry-dictionary entry-encyclopedia\" match=\"any\"><text macro=\"title-intext\"/></if></choose></if></choose><names variable=\"editor\"/><names variable=\"editorial-director\"/><text macro=\"title-intext\"/></substitute></names></else></choose></macro><macro name=\"date-bib\"><group delimiter=\" \" prefix=\"(\" suffix=\")\"><choose><if is-uncertain-date=\"issued\"><text term=\"circa\" form=\"short\"/></if></choose><group><choose><if variable=\"issued\"><date variable=\"issued\"><date-part name=\"year\"/></date><text variable=\"year-suffix\"/><choose><if type=\"article-magazine article-newspaper broadcast interview motion_picture pamphlet personal_communication post post-weblog song speech webpage\" match=\"any\"><date variable=\"issued\"><date-part prefix=\", \" name=\"month\"/><date-part prefix=\" \" name=\"day\"/></date></if><else-if type=\"paper-conference\"><choose><if variable=\"collection-editor editor editorial-director issue page volume\" match=\"none\"><date variable=\"issued\"><date-part prefix=\", \" name=\"month\"/><date-part prefix=\" \" name=\"day\"/></date></if></choose></else-if></choose></if><else-if variable=\"status\"><group><text variable=\"status\" text-case=\"lowercase\"/><text variable=\"year-suffix\" prefix=\"-\"/></group></else-if><else><text term=\"no date\" form=\"short\"/><text variable=\"year-suffix\" prefix=\"-\"/></else></choose></group></group></macro><macro name=\"date-sort-group\"><choose><if variable=\"issued\"><text value=\"1\"/></if><else-if variable=\"status\"><text value=\"2\"/></else-if><else><text value=\"0\"/></else></choose></macro><macro name=\"date-sort-date\"><date variable=\"issued\" form=\"numeric\"/></macro><macro name=\"date-intext\"><choose><if variable=\"issued\"><group delimiter=\"/\"><group delimiter=\" \"><choose><if is-uncertain-date=\"original-date\"><text term=\"circa\" form=\"short\"/></if></choose><date variable=\"original-date\"><date-part name=\"year\"/></date></group><group delimiter=\" \"><choose><if is-uncertain-date=\"issued\"><text term=\"circa\" form=\"short\"/></if></choose><group><choose><if type=\"interview personal_communication\" match=\"any\"><choose><if variable=\"archive container-title DOI publisher URL\" match=\"none\"><date variable=\"issued\" form=\"text\"/></if><else><date variable=\"issued\"><date-part name=\"year\"/></date></else></choose></if><else><date variable=\"issued\"><date-part name=\"year\"/></date></else></choose><text variable=\"year-suffix\"/></group></group></group></if><else-if variable=\"status\"><text variable=\"status\" text-case=\"lowercase\"/><text variable=\"year-suffix\" prefix=\"-\"/></else-if><else><text term=\"no date\" form=\"short\"/><text variable=\"year-suffix\" prefix=\"-\"/></else></choose></macro><macro name=\"title-and-descriptions\"><choose><if variable=\"title\"><group delimiter=\" \"><text macro=\"title\"/><text macro=\"parenthetical\"/><text macro=\"bracketed\"/></group></if><else><group delimiter=\" \"><text macro=\"bracketed\"/><text macro=\"parenthetical\"/></group></else></choose></macro><macro name=\"title\"><choose><if type=\"post webpage\" match=\"any\"><text variable=\"title\" font-style=\"italic\"/></if><else-if variable=\"container-title\" match=\"any\"><text variable=\"title\"/></else-if><else><choose><if type=\"article-journal article-magazine article-newspaper post-weblog review review-book\" match=\"any\"><text variable=\"title\" font-style=\"italic\"/></if><else-if type=\"paper-conference\"><choose><if variable=\"collection-editor editor editorial-director\" match=\"any\"><group delimiter=\": \" font-style=\"italic\"><text variable=\"title\"/><choose><if is-numeric=\"volume\" match=\"none\"><group delimiter=\" \"><label variable=\"volume\" form=\"short\" text-case=\"capitalize-first\"/><text variable=\"volume\"/></group></if></choose></group></if><else><text variable=\"title\" font-style=\"italic\"/></else></choose></else-if><else><group delimiter=\": \" font-style=\"italic\"><text variable=\"title\"/><choose><if is-numeric=\"volume\" match=\"none\"><group delimiter=\" \"><label variable=\"volume\" form=\"short\" text-case=\"capitalize-first\"/><text variable=\"volume\"/></group></if></choose></group></else></choose></else></choose></macro><macro name=\"title-intext\"><choose><if variable=\"title\" match=\"none\"><text macro=\"bracketed-intext\" prefix=\"[\" suffix=\"]\"/></if><else-if type=\"bill\"><choose><if variable=\"number container-title\" match=\"none\"><text variable=\"title\" form=\"short\" font-style=\"italic\" text-case=\"title\"/></if><else-if variable=\"title\"><text variable=\"title\" form=\"short\" text-case=\"title\"/></else-if><else><group delimiter=\" \"><text variable=\"genre\"/><group delimiter=\" \"><choose><if variable=\"chapter-number container-title\" match=\"none\"><text term=\"issue\" form=\"short\"/></if></choose><text variable=\"number\"/></group></group></else></choose></else-if><else-if type=\"legal_case\" match=\"any\"><text variable=\"title\" font-style=\"italic\"/></else-if><else-if type=\"legislation treaty\" match=\"any\"><text variable=\"title\" form=\"short\" text-case=\"title\"/></else-if><else-if type=\"post webpage\" match=\"any\"><text variable=\"title\" form=\"short\" font-style=\"italic\" text-case=\"title\"/></else-if><else-if variable=\"container-title\" match=\"any\"><text variable=\"title\" form=\"short\" quotes=\"true\" text-case=\"title\"/></else-if><else><text variable=\"title\" form=\"short\" font-style=\"italic\" text-case=\"title\"/></else></choose></macro><macro name=\"parenthetical\"><group prefix=\"(\" suffix=\")\"><choose><if type=\"patent\"><group delimiter=\" \"><text variable=\"authority\" form=\"short\"/><choose><if variable=\"genre\"><text variable=\"genre\" text-case=\"capitalize-first\"/></if><else><text value=\"patent\" text-case=\"capitalize-first\"/></else></choose><group delimiter=\" \"><text term=\"issue\" form=\"short\" text-case=\"capitalize-first\"/><text variable=\"number\"/></group></group></if><else-if type=\"post webpage\" match=\"any\"><group delimiter=\"; \"><text macro=\"secondary-contributors\"/><text macro=\"database-location\"/><text macro=\"number\"/><text macro=\"locators-booklike\"/></group></else-if><else-if variable=\"container-title\"><group delimiter=\"; \"><text macro=\"secondary-contributors\"/><choose><if type=\"broadcast graphic map motion_picture song\" match=\"any\"><text macro=\"number\"/></if></choose></group></else-if><else><group delimiter=\"; \"><text macro=\"secondary-contributors\"/><text macro=\"database-location\"/><text macro=\"number\"/><text macro=\"locators-booklike\"/></group></else></choose></group></macro><macro name=\"parenthetical-container\"><choose><if variable=\"container-title\" match=\"any\"><group prefix=\"(\" suffix=\")\"><group delimiter=\"; \"><text macro=\"database-location\"/><choose><if type=\"broadcast graphic map motion_picture song\" match=\"none\"><text macro=\"number\"/></if></choose><text macro=\"locators-booklike\"/></group></group></if></choose></macro><macro name=\"bracketed\"><group prefix=\"[\" suffix=\"]\"><choose><if variable=\"reviewed-author reviewed-title\" type=\"review review-book\" match=\"any\"><group delimiter=\"; \"><group delimiter=\", \"><group delimiter=\" \"><choose><if variable=\"number\" match=\"none\"><choose><if variable=\"genre\"><text variable=\"genre\" text-case=\"capitalize-first\"/></if><else-if variable=\"medium\"><text variable=\"medium\" text-case=\"capitalize-first\"/></else-if><else><text value=\"Review of\"/></else></choose></if><else><choose><if variable=\"medium\"><text variable=\"medium\" text-case=\"capitalize-first\"/></if><else><text value=\"Review of\"/></else></choose></else></choose><text macro=\"reviewed-title\"/></group><names variable=\"reviewed-author\"><label form=\"verb-short\" suffix=\" \"/><name and=\"symbol\" initialize-with=\". \" delimiter=\", \"/></names></group><choose><if variable=\"genre\" match=\"any\"><choose><if variable=\"number\" match=\"none\"><text variable=\"medium\" text-case=\"capitalize-first\"/></if></choose></if></choose></group></if><else-if type=\"thesis\"><group delimiter=\"; \"><choose><if variable=\"number\" match=\"none\"><group delimiter=\", \"><text variable=\"genre\" text-case=\"capitalize-first\"/><choose><if variable=\"archive DOI URL\" match=\"any\"><text variable=\"publisher\"/></if></choose></group></if></choose><text variable=\"medium\" text-case=\"capitalize-first\"/></group></else-if><else-if variable=\"interviewer\" type=\"interview\" match=\"any\"><choose><if variable=\"title\"><text macro=\"format\"/></if><else-if variable=\"genre\"><group delimiter=\"; \"><group delimiter=\" \"><text variable=\"genre\" text-case=\"capitalize-first\"/><group delimiter=\" \"><text term=\"author\" form=\"verb\"/><names variable=\"interviewer\"><name and=\"symbol\" initialize-with=\". \" delimiter=\", \"/></names></group></group></group></else-if><else-if variable=\"interviewer\"><group delimiter=\"; \"><names variable=\"interviewer\"><label form=\"verb\" suffix=\" \" text-case=\"capitalize-first\"/><name and=\"symbol\" initialize-with=\". \" delimiter=\", \"/></names><text variable=\"medium\" text-case=\"capitalize-first\"/></group></else-if><else><text macro=\"format\"/></else></choose></else-if><else-if type=\"personal_communication\"><choose><if variable=\"recipient\"><group delimiter=\"; \"><group delimiter=\" \"><choose><if variable=\"number\" match=\"none\"><choose><if variable=\"genre\"><text variable=\"genre\" text-case=\"capitalize-first\"/></if><else-if variable=\"medium\"><text variable=\"medium\" text-case=\"capitalize-first\"/></else-if><else><text term=\"letter\" form=\"short\" text-case=\"capitalize-first\"/></else></choose></if><else><choose><if variable=\"medium\"><text variable=\"medium\" text-case=\"capitalize-first\"/></if><else><text term=\"letter\" form=\"short\" text-case=\"capitalize-first\"/></else></choose></else></choose><names variable=\"recipient\" delimiter=\", \"><label form=\"verb\" suffix=\" \"/><name and=\"symbol\" delimiter=\", \"/></names></group><choose><if variable=\"genre\" match=\"any\"><choose><if variable=\"number\" match=\"none\"><text variable=\"medium\" text-case=\"capitalize-first\"/></if></choose></if></choose></group></if><else><text macro=\"format\"/></else></choose></else-if><else-if variable=\"composer\" type=\"song\" match=\"all\"><group delimiter=\"; \"><choose><if variable=\"number\" match=\"none\"><group delimiter=\" \"><choose><if variable=\"genre\"><text variable=\"genre\" text-case=\"capitalize-first\"/><names variable=\"author\" prefix=\"recorded by \"><name and=\"symbol\" initialize-with=\". \" delimiter=\", \"/></names></if><else-if variable=\"medium\"><text variable=\"medium\" text-case=\"capitalize-first\"/><names variable=\"author\" prefix=\"recorded by \"><name and=\"symbol\" initialize-with=\". \" delimiter=\", \"/></names></else-if><else><names variable=\"author\" prefix=\"Recorded by \"><name and=\"symbol\" initialize-with=\". \" delimiter=\", \"/></names></else></choose></group></if><else><group delimiter=\" \"><choose><if variable=\"medium\"><text variable=\"medium\" text-case=\"capitalize-first\"/><names variable=\"author\" prefix=\"recorded by \"><name and=\"symbol\" initialize-with=\". \" delimiter=\", \"/></names></if><else><names variable=\"author\" prefix=\"Recorded by \"><name and=\"symbol\" initialize-with=\". \" delimiter=\", \"/></names></else></choose></group></else></choose><choose><if variable=\"genre\" match=\"any\"><choose><if variable=\"number\" match=\"none\"><text variable=\"medium\" text-case=\"capitalize-first\"/></if></choose></if></choose></group></else-if><else-if variable=\"container-title\" match=\"none\"><text macro=\"format\"/></else-if><else><choose><if type=\"paper-conference speech\" match=\"any\"><choose><if variable=\"collection-editor editor editorial-director issue page volume\" match=\"any\"><text macro=\"format\"/></if></choose></if><else-if type=\"book\"><choose><if variable=\"version\" match=\"none\"><text macro=\"format\"/></if></choose></else-if><else-if type=\"report\" match=\"none\"><text macro=\"format\"/></else-if></choose></else></choose></group></macro><macro name=\"bracketed-intext\"><group prefix=\"[\" suffix=\"]\"><choose><if variable=\"reviewed-author reviewed-title\" type=\"review review-book\" match=\"any\"><text macro=\"reviewed-title-intext\" prefix=\"Review of \"/></if><else-if variable=\"interviewer\" type=\"interview\" match=\"any\"><names variable=\"interviewer\"><label form=\"verb\" suffix=\" \" text-case=\"capitalize-first\"/><name and=\"symbol\" initialize-with=\". \" delimiter=\", \"/><substitute><text macro=\"format-intext\"/></substitute></names></else-if><else-if type=\"personal_communication\"><choose><if variable=\"recipient\"><group delimiter=\" \"><choose><if variable=\"number\" match=\"none\"><text variable=\"genre\" text-case=\"capitalize-first\"/></if><else><text term=\"letter\" form=\"short\" text-case=\"capitalize-first\"/></else></choose><names variable=\"recipient\" delimiter=\", \"><label form=\"verb\" suffix=\" \"/><name and=\"symbol\" delimiter=\", \"/></names></group></if><else><text macro=\"format-intext\"/></else></choose></else-if><else><text macro=\"format-intext\"/></else></choose></group></macro><macro name=\"bracketed-container\"><group prefix=\"[\" suffix=\"]\"><choose><if type=\"paper-conference speech\" match=\"any\"><choose><if variable=\"collection-editor editor editorial-director issue page volume\" match=\"none\"><text macro=\"format\"/></if></choose></if><else-if type=\"book\" variable=\"version\" match=\"all\"><text macro=\"format\"/></else-if><else-if type=\"report\"><text macro=\"format\"/></else-if></choose></group></macro><macro name=\"secondary-contributors\"><choose><if type=\"article-journal article-magazine article-newspaper post-weblog review review-book\" match=\"any\"><text macro=\"secondary-contributors-periodical\"/></if><else-if type=\"paper-conference\"><choose><if variable=\"collection-editor editor editorial-director\" match=\"any\"><text macro=\"secondary-contributors-booklike\"/></if><else><text macro=\"secondary-contributors-periodical\"/></else></choose></else-if><else><text macro=\"secondary-contributors-booklike\"/></else></choose></macro><macro name=\"secondary-contributors-periodical\"><group delimiter=\"; \"><choose><if variable=\"title\"><names variable=\"interviewer\" delimiter=\"; \"><name and=\"symbol\" initialize-with=\". \" delimiter=\", \"/><label form=\"short\" prefix=\", \" text-case=\"title\"/></names></if></choose><names variable=\"translator\" delimiter=\"; \"><name and=\"symbol\" initialize-with=\". \" delimiter=\", \"/><label form=\"short\" prefix=\", \" text-case=\"title\"/></names></group></macro><macro name=\"secondary-contributors-booklike\"><group delimiter=\"; \"><choose><if variable=\"title\"><names variable=\"interviewer\"><name and=\"symbol\" initialize-with=\". \" delimiter=\", \"/><label form=\"short\" prefix=\", \" text-case=\"title\"/></names></if></choose><choose><if type=\"post webpage\" match=\"none\"><choose><if variable=\"container-title\" match=\"none\"><group delimiter=\"; \"><names variable=\"container-author\"><label form=\"verb-short\" suffix=\" \" text-case=\"title\"/><name and=\"symbol\" initialize-with=\". \" delimiter=\", \"/></names><names variable=\"editor translator\" delimiter=\"; \"><name and=\"symbol\" initialize-with=\". \" delimiter=\", \"/><label form=\"short\" prefix=\", \" text-case=\"title\"/></names></group></if></choose></if><else><group delimiter=\"; \"><names variable=\"container-author\"><label form=\"verb-short\" suffix=\" \" text-case=\"title\"/><name and=\"symbol\" initialize-with=\". \" delimiter=\", \"/></names><names variable=\"editor translator\" delimiter=\"; \"><name and=\"symbol\" initialize-with=\". \" delimiter=\", \"/><label form=\"short\" prefix=\", \" text-case=\"title\"/></names></group></else></choose></group></macro><macro name=\"database-location\"><choose><if variable=\"archive-place\" match=\"none\"><text variable=\"archive_location\"/></if></choose></macro><macro name=\"number\"><choose><if variable=\"number\"><group delimiter=\", \"><group delimiter=\" \"><text variable=\"genre\" text-case=\"title\"/><choose><if is-numeric=\"number\"><text term=\"issue\" form=\"short\" text-case=\"capitalize-first\"/><text variable=\"number\"/></if><else><text variable=\"number\"/></else></choose></group><choose><if type=\"thesis\"><choose><if variable=\"archive DOI URL\" match=\"any\"><text variable=\"publisher\"/></if></choose></if></choose></group></if></choose></macro><macro name=\"locators-booklike\"><choose><if type=\"article-journal article-magazine article-newspaper broadcast interview patent post post-weblog review review-book speech webpage\" match=\"any\"/><else-if type=\"paper-conference\"><choose><if variable=\"collection-editor editor editorial-director\" match=\"any\"><group delimiter=\", \"><text macro=\"version\"/><text macro=\"edition\"/><text macro=\"volume-booklike\"/></group></if></choose></else-if><else><group delimiter=\", \"><text macro=\"version\"/><text macro=\"edition\"/><text macro=\"volume-booklike\"/></group></else></choose></macro><macro name=\"version\"><choose><if is-numeric=\"version\"><group delimiter=\" \"><text term=\"version\" text-case=\"capitalize-first\"/><text variable=\"version\"/></group></if><else><text variable=\"version\"/></else></choose></macro><macro name=\"edition\"><choose><if is-numeric=\"edition\"><group delimiter=\" \"><number variable=\"edition\" form=\"ordinal\"/><label variable=\"edition\" form=\"short\"/></group></if><else><text variable=\"edition\"/></else></choose></macro><macro name=\"volume-booklike\"><group delimiter=\", \"><choose><if type=\"report\"><group delimiter=\" \"><text variable=\"collection-title\" text-case=\"title\"/><text variable=\"collection-number\"/></group></if></choose><choose><if variable=\"volume\" match=\"any\"><choose><if is-numeric=\"volume\" match=\"none\"/><else><group delimiter=\" \"><label variable=\"volume\" form=\"short\" text-case=\"capitalize-first\"/><number variable=\"volume\" form=\"numeric\"/></group></else></choose></if><else><group><text term=\"volume\" form=\"short\" text-case=\"capitalize-first\" suffix=\" \"/><text term=\"page-range-delimiter\" prefix=\"1\"/><number variable=\"number-of-volumes\" form=\"numeric\"/></group></else></choose><group delimiter=\" \"><label variable=\"issue\" text-case=\"capitalize-first\"/><text variable=\"issue\"/></group><group delimiter=\" \"><label variable=\"page\" form=\"short\" suffix=\" \"/><text variable=\"page\"/></group></group></macro><macro name=\"reviewed-title\"><choose><if variable=\"reviewed-title\"><text variable=\"reviewed-title\" font-style=\"italic\"/></if><else><text variable=\"title\" font-style=\"italic\"/></else></choose></macro><macro name=\"reviewed-title-intext\"><choose><if variable=\"reviewed-title\"><text variable=\"reviewed-title\" form=\"short\" font-style=\"italic\" text-case=\"title\"/></if><else><text variable=\"title\" form=\"short\" font-style=\"italic\" text-case=\"title\"/></else></choose></macro><macro name=\"format\"><choose><if variable=\"genre medium\" match=\"any\"><group delimiter=\"; \"><choose><if variable=\"number\" match=\"none\"><text variable=\"genre\" text-case=\"capitalize-first\"/></if></choose><text variable=\"medium\" text-case=\"capitalize-first\"/></group></if><else-if type=\"dataset\"><text value=\"Data set\"/></else-if><else-if type=\"book\" variable=\"version\" match=\"all\"><text value=\"Computer software\"/></else-if><else-if type=\"interview personal_communication\" match=\"any\"><choose><if variable=\"archive container-title DOI publisher URL\" match=\"none\"><text term=\"letter\" text-case=\"capitalize-first\"/></if><else-if type=\"interview\"><text term=\"interview\" text-case=\"capitalize-first\"/></else-if></choose></else-if><else-if type=\"map\"><text value=\"Map\"/></else-if></choose></macro><macro name=\"format-intext\"><choose><if variable=\"genre\" match=\"any\"><text variable=\"genre\" text-case=\"capitalize-first\"/></if><else-if variable=\"medium\"><text variable=\"medium\" text-case=\"capitalize-first\"/></else-if><else-if type=\"dataset\"><text value=\"Data set\"/></else-if><else-if type=\"book\" variable=\"version\" match=\"all\"><text value=\"Computer software\"/></else-if><else-if type=\"interview personal_communication\" match=\"any\"><choose><if variable=\"archive container-title DOI publisher URL\" match=\"none\"><text term=\"letter\" text-case=\"capitalize-first\"/></if><else-if type=\"interview\"><text term=\"interview\" text-case=\"capitalize-first\"/></else-if></choose></else-if><else-if type=\"map\"><text value=\"Map\"/></else-if></choose></macro><macro name=\"container\"><choose><if type=\"article-journal article-magazine article-newspaper post-weblog review review-book\" match=\"any\"><text macro=\"container-periodical\"/></if><else-if type=\"paper-conference\"><choose><if variable=\"editor editorial-director collection-editor container-author\" match=\"any\"><text macro=\"container-booklike\"/></if><else><text macro=\"container-periodical\"/></else></choose></else-if><else-if type=\"post webpage\" match=\"none\"><text macro=\"container-booklike\"/></else-if></choose></macro><macro name=\"container-periodical\"><group delimiter=\". \"><group delimiter=\", \"><text variable=\"container-title\" font-style=\"italic\" text-case=\"title\"/><choose><if variable=\"volume\"><group><text variable=\"volume\" font-style=\"italic\"/><text variable=\"issue\" prefix=\"(\" suffix=\")\"/></group></if><else><text variable=\"issue\" font-style=\"italic\"/></else></choose><choose><if variable=\"page\"><text variable=\"page\"/></if><else><text variable=\"number\" prefix=\"Article \"/></else></choose></group><choose><if variable=\"issued\"><choose><if variable=\"issue page volume\" match=\"none\"><text variable=\"status\" text-case=\"capitalize-first\"/></if></choose></if></choose></group></macro><macro name=\"container-booklike\"><choose><if variable=\"container-title\" match=\"any\"><group delimiter=\" \"><text term=\"in\" text-case=\"capitalize-first\"/><group delimiter=\", \"><names variable=\"editor translator\" delimiter=\", &amp; \"><name and=\"symbol\" initialize-with=\". \" delimiter=\", \"/><label form=\"short\" text-case=\"title\" prefix=\" (\" suffix=\")\"/><substitute><names variable=\"editorial-director\"/><names variable=\"collection-editor\"/><names variable=\"container-author\"/></substitute></names><group delimiter=\": \" font-style=\"italic\"><text variable=\"container-title\"/><choose><if is-numeric=\"volume\" match=\"none\"><group delimiter=\" \"><label variable=\"volume\" form=\"short\" text-case=\"capitalize-first\"/><text variable=\"volume\"/></group></if></choose></group></group><text macro=\"parenthetical-container\"/><text macro=\"bracketed-container\"/></group></if></choose></macro><macro name=\"publisher\"><group delimiter=\"; \"><choose><if type=\"thesis\"><choose><if variable=\"archive DOI URL\" match=\"none\"><text variable=\"publisher\"/></if></choose></if><else-if type=\"post webpage\" match=\"any\"><group delimiter=\"; \"><text variable=\"container-title\" text-case=\"title\"/><text variable=\"publisher\"/></group></else-if><else-if type=\"paper-conference\"><choose><if variable=\"collection-editor editor editorial-director\" match=\"any\"><text variable=\"publisher\"/></if></choose></else-if><else-if type=\"article-journal article-magazine article-newspaper post-weblog\" match=\"none\"><text variable=\"publisher\"/></else-if></choose><group delimiter=\", \"><choose><if variable=\"archive-place\"><text variable=\"archive_location\"/></if></choose><text variable=\"archive\"/><text variable=\"archive-place\"/></group></group></macro><macro name=\"access\"><choose><if variable=\"DOI\" match=\"any\"><text variable=\"DOI\" prefix=\"https://doi.org/\"/></if><else-if variable=\"URL\"><group delimiter=\" \"><choose><if variable=\"issued status\" match=\"none\"><group delimiter=\" \"><text term=\"retrieved\" text-case=\"capitalize-first\"/><date variable=\"accessed\" form=\"text\" suffix=\",\"/><text term=\"from\"/></group></if></choose><text variable=\"URL\"/></group></else-if></choose></macro><macro name=\"event\"><choose><if variable=\"event\"><choose><if variable=\"collection-editor editor editorial-director issue page volume\" match=\"none\"><group delimiter=\", \"><text variable=\"event\"/><text variable=\"event-place\"/></group></if></choose></if></choose></macro><macro name=\"publication-history\"><choose><if type=\"patent\" match=\"none\"><group prefix=\"(\" suffix=\")\"><choose><if variable=\"references\"><text variable=\"references\"/></if><else><group delimiter=\" \"><text value=\"Original work published\"/><choose><if is-uncertain-date=\"original-date\"><text term=\"circa\" form=\"short\"/></if></choose><date variable=\"original-date\"><date-part name=\"year\"/></date></group></else></choose></group></if><else><text variable=\"references\" prefix=\"(\" suffix=\")\"/></else></choose></macro><macro name=\"legal-cites\"><choose><if type=\"legal_case\"><group delimiter=\". \"><group delimiter=\", \"><text variable=\"title\"/><group delimiter=\" \"><text macro=\"container-legal\"/><text macro=\"date-legal\"/></group><text variable=\"references\"/></group><text macro=\"access\"/></group></if><else-if type=\"bill\"><group delimiter=\". \"><group delimiter=\", \"><choose><if variable=\"number container-title\" match=\"none\"><text variable=\"title\" font-style=\"italic\"/></if><else><text variable=\"title\"/></else></choose><group delimiter=\" \"><text macro=\"container-legal\"/><text macro=\"date-legal\"/><choose><if variable=\"number container-title\" match=\"none\"><names variable=\"author\" prefix=\"(testimony of \" suffix=\")\"><name and=\"symbol\" delimiter=\", \"/></names></if><else><text variable=\"status\" prefix=\"(\" suffix=\")\"/></else></choose></group><text variable=\"references\"/></group><text macro=\"access\"/></group></else-if><else-if type=\"legislation\"><group delimiter=\". \"><group delimiter=\", \"><text variable=\"title\"/><group delimiter=\" \"><text macro=\"container-legal\"/><text macro=\"date-legal\"/><text variable=\"status\" prefix=\"(\" suffix=\")\"/></group><text variable=\"references\"/></group><text macro=\"access\"/></group></else-if><else-if type=\"treaty\"><group delimiter=\", \"><text variable=\"title\" text-case=\"title\"/><names variable=\"author\"><name initialize-with=\".\" form=\"short\" delimiter=\"-\"/></names><text macro=\"date-legal\"/><text macro=\"container-legal\"/><text macro=\"access\"/></group></else-if></choose></macro><macro name=\"date-legal\"><choose><if type=\"legal_case\"><group prefix=\"(\" suffix=\")\" delimiter=\" \"><text variable=\"authority\"/><choose><if variable=\"container-title\" match=\"any\"><date variable=\"issued\" form=\"numeric\" date-parts=\"year\"/></if><else><date variable=\"issued\" form=\"text\"/></else></choose></group></if><else-if type=\"bill legislation\" match=\"any\"><group prefix=\"(\" suffix=\")\" delimiter=\" \"><group delimiter=\" \"><date variable=\"original-date\"><date-part name=\"year\"/></date><text term=\"and\" form=\"symbol\"/></group><date variable=\"issued\"><date-part name=\"year\"/></date></group></else-if><else-if type=\"treaty\"><date variable=\"issued\" form=\"text\"/></else-if></choose></macro><macro name=\"container-legal\"><choose><if type=\"legal_case\"><group delimiter=\" \"><choose><if variable=\"container-title\"><group delimiter=\" \"><text variable=\"volume\"/><text variable=\"container-title\"/><group delimiter=\" \"><text term=\"section\" form=\"symbol\"/><text variable=\"section\"/></group><choose><if variable=\"page page-first\" match=\"any\"><text variable=\"page-first\"/></if><else><text value=\"___\"/></else></choose></group></if><else><group delimiter=\" \"><choose><if is-numeric=\"number\"><text term=\"issue\" form=\"short\" text-case=\"capitalize-first\"/></if></choose><text variable=\"number\"/></group></else></choose></group></if><else-if type=\"bill\"><group delimiter=\", \"><group delimiter=\" \"><text variable=\"genre\"/><group delimiter=\" \"><choose><if variable=\"chapter-number container-title\" match=\"none\"><text term=\"issue\" form=\"short\"/></if></choose><text variable=\"number\"/></group></group><text variable=\"authority\"/><text variable=\"chapter-number\"/><group delimiter=\" \"><text variable=\"volume\"/><text variable=\"container-title\"/><text variable=\"page-first\"/></group></group></else-if><else-if type=\"legislation\"><choose><if variable=\"number\"><group delimiter=\", \"><text variable=\"number\" prefix=\"Pub. L. No. \"/><group delimiter=\" \"><text variable=\"volume\"/><text variable=\"container-title\"/><text variable=\"page-first\"/></group></group></if><else><group delimiter=\" \"><text variable=\"volume\"/><text variable=\"container-title\"/><choose><if variable=\"section\"><group delimiter=\" \"><text term=\"section\" form=\"symbol\"/><text variable=\"section\"/></group></if><else><text variable=\"page-first\"/></else></choose></group></else></choose></else-if><else-if type=\"treaty\"><group delimiter=\" \"><number variable=\"volume\"/><text variable=\"container-title\"/><choose><if variable=\"page page-first\" match=\"any\"><text variable=\"page-first\"/></if><else><group delimiter=\" \"><text term=\"issue\" form=\"short\" text-case=\"capitalize-first\"/><text variable=\"number\"/></group></else></choose></group></else-if></choose></macro><macro name=\"citation-locator\"><group delimiter=\" \"><choose><if locator=\"chapter\"><label variable=\"locator\" text-case=\"capitalize-first\"/></if><else><label variable=\"locator\" form=\"short\"/></else></choose><text variable=\"locator\"/></group></macro><citation et-al-min=\"3\" et-al-use-first=\"1\" disambiguate-add-year-suffix=\"true\" disambiguate-add-names=\"true\" disambiguate-add-givenname=\"true\" collapse=\"year\" givenname-disambiguation-rule=\"primary-name-with-initials\"><sort><key macro=\"author-bib\" names-min=\"3\" names-use-first=\"1\"/><key macro=\"date-sort-group\"/><key macro=\"date-sort-date\" sort=\"ascending\"/><key variable=\"status\"/></sort><layout prefix=\"(\" suffix=\")\" delimiter=\"; \"><group delimiter=\", \"><text macro=\"author-intext\"/><text macro=\"date-intext\"/><text macro=\"citation-locator\"/></group></layout></citation><bibliography hanging-indent=\"true\" et-al-min=\"21\" et-al-use-first=\"19\" et-al-use-last=\"true\" entry-spacing=\"0\" line-spacing=\"2\"><sort><key macro=\"author-bib\"/><key macro=\"date-sort-group\"/><key macro=\"date-sort-date\" sort=\"ascending\"/><key variable=\"status\"/><key macro=\"title\"/></sort><layout><choose><if type=\"bill legal_case legislation treaty\" match=\"any\"><choose><if variable=\"DOI URL\" match=\"any\"><text macro=\"legal-cites\"/></if><else><text macro=\"legal-cites\" suffix=\".\"/></else></choose></if><else><group delimiter=\" \"><group delimiter=\". \" suffix=\".\"><text macro=\"author-bib\"/><text macro=\"date-bib\"/><text macro=\"title-and-descriptions\"/><text macro=\"container\"/><text macro=\"event\"/><text macro=\"publisher\"/></group><text macro=\"access\"/><text macro=\"publication-history\"/></group></else></choose></layout></bibliography></style>`,\n}\nconst templates = new util.Register(defaultTemplates)\n\nconst fetchStyle = (style) => {\n if (templates.has(style)) {\n return templates.get(style)\n } else {\n return templates.get('apa')\n }\n}\n\nexport default fetchStyle\nexport { templates }\n","// @ts-nocheck\nimport CSL from 'citeproc'\n\nimport { templates } from './styles.js'\nimport { locales } from './locales.js'\n\n// BEGIN add sys function\nconst proxied = Symbol.for('proxied')\nconst getWrapperProxy = function (original) {\n const proxy = function (state, entry) {\n if (state.sys.wrapBibliographyEntry) {\n const [prefix, postfix] = state.sys.wrapBibliographyEntry(this.system_id)\n entry = [prefix, entry, postfix].join('')\n }\n return original.call(this, state, entry)\n }\n proxy[proxied] = true\n return proxy\n}\n\nfor (const format in CSL.Output.Formats) {\n const original = CSL.Output.Formats[format]['@bibliography/entry']\n\n /* istanbul ignore if: currently unreachable */\n if (!original || original[proxied]) {\n continue\n }\n\n CSL.Output.Formats[format]['@bibliography/entry'] = getWrapperProxy(original)\n}\n// END\n\n/**\n * @access private\n * @param {String} locale - locale code\n * @return {String} locale XML\n */\nfunction retrieveLocale(locale) {\n if (locales.has(locale)) {\n return locales.get(locale)\n }\n\n const unnormalised = locale.replace('-', '_')\n if (locales.has(unnormalised)) {\n return locales.get(unnormalised)\n }\n\n // Should only occur when a cs:style default-locale is unknown\n return {}\n}\n\n/**\n * Object containing CSL Engines\n *\n * @access private\n * @constant\n */\nconst engines = {}\n\n/**\n * Retrieve CSL parsing engine\n *\n * @access private\n *\n * @param {String} style - CSL style id\n * @param {String} lang - Language code\n * @param {String} template - CSL XML template\n * @param {module:output/csl~retrieveItem} retrieveItem - Code to retreive item\n * @param {module:output/csl~retrieveLocale} retrieveLocale - Code to retreive locale\n *\n * @return {Object} CSL Engine\n */\nconst fetchEngine = function (style, locale, styleXml, retrieveItem, retrieveLocale) {\n const engineHash = `${style}|${locale}`\n let engine\n\n if (engines[engineHash] instanceof CSL.Engine) {\n engine = engines[engineHash]\n engine.sys.retrieveItem = retrieveItem\n engine.sys.wrapBibliographyEntry = undefined\n engine.updateItems([])\n } else {\n engine = engines[engineHash] = new CSL.Engine(\n { retrieveLocale, retrieveItem },\n styleXml,\n locale,\n true\n )\n }\n\n return engine\n}\n\n/**\n * Prepare CSL parsing engine\n *\n * @access private\n *\n * @param {Array<CSL>} data\n * @param {String} templateName\n * @param {String} language\n * @param {String} format\n *\n * @return {Object} CSL Engine\n */\nconst prepareEngine = function (data, style, locale, format) {\n if (!CSL.Output.Formats[format] || !CSL.Output.Formats[format]['@bibliography/entry']) {\n throw new TypeError(`Cannot find format '${format}'`)\n }\n\n const items = data.reduce((store, entry) => {\n store[entry.id] = entry\n return store\n }, {})\n const template = templates.get(templates.has(style) ? style : 'apa')\n locale = locales.has(locale) ? locale : undefined\n\n const callback = function (key) {\n if (Object.prototype.hasOwnProperty.call(items, key)) {\n return items[key]\n } else {\n throw new Error(`Cannot find entry with id '${key}'`)\n }\n }\n\n const engine = fetchEngine(style, locale, template, callback, retrieveLocale)\n engine.setOutputFormat(format)\n\n return engine\n}\n\nexport default prepareEngine\nexport { fetchEngine }\n","/**\n * Add data-* attribute to a HTML string\n *\n * @access private\n *\n * @param {String} string - HTML string\n * @param {String} name - attribute name\n * @param {String} value - attribute value\n *\n * @return {String} HTML string with attribute\n */\nconst getAttributedEntry = (string, name, value) =>\n string.replace(/^\\s*<[a-z]+/i, `$& data-${name}=\"${value}\"`)\n\n/**\n * Add CSL identifiers to entry\n *\n * @access private\n *\n * @param {String} value - HTML string\n * @param {String} id - ID\n *\n * @return {String} HTML string with CSL ID\n */\nconst getPrefixedEntry = (value, id) => getAttributedEntry(value, 'csl-entry-id', id)\n\nexport { getAttributedEntry, getPrefixedEntry }\n","// @ts-nocheck\nimport { util } from '../core/index.js'\nimport prepareEngine from './engines.js'\nimport { getPrefixedEntry } from './attr.js'\n\n/**\n * Get a rendered affix\n *\n * @access private\n *\n * @param {CSL} source - source element\n * @param {String|Cite~wrapper} affix\n *\n * @return {String} Rendered affixs\n */\nconst getAffix = (source, affix) => (typeof affix === 'function' ? affix(source) : affix || '')\n\n/**\n * This plugin adds the output format `bibliography`, and accepts the following specific options:\n *\n * * `prepend` (`String`, `Function`): prepend static or dynamic text to each entry\n * * `append` (`String`, `Function`): append static or dynamic text to each entry\n * * `nosort` (`Boolean`, default: `false`): do not sort according to the style-defined rules\n * * `asEntryArray` (`Boolean`, default: `false`): return an array of entries consisting of an id and the output for that individual entry\n *\n * Here's an example for `prepend` and `append`:\n *\n * ```js\n * let cite = new Cite({ id: 'a', title: 'Item A' })\n *\n * cite.format('bibliography', { append: ' [foobar]' })\n * // 'Item A. (n.d.). [foobar]\\n'\n *\n * cite.format('bibliography', { prepend (entry) { return `${entry.id}: ` } })\n * // 'a: Item A. (n.d.).\\n'\n * ```\n *\n * And here's another example, possibly more realistic:\n *\n * ```js\n * let cite = new Cite('Q30000000')\n *\n * let date = (new Date()).toLocaleDateString()\n *\n * cite.format('bibliography', {\n * format: 'html',\n * template: 'apa',\n * prepend (entry) {\n * return `[${entry.id}]: `\n * },\n * append: ` [Retrieved on ${date}]`\n * })\n *\n * // `<div class=\"csl-bib-body\">\n * // <div data-csl-entry-id=\"Q30000000\" class=\"csl-entry\">\n * // [Q30000000]: Miccadei, S., De Leo, R., Zammarchi, E., Natali, P. G., &#38; Civitareale, D. (2002). The Synergistic Activity of Thyroid Transcription Factor 1 and Pax 8 Relies on the Promoter/Enhancer Interplay. <i>Molecular Endocrinology</i>, <i>16</i>(4), 837846. https://doi.org/10.1210/MEND.16.4.0808 [Retrieved on 2018-7-10]\n * // </div>\n * // </div>`\n * ```\n *\n * This prepends `[$ID]: ` to each entry, where `$ID` is the ID of that entry, and appends ` [Retrieved on $DATE]`, where `$DATE` is today (constant for all entries).\n *\n * Here's an example for `asEntryArray`:\n *\n * ```js\n * const cite = new Cite([\n * { id: 'a', title: 'Item A', issued: { literal: 2021 } },\n * { id: 'b', title: 'Item B', issued: { literal: 2021 } }\n * ])\n *\n * cite.format('bibliography', { asEntryArray: true })\n * // [\n * // [\n * // \"a\"\n * // \"Item A. (2021).\\n\"\n * // ],\n * // [\n * // \"b\"\n * // \"Item B. (2021).\\n\"\n * // ]\n * // ]\n * ```\n *\n * @memberof module:@citation-js/plugin-csl.output\n * @implements module:@citation-js/core.plugins.output~formatter\n * @method bibliography\n *\n * @param {Array<CSL>} data\n * @param {Object} [options={}]\n * @param {String} [options.template='apa']\n * @param {String} [options.lang]\n * @param {String} [options.format='text']\n * @param {Booolean} [options.asEntryArray=false]\n * @param {Booolean} [options.nosort=false]\n * @param {String|Array<String>} [options.entry]\n * @param {Cite~wrapper} [options.prepend]\n * @param {Cite~wrapper} [options.append]\n *\n * @return {String} output\n */\nexport default function bibliography(data, options = {}) {\n const { template = 'apa', lang, format = 'text', nosort = false } = options\n const ids = options.entry ? [].concat(options.entry) : data.map(({ id }) => id)\n data = util.downgradeCsl(data)\n\n const citeproc = prepareEngine(data, template, lang, format)\n const sortedIds = citeproc.updateItems(ids, nosort)\n\n if (options.append || options.prepend) {\n const items = data.reduce((items, entry) => {\n items[entry.id] = entry\n return items\n }, {})\n\n citeproc.sys.wrapBibliographyEntry = function (id) {\n const entry = items[id]\n return [getAffix(entry, options.prepend), getAffix(entry, options.append)]\n }\n }\n\n const bibliography = citeproc.makeBibliography()\n const [{ bibstart, bibend }, bibBody] = bibliography\n const entries = bibBody.map((element, index) => getPrefixedEntry(element, sortedIds[index]))\n\n if (options.asEntryArray) {\n return entries.map((element, index) => [sortedIds[index], element])\n }\n\n return bibstart + entries.join('') + bibend\n}\n","// @ts-nocheck\nimport { util } from '../core/index.js'\nimport prepareEngine from './engines.js'\n\n/**\n * https://citeproc-js.readthedocs.io/en/latest/csl-json/markup.html#cite-items\n *\n * @typedef {Object} module:@citation-js/plugin-csl.output~CiteItem\n * @property {String} id\n */\n\n/**\n * https://citeproc-js.readthedocs.io/en/latest/csl-json/markup.html#citations\n *\n * @typedef {Object} module:@citation-js/plugin-csl.output~Citation\n * @property {Array<module:@citation-js/plugin-csl.output~CiteItem>} citationItems\n * @property {Object} properties\n * @property {Number} properties.noteIndex\n */\n\n/**\n * @access private\n * @param {String|module:@citation-js/plugin-csl.output~CiteItem} citeItem\n * @return {module:@citation-js/plugin-csl.output~CiteItem} citeItem\n */\nfunction prepareCiteItem(citeItem) {\n return typeof citeItem === 'object' ? citeItem : { id: citeItem }\n}\n\n/**\n * @access private\n * @param {String|Array<String>|Array<module:@citation-js/plugin-csl.output~CiteItem>|module:@citation-js/plugin-csl.output~CiteItem|module:@citation-js/plugin-csl.output~Citation} citation\n * @return {module:@citation-js/plugin-csl.output~Citation} citation\n */\nfunction prepareCitation(citation) {\n if (citation.citationItems) {\n return citation\n }\n\n return {\n citationItems: [].concat(citation).map(prepareCiteItem),\n properties: { noteIndex: 0 },\n }\n}\n\n/**\n * @access private\n * @param {Array<String>|Array<module:@citation-js/plugin-csl.output~CiteItem>|Array<module:@citation-js/plugin-csl.output~Citation>} [context=[]]\n * @return {Array<module:@citation-js/plugin-csl.output~Citation>} citations\n */\nfunction prepareCitations(context) {\n if (!context) {\n return []\n }\n return context.map(prepareCitation)\n}\n\n/**\n * Here's an example for `entry`:\n *\n * ```js\n * let cite = new Cite([\n * { id: 'a', title: 'Item A', issued: { 'date-parts': [[2016]] } },\n * { id: 'b', title: 'Item B', issued: { 'date-parts': [[2017]] } },\n * { id: 'c', title: 'Item C', issued: { 'date-parts': [[2018]] } }\n * ])\n *\n * cite.format('citation')\n * // '(“Item A,” 2016; “Item B,” 2017; “Item C,” 2018)'\n *\n * cite.format('citation', { entry: ['a', 'b'] })\n * // '(“Item A,” 2016; “Item B,” 2017)'\n *\n * cite.format('citation', { entry: 'a' })\n * // '(“Item A,” 2016)'\n *\n * cite.format('citation', { entry: [{ id: 'a', label: 'page', locator: 123 }] })\n * // '(“Item A,” 2016, p. 123)'\n * ```\n *\n * @memberof module:@citation-js/plugin-csl.output\n * @implements module:@citation-js/core.plugins.output~formatter\n * @method citation\n *\n * @param {Array<CSL>} data\n * @param {Object} [options={}]\n * @param {String} [options.template='apa']\n * @param {String} [options.lang]\n * @param {String} [options.format='text']\n * @param {module:@citation-js/plugin-csl.output~Entries} [options.entry] - list of ids or cite-items of entries to include in the citation (defaults to all)\n * @param {Array<String>} [options.citationsPre=[]]\n * @param {Array<String>} [options.citationsPost=[]]\n *\n * @return {String} output\n */\nexport default function citation(data, options = {}) {\n const { template = 'apa', lang, format = 'text' } = options\n const ids = data.map(({ id }) => id)\n const entries = options.entry ? options.entry : ids\n data = util.downgradeCsl(data)\n\n const citeproc = prepareEngine(data, template, lang, format)\n\n const before = prepareCitations(options.citationsPre)\n const citation = prepareCitation(entries)\n const after = prepareCitations(options.citationsPost)\n const output = citeproc.rebuildProcessorState([...before, citation, ...after], format, [])\n\n return output[before.length][2]\n}\n","// @ts-nocheck\n/**\n * ## Formats\n *\n * Formats and other features added by this plugin. General output options:\n *\n * * `template`: the style template to use. Currently, the following are built-in:\n * * `apa` (default)\n * * `vancouver`\n * * `harvard1`\n * * `lang`: the locale to use. Currently, the following are built-in:\n * * `en-US` (default)\n * * `es-ES`\n * * `de-DE`\n * * `fr-FR`\n * * `nl-NL`\n * * `format`: output (markup) format. Note: this doesn't support the output format dictionaries\n * * `entry` (`String`, `Array[String]`): entry ID or list of entry IDs to identify the items to cite\n *\n * For all formats and format-specific options, check out {@link module:@citation-js/plugin-csl.output}.\n *\n * @module @citation-js/plugin-csl\n */\n\n/**\n * @callback module:output/csl~retrieveItem\n * @param {String} id - Citation id\n * @return {CSL} CSL Citation object\n */\n\n/**\n * @callback module:output/csl~retrieveLocale\n * @param {String} lang - Language code\n * @return {String} CSL Locale\n */\n\n/**\n * @typedef {module:@citation-js/plugin-csl.output~Entry|Array<module:@citation-js/plugin-csl.output~Entry>} module:@citation-js/plugin-csl.output~Entries\n */\n\n/**\n * @typedef {String|module:@citation-js/plugin-csl.output~DetailedEntry} module:@citation-js/plugin-csl.output~Entry\n */\n\n/**\n * Corresponds directly to the {@link https://citeproc-js.readthedocs.io/en/latest/csl-json/markup.html#cite-items|cite-items of citeproc-js}.\n *\n * @typedef {Object} module:@citation-js/plugin-csl.output~DetailedEntry\n * @property {Number|String} [locator] - page, figure, section etc. number of the citation\n * @property {String} [label='page'] - type of locator to accompany the locator number\n * @property {Boolean} [suppress-author=false]\n * @property {Boolean} [author-only=false]\n * @property {String} [prefix]\n * @property {String} [suffix]\n */\n\nimport { plugins } from '../core/index.js'\n\nimport { locales } from './locales.js'\nimport { templates } from './styles.js'\nimport engine from './engines.js'\n\nimport bibliography from './bibliography.js'\nimport citation from './citation.js'\n\nplugins.add('@csl', {\n /**\n * @namespace output\n * @type Object<module:@citation-js/core.plugins.output~formatterName,module:@citation-js/core.plugins.output~formatter>\n * @memberof module:@citation-js/plugin-csl\n */\n output: {\n bibliography,\n citation,\n },\n\n /**\n * @namespace config\n * @memberof module:@citation-js/plugin-csl\n */\n config: {\n /**\n * The configuration object also exposes an internal method to prepare a Citeproc engine with given data and configuration:\n *\n * ```js\n * let config = plugins.config.get('@csl')\n *\n * let citeproc = plugins.engine(\n * [{ ... }], // data\n * 'apa', // style\n * 'en-US', // locale\n * 'html' // format\n * )\n *\n * let sortedIds = citeproc.updateItems(\n * [...] // data ids\n * )\n * let makeBibliography = citeproc.makeBibliography()\n * ```\n *\n * @memberof module:@citation-js/plugin-csl.config\n * @method engine\n * @param {module:@citation-js/core~CSL} data\n * @param {String} style\n * @param {String} locale\n * @param {String} format\n */\n engine,\n\n /**\n * Different [CSL Locales](https://github.com/citation-style-language/locales) can be registered like this:\n *\n * ```js\n * let language = 'en-GB'\n * let locale = '<?xml version=\"1.0\" encoding=\"utf-8\"?><locale ...>...</locale>' // The actual XML file\n *\n * let config = plugins.config.get('@csl')\n * config.locales.add(language, locale)\n *\n * let example = new Cite(...)\n * example.format('bibliography', {\n * format: 'html',\n * template: 'apa',\n * lang: language\n * })\n * ```\n *\n * @memberof module:@citation-js/plugin-csl.config\n * @var {module:@citation-js/core.util.Register} locales\n */\n locales,\n\n /**\n * Different [CSL Templates](https://github.com/citation-style-language/styles) can be registered like this:\n *\n * ```js\n * let templateName = 'custom'\n * let template = '<?xml version=\"1.0\" encoding=\"utf-8\"?><style ...>...</style>' // The actual XML file\n *\n * let config = plugins.config.get('@csl')\n * config.templates.add(templateName, template)\n *\n * let example = new Cite(...)\n * example.format('bibliography', {\n * format: 'html',\n * template: templateName,\n * lang: 'en-US'\n * })\n * ```\n *\n * @memberof module:@citation-js/plugin-csl.config\n * @var {module:@citation-js/core.util.Register} templates\n */\n templates,\n },\n})\n","import yaml from 'js-yaml'\nimport { plugins } from '../core/index.js'\n\n// See https://github.com/nodeca/js-yaml/issues/569\nconst timestampTag = 'tag:yaml.org,2002:timestamp'\nconst timestamp = yaml.DEFAULT_SCHEMA.compiledTypeMap.scalar[timestampTag]\n\nconst date = new yaml.Type(timestampTag, {\n kind: 'scalar',\n resolve: timestamp.resolve,\n construct: timestamp.construct,\n instanceOf: Date,\n represent(object) {\n return object.toISOString().split('T')[0]\n },\n})\n\nconst CFF_SCHEMA = yaml.DEFAULT_SCHEMA.extend({\n implicit: [date],\n explicit: [],\n})\n\nplugins.add('@else', {\n input: {\n '@else/yaml': {\n parseType: {\n dataType: 'String',\n tokenList: {\n split: /\\n(\\s{2})*(-\\s)?/,\n token: /^[\\w-]*: /,\n every: false,\n },\n },\n parse(file) {\n return yaml.load(file, { json: true })\n },\n },\n },\n output: {\n yaml(data) {\n return yaml.dump(data, { schema: CFF_SCHEMA })\n },\n },\n})\n","import { plugins, util } from '../core/index.js'\nimport { parse as parseDate } from '@citation-js/date'\n\nimport '../plugin-yaml/index.js'\n\n/**\n * Format: Citation File Format (CFF) version 1.2.0\n * Spec: https://github.com/citation-file-format/citation-file-format/blob/1.2.0/schema-guide.md\n */\n\nconst TYPES_TO_TARGET = {\n art: 'graphic',\n article: 'article-journal', // more likely\n audiovisual: 'motion_picture',\n bill: 'bill',\n blog: 'post-weblog',\n book: 'book',\n catalogue: 'collection',\n conference: 'event',\n 'conference-paper': 'paper-conference',\n data: 'dataset',\n database: 'dataset',\n dictionary: 'entry-dictionary',\n 'edited-work': 'document', // unmapped\n encyclopedia: 'entry-encyclopedia',\n 'film-broadcast': 'broadcast',\n generic: 'document',\n 'government-document': 'regulation',\n grant: 'document', // unmapped\n hearing: 'hearing',\n 'historical-work': 'classic',\n 'legal-case': 'legal_case',\n 'legal-rule': 'legislation',\n 'magazine-article': 'article-magazine',\n manual: 'report', // substitute presented in the CSL specification\n map: 'map',\n multimedia: 'motion_picture',\n music: 'musical_score',\n 'newspaper-article': 'article-newspaper',\n pamphlet: 'pamphlet',\n patent: 'patent',\n 'personal-communication': 'personal_communication',\n proceedings: 'book', // substitute presented in the CSL specification\n report: 'report',\n serial: 'periodical',\n slides: 'speech',\n software: 'software',\n 'software-code': 'software',\n 'software-container': 'software',\n 'software-executable': 'software',\n 'software-virtual-machine': 'software',\n 'sound-recording': 'song',\n standard: 'standard',\n statute: 'legislation',\n thesis: 'thesis',\n unpublished: 'article',\n video: 'motion_picture',\n website: 'webpage',\n}\n\nconst TYPES_TO_SOURCE = {\n article: 'article',\n 'article-journal': 'article',\n 'article-magazine': 'magazine-article',\n 'article-newspaper': 'newspaper-article',\n bill: 'bill',\n book: 'book',\n broadcast: 'film-broadcast',\n chapter: 'generic', // unmapped\n classic: 'historical-work',\n collection: 'catalogue',\n dataset: 'data',\n document: 'generic',\n entry: 'generic', // unmapped\n 'entry-dictionary': 'dictionary',\n 'entry-encyclopedia': 'encyclopedia',\n event: 'conference',\n figure: 'generic', // unmapped\n graphic: 'art',\n hearing: 'hearing',\n interview: 'sound-recording',\n legal_case: 'legal-case',\n legislation: 'statute',\n manuscript: 'historical-work',\n map: 'map',\n motion_picture: 'film-broadcast',\n musical_score: 'music',\n pamphlet: 'pamphlet',\n 'paper-conference': 'conference-paper',\n patent: 'patent',\n performance: 'generic', // unmapped\n periodical: 'serial',\n personal_communication: 'personal-communication',\n post: 'serial',\n 'post-weblog': 'blog',\n regulation: 'government-document',\n report: 'report',\n review: 'generic', // unmapped\n 'review-book': 'generic', // unmapped\n software: 'software',\n song: 'sound-recording',\n speech: 'slides',\n standard: 'standard',\n thesis: 'thesis',\n treaty: 'generic',\n webpage: 'website',\n}\n\nconst ENTITY_PROPS = [\n { source: 'family-names', target: 'family' },\n { source: 'given-names', target: 'given' },\n { source: 'name-particle', target: 'non-dropping-particle' },\n { source: 'name-suffix', target: 'suffix' },\n { source: 'name', target: 'literal' },\n { source: 'orcid', target: '_orcid' },\n]\n\nconst entity = new util.Translator(ENTITY_PROPS)\n\nconst PROP_CONVERTERS = {\n names: {\n toTarget(names) {\n return names.map(entity.convertToTarget)\n },\n toSource(names) {\n return names.map(entity.convertToSource)\n },\n },\n publisher: {\n toTarget({ name, city, region, country }) {\n const place = [city, region, country].filter(Boolean).join(', ')\n return [name, place || undefined]\n },\n toSource(name, place) {\n const entity = { name }\n\n if (place) {\n // Parse the following:\n // - Country\n // - City, Country\n // - City, Region, Country\n const parts = place.split(', ')\n entity.country = parts.pop()\n if (parts.length === 2) {\n entity.region = parts.pop()\n }\n if (parts.length === 1) {\n entity.city = parts.pop()\n }\n }\n\n return entity\n },\n },\n date: {\n toTarget(date) {\n if (date instanceof Date) {\n return parseDate(date.toISOString())\n } else {\n return parseDate(new Date(date).toISOString())\n }\n },\n toSource(date) {\n if (date.raw) {\n return date.raw\n }\n const [year, month, day] = date['date-parts'][0]\n if (day) {\n return new Date(Date.UTC(year, month - 1, day))\n } else if (month) {\n return new Date(Date.UTC(year, month - 1))\n } else {\n return new Date(Date.UTC(year))\n }\n },\n },\n}\n\nconst SHARED_PROPS = [\n 'abstract',\n\n { source: 'authors', target: 'author', convert: PROP_CONVERTERS.names },\n\n // TODO cff: commit\n\n // TODO cff: contact\n\n {\n source: 'date-released',\n target: 'issued',\n when: { target: { type: 'software' } },\n convert: PROP_CONVERTERS.date,\n },\n\n { source: 'doi', target: 'DOI' },\n\n {\n source: 'identifiers',\n target: ['DOI', 'ISBN', 'ISSN', 'PMCID', 'PMID', 'URL'],\n convert: {\n toTarget(identifiers) {\n const newIdentifiers = Array(6).fill(undefined)\n for (const { type, value } of identifiers) {\n if (!this.doi && type === 'doi') {\n newIdentifiers[0] = value\n }\n if (!this.url && type === 'url') {\n newIdentifiers[5] = value\n }\n if (type === 'other' && value.startsWith('urn:isbn:')) {\n newIdentifiers[1] = value.slice(9)\n }\n if (type === 'other' && value.startsWith('urn:issn:')) {\n newIdentifiers[2] = value.slice(9)\n }\n if (type === 'other' && value.startsWith('pmcid:')) {\n newIdentifiers[3] = value.slice(6)\n }\n if (type === 'other' && value.startsWith('pmid:')) {\n newIdentifiers[4] = value.slice(5)\n }\n }\n return newIdentifiers\n },\n toSource(doi, isbn, issn, pmcid, pmid, url) {\n return [\n doi && { type: 'doi', value: doi },\n url && { type: 'url', value: url },\n\n isbn && { type: 'other', value: `urn:isbn:${isbn}` },\n issn && { type: 'other', value: `urn:issn:${issn}` },\n pmcid && { type: 'other', value: `pmcid:${pmcid}` },\n pmid && { type: 'other', value: `pmid:${pmid}` },\n ].filter(Boolean)\n },\n },\n },\n\n {\n source: 'keywords',\n target: 'keyword',\n convert: {\n toTarget(keywords) {\n return keywords.join(',')\n },\n toSource(keywords) {\n return keywords.split(/,\\s*/g)\n },\n },\n },\n\n // TODO cff: license\n // TODO cff: license-url\n\n // TODO cff: message *\n\n // TODO cff: repository\n // TODO cff: repository-code\n // TODO cff: repository-artifact\n\n {\n source: 'title',\n target: 'title',\n when: {\n source: { term: false, entry: false },\n target: {\n type(type) {\n return !['entry', 'entry-dictionary', 'entry-encyclopedia'].includes(type)\n },\n },\n },\n },\n\n {\n source: 'title',\n target: 'container-title',\n when: {\n source: { entry: true, journal: false },\n target: { type: ['entry'] },\n },\n },\n\n {\n source: 'title',\n target: 'container-title',\n when: {\n source: { term: true, journal: false },\n target: { type: ['entry-dictionary', 'entry-encyclopedia'] },\n },\n },\n\n { source: 'url', target: 'URL' },\n\n 'version',\n]\n\nconst MAIN_PROPS = [\n // TYPES\n {\n source: 'type',\n target: 'type',\n convert: {\n toSource(type) {\n return type === 'dataset' ? 'dataset' : 'software'\n },\n toTarget(type) {\n return type === 'dataset' ? 'dataset' : 'software'\n },\n },\n },\n\n // Include main mappings\n ...SHARED_PROPS,\n]\n\nconst REF_PROPS = [\n // Include main mappings\n ...SHARED_PROPS,\n\n // ABBREVIATION\n { source: 'abbreviation', target: 'title-short' },\n { source: 'abbreviation', target: 'shortTitle' },\n\n // COLLECTIONS\n // TODO cff: collection-doi\n // TODO cff: collection-type\n 'collection-title',\n\n // COMMUNICATION\n { source: 'recipients', target: 'recipient', convert: PROP_CONVERTERS.names },\n { source: 'senders', target: 'authors', convert: PROP_CONVERTERS.names },\n\n // CONFERENCE\n {\n source: 'conference',\n target: ['event-title', 'event-date', 'event-place', 'event'],\n convert: {\n toSource(name, date, place, nameFallback) {\n const entity = { name: name || nameFallback }\n\n if (place) {\n entity.location = place\n }\n if (date) {\n entity['date-start'] = PROP_CONVERTERS.date.toSource(date)\n\n if (date['date-parts'] && date['date-parts'].length === 2) {\n entity['date-end'] = PROP_CONVERTERS.date.toSource({\n 'date-parts': [date['date-parts'][1]],\n })\n }\n }\n\n return entity\n },\n toTarget(event) {\n return [\n event.name,\n parseDate(event['date-start'].toISOString(), event['date-end'].toISOString()),\n event.location,\n ]\n },\n },\n },\n\n // COPYRIGHT\n // TODO cff: contact\n // TODO cff: copyright\n\n // DATABASE\n { source: 'database', target: 'source' },\n // TODO cff: database-provider NOTE entity\n\n // DATE\n { source: 'date-accessed', target: 'accessed', convert: PROP_CONVERTERS.date },\n\n {\n source: 'date-downloaded',\n target: 'accessed',\n convert: PROP_CONVERTERS.date,\n when: { source: { 'date-accessed': false }, target: false },\n },\n\n {\n source: 'date-published',\n target: 'issued',\n convert: PROP_CONVERTERS.date,\n when: {\n source: { 'date-released': false },\n target() {\n return this.type !== 'book' || !this.version\n },\n },\n },\n\n {\n source: ['year', 'month'],\n target: 'issued',\n when: { source: { 'date-published': false, 'date-released': false, year: true } },\n convert: {\n toTarget(year, month) {\n const date = month ? [year, month] : [year]\n return { 'date-parts': [date] }\n },\n toSource(issued) {\n const [year, month] = issued['date-parts'][0]\n return [year, month]\n },\n },\n },\n\n {\n source: 'year-original',\n target: 'original-date',\n convert: {\n toTarget(year) {\n return { 'date-parts': [[year]] }\n },\n toSource(date) {\n return date['date-parts'][0][0]\n },\n },\n },\n\n // EDITION\n 'edition',\n\n // EDITORS\n { source: 'editors', target: 'editor', convert: PROP_CONVERTERS.names },\n { source: 'editors-series', target: 'collection-editor', convert: PROP_CONVERTERS.names },\n\n // ENTRY\n {\n source: 'entry',\n target: 'title',\n when: {\n source: { term: false },\n target: { type: 'entry' },\n },\n },\n {\n source: 'term',\n target: 'title',\n when: {\n target: { type: ['entry-dictionary', 'entry-encyclopedia'] },\n },\n },\n\n // FORMAT\n { source: 'format', target: 'dimensions' },\n 'medium',\n\n // GENRE\n {\n source: 'data-type',\n target: 'genre',\n when: {\n target: {\n type(type) {\n return type !== 'thesis'\n },\n },\n },\n },\n {\n source: 'thesis-type',\n target: 'genre',\n when: {\n source: { 'data-type': false },\n target: { type: 'thesis' },\n },\n },\n\n // IDENTIFIERS\n { source: 'isbn', target: 'ISBN' },\n { source: 'issn', target: 'ISSN' },\n // TODO cff: nihmsid\n { source: 'pmcid', target: 'PMCID' },\n\n // ISSUE\n 'issue',\n\n // JOURNAL\n { source: 'journal', target: 'container-title' },\n { source: 'volume-title', target: 'volume-title' },\n {\n source: 'issue-title',\n target: 'volume-title',\n when: {\n source: { 'volume-title': false },\n target: false,\n },\n },\n // TODO cff: issue-date\n\n // LANGUAGE\n {\n source: 'languages',\n target: 'language',\n when: {\n target: true,\n // NOTE: possible values not as strict in csl, so test (crudely) if the value is ok first\n source: {\n language(code) {\n return /[a-z]{2,3}/.test(code)\n },\n },\n },\n convert: {\n // NOTE: CSL can only hold one language\n toSource(language) {\n return [language]\n },\n toTarget(languages) {\n return languages[0]\n },\n },\n },\n\n // LOCATION\n {\n source: 'location',\n target: ['archive', 'archive-place'],\n convert: PROP_CONVERTERS.publisher,\n },\n\n // LOCATION (CODE)\n // TODO cff: filename\n // TODO cff: loc-start\n // TODO cff: loc-end\n\n // NOTES\n { source: 'notes', target: 'note', when: { source: { scope: false } } },\n { source: 'scope', target: 'note', when: { target: false } },\n\n // NUMBER\n 'number',\n\n // PATENT\n {\n source: 'patent-states',\n target: 'jurisdiction',\n // NOTE: CSL jurisdiction can contain more than just US states\n when: { target: false },\n convert: {\n toTarget(states) {\n return states.join(', ')\n },\n },\n },\n\n // PUBLISHER\n {\n source: ['institution', 'department'],\n target: ['publisher', 'publisher-place'],\n when: { source: { publisher: false }, target: { type: 'thesis' } },\n convert: {\n toTarget(institution, department) {\n const [name, place] = PROP_CONVERTERS.publisher.toTarget(institution)\n return [department ? `${department}, ${name}` : name, place]\n },\n toSource(name, place) {\n return [PROP_CONVERTERS.publisher.toSource(name, place)]\n },\n },\n },\n {\n source: 'publisher',\n target: ['publisher', 'publisher-place'],\n when: {\n target: {\n type(type) {\n return type !== 'thesis'\n },\n },\n },\n convert: PROP_CONVERTERS.publisher,\n },\n\n // SECTION\n 'section',\n\n // STATUS\n {\n source: 'status',\n target: 'status',\n when: {\n source: true,\n // NOTE: possible values not as strict in csl, so test if the value is ok first\n target: {\n status: [\n 'in-preparation',\n 'abstract',\n 'submitted',\n 'in-press',\n 'advance-online',\n 'preprint',\n ],\n },\n },\n },\n\n // PAGES\n { source: 'start', target: 'page-first', when: { target: { page: false } } },\n {\n source: ['start', 'end'],\n target: 'page',\n convert: {\n toTarget(start, end) {\n return end ? `${start}-${end}` : start\n },\n toSource(page) {\n const [start, end] = page.split('-')\n return end ? [start, end] : [start]\n },\n },\n },\n { source: 'pages', target: 'number-of-pages' },\n\n // TRANSLATORS\n { source: 'translators', target: 'translator', convert: PROP_CONVERTERS.names },\n\n // TYPES\n {\n source: 'type',\n target: 'type',\n convert: {\n toTarget(type) {\n return TYPES_TO_TARGET[type] || 'document'\n },\n toSource(type) {\n if (type === 'book' && this['event-title']) {\n return 'proceedings'\n }\n return TYPES_TO_SOURCE[type] || 'generic'\n },\n },\n },\n\n // VOLUMES\n 'volume',\n { source: 'number-volumes', target: 'number-of-volumes' },\n]\n\nconst mainTranslator = new util.Translator(MAIN_PROPS)\nconst refTranslator = new util.Translator(REF_PROPS)\nconst CFF_VERSION = '1.2.0'\n\n/** Add doi or url as unique id if available to make citation easy */\nfunction addId(entry) {\n if ('DOI' in entry) {\n entry.id = entry.DOI\n } else if ('URL' in entry) {\n entry.id = entry.URL.replace('http://', '').replace('https://', '')\n }\n}\n\nfunction parse(input) {\n const main = mainTranslator.convertToTarget(input)\n if (input['cff-version'] <= '1.1.0') {\n main.type = TYPES_TO_TARGET.software\n }\n main._cff_mainReference = true\n addId(main)\n\n const output = [main]\n if (input['preferred-citation']) {\n const preferredCitation = refTranslator.convertToTarget(input['preferred-citation'])\n addId(preferredCitation)\n output.push(preferredCitation)\n }\n\n if (Array.isArray(input.references)) {\n output.push(...input.references.map(refTranslator.convertToTarget))\n }\n\n return output\n}\n\nfunction format(input, options = {}) {\n input = input.slice()\n const {\n main,\n preferred,\n cffVersion = CFF_VERSION,\n message = 'Please cite the following works when using this software.',\n } = options\n\n let preferredCitation\n const preferredIndex = input.findIndex((entry) => preferred && entry.id === preferred)\n if (cffVersion >= '1.2.0' && preferredIndex > -1) {\n preferredCitation = refTranslator.convertToSource(...input.splice(preferredIndex, 1))\n }\n\n let mainIndex = input.findIndex((entry) => (main ? entry.id === main : entry._cff_mainReference))\n mainIndex = mainIndex > -1 ? mainIndex : 0\n const mainRef = input[mainIndex]\n ? mainTranslator.convertToSource(...input.splice(mainIndex, 1))\n : {}\n if (mainRef && cffVersion < '1.2.0') {\n delete mainRef.type\n }\n\n const cff = { 'cff-version': cffVersion, message, ...mainRef }\n\n if (preferredCitation) {\n cff['preferred-citation'] = preferredCitation\n }\n\n if (input.length) {\n cff.references = input.map(refTranslator.convertToSource)\n }\n\n return cff\n}\n\nplugins.add('@cff', {\n input: {\n '@cff/object': {\n parseType: {\n dataType: 'SimpleObject',\n propertyConstraint: {\n props: 'cff-version',\n },\n },\n parse,\n },\n },\n output: {\n cff(data, options = {}) {\n const output = format(data, options)\n if (options.type === 'object') {\n return output\n } else {\n return plugins.output.format('yaml', output)\n }\n },\n },\n})\n","import { Cite as CiteCore, plugins } from './citation-js/core/index.js'\nimport './citation-js/plugin-bibjson/index.js'\nimport './citation-js/plugin-bibtex/index.js'\nimport './citation-js/plugin-csl/index.js'\nimport './citation-js/plugin-cff/index.js'\n\nfunction clone(obj) {\n const copy = {}\n for (const key in obj) {\n copy[key] = typeof obj[key] === 'object' ? clone(obj[key]) : obj[key]\n }\n return copy\n}\n\nfunction Cite(data, opts) {\n if (!(this instanceof Cite)) {\n return new Cite(data, opts)\n }\n\n const self = new CiteCore(data, opts)\n this._options = self._options\n this.log = self.log\n this.data = self.data\n}\n\nCite.plugins = clone(plugins)\n\nexport default Cite\n","export default `<?xml version=\"1.0\" encoding=\"utf-8\"?><style xmlns=\"http://purl.org/net/xbiblio/csl\" class=\"in-text\" version=\"1.0\" demote-non-dropping-particle=\"never\" page-range-format=\"minimal-two\"><info><title>Modern Language Association 9th edition</title><title-short>MLA</title-short><id>http://www.zotero.org/styles/modern-language-association</id><link href=\"http://www.zotero.org/styles/modern-language-association\" rel=\"self\"/><link href=\"http://style.mla.org\" rel=\"documentation\"/><author><name>Sebastian Karcher</name></author><category citation-format=\"author\"/><category field=\"generic-base\"/><summary>This style adheres to the MLA 9th edition handbook. Follows the structure of references as outlined in the MLA Manual closely</summary><updated>2021-07-13T20:05:10+00:00</updated><rights license=\"http://creativecommons.org/licenses/by-sa/3.0/\">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights></info><locale xml:lang=\"en\"><date form=\"text\"><date-part name=\"day\" suffix=\" \"/><date-part name=\"month\" suffix=\" \" form=\"short\"/><date-part name=\"year\"/></date><terms><term name=\"month-01\" form=\"short\">Jan.</term><term name=\"month-02\" form=\"short\">Feb.</term><term name=\"month-03\" form=\"short\">Mar.</term><term name=\"month-04\" form=\"short\">Apr.</term><term name=\"month-05\" form=\"short\">May</term><term name=\"month-06\" form=\"short\">June</term><term name=\"month-07\" form=\"short\">July</term><term name=\"month-08\" form=\"short\">Aug.</term><term name=\"month-09\" form=\"short\">Sept.</term><term name=\"month-10\" form=\"short\">Oct.</term><term name=\"month-11\" form=\"short\">Nov.</term><term name=\"month-12\" form=\"short\">Dec.</term><term name=\"translator\" form=\"short\">trans.</term></terms></locale><macro name=\"author\"><names variable=\"author\"><name name-as-sort-order=\"first\" and=\"text\" delimiter-precedes-last=\"always\" delimiter-precedes-et-al=\"always\" initialize=\"false\" initialize-with=\". \"/><label form=\"long\" prefix=\", \"/><substitute><names variable=\"editor\"/><names variable=\"translator\"/><text macro=\"title\"/></substitute></names></macro><macro name=\"author-short\"><group delimiter=\", \"><names variable=\"author\"><name form=\"short\" initialize-with=\". \" and=\"text\"/><substitute><names variable=\"editor\"/><names variable=\"translator\"/><text macro=\"title-short\"/></substitute></names><choose><if disambiguate=\"true\"><text macro=\"title-short\"/></if></choose></group></macro><macro name=\"title\"><choose><if variable=\"container-title\" match=\"any\"><text variable=\"title\" quotes=\"true\" text-case=\"title\"/></if><else><text variable=\"title\" font-style=\"italic\" text-case=\"title\"/></else></choose></macro><macro name=\"title-short\"><choose><if variable=\"container-title\" match=\"any\"><text variable=\"title\" form=\"short\" quotes=\"true\" text-case=\"title\"/></if><else><text variable=\"title\" form=\"short\" font-style=\"italic\" text-case=\"title\"/></else></choose></macro><macro name=\"container-title\"><text variable=\"container-title\" font-style=\"italic\" text-case=\"title\"/></macro><macro name=\"other-contributors\"><choose><if variable=\"container-title\" match=\"any\"><group delimiter=\", \"><names variable=\"container-author\" delimiter=\", \"><label form=\"verb\" suffix=\" \"/><name and=\"text\"/></names><names variable=\"editor translator\" delimiter=\", \"><label form=\"verb\" suffix=\" \"/><name and=\"text\"/></names><names variable=\"director illustrator interviewer\" delimiter=\", \"><label form=\"verb\" suffix=\" \"/><name and=\"text\"/></names></group></if><else><group delimiter=\", \"><names variable=\"container-author\" delimiter=\", \"><label form=\"verb\" suffix=\" \" text-case=\"capitalize-first\"/><name and=\"text\"/></names><names variable=\"editor translator\" delimiter=\", \"><label form=\"verb\" suffix=\" \" text-case=\"capitalize-first\"/><name and=\"text\"/></names><names variable=\"director illustrator interviewer\" delimiter=\", \"><label form=\"verb\" suffix=\" \" text-case=\"capitalize-first\"/><name and=\"text\"/></names></group></else></choose></macro><macro name=\"version\"><group delimiter=\", \"><choose><if is-numeric=\"edition\"><group delimiter=\" \"><number variable=\"edition\" form=\"ordinal\"/><text term=\"edition\" form=\"short\"/></group></if><else><text variable=\"edition\" text-case=\"capitalize-first\"/></else></choose><text variable=\"version\"/></group></macro><macro name=\"volume-lowercase\"><group delimiter=\" \"><text term=\"volume\" form=\"short\"/><text variable=\"volume\"/></group></macro><macro name=\"number\"><group delimiter=\", \"><group><choose><if variable=\"edition container-title\" match=\"any\"><text macro=\"volume-lowercase\"/></if><else-if variable=\"author\" match=\"all\"><choose><if variable=\"editor translator container-author illustrator interviewer director\" match=\"any\"><text macro=\"volume-lowercase\"/></if></choose></else-if><else-if variable=\"editor\" match=\"all\"><choose><if variable=\"translator container-author illustrator interviewer director\" match=\"any\"><text macro=\"volume-lowercase\"/></if></choose></else-if><else-if variable=\"container-author illustrator interviewer director\" match=\"any\"><text macro=\"volume-lowercase\"/></else-if><else><group delimiter=\" \"><text term=\"volume\" form=\"short\" text-case=\"capitalize-first\"/><text variable=\"volume\"/></group></else></choose></group><group delimiter=\" \"><text term=\"issue\" form=\"short\"/><text variable=\"issue\"/></group><choose><if type=\"report\"><text variable=\"genre\"/></if></choose><text variable=\"number\"/></group></macro><macro name=\"publisher\"><text variable=\"publisher\"/></macro><macro name=\"publication-date\"><choose><if type=\"book chapter paper-conference motion_picture\" match=\"any\"><date variable=\"issued\" form=\"numeric\" date-parts=\"year\"/></if><else-if type=\"article-journal article-magazine\" match=\"any\"><date variable=\"issued\" form=\"text\" date-parts=\"year-month\"/></else-if><else-if type=\"speech\" match=\"none\"><date variable=\"issued\" form=\"text\"/></else-if></choose></macro><macro name=\"location\"><group delimiter=\", \"><group delimiter=\" \"><label variable=\"page\" form=\"short\"/><text variable=\"page\"/></group><choose><if variable=\"source\" match=\"none\"><text macro=\"URI\"/></if></choose></group></macro><macro name=\"container2-title\"><group delimiter=\", \"><choose><if type=\"speech\"><text variable=\"event\"/><date variable=\"event-date\" form=\"text\"/><text variable=\"event-place\"/></if></choose><text variable=\"archive\"/><text variable=\"archive-place\"/><text variable=\"archive_location\"/></group></macro><macro name=\"container2-location\"><choose><if variable=\"source\"><choose><if variable=\"DOI URL\" match=\"any\"><group delimiter=\", \"><text variable=\"source\" font-style=\"italic\"/><text macro=\"URI\"/></group></if></choose></if></choose></macro><macro name=\"URI\"><choose><if variable=\"DOI\"><text variable=\"DOI\" prefix=\"https://doi.org/\"/></if><else><text variable=\"URL\"/></else></choose></macro><macro name=\"accessed\"><choose><if variable=\"issued\" match=\"none\"><group delimiter=\" \"><text term=\"accessed\" text-case=\"capitalize-first\"/><date variable=\"accessed\" form=\"text\"/></group></if></choose></macro><citation et-al-min=\"3\" et-al-use-first=\"1\" disambiguate-add-names=\"true\" disambiguate-add-givenname=\"true\"><layout prefix=\"(\" suffix=\")\" delimiter=\"; \"><choose><if locator=\"page line\" match=\"any\"><group delimiter=\" \"><text macro=\"author-short\"/><text variable=\"locator\"/></group></if><else><group delimiter=\", \"><text macro=\"author-short\"/><group><label variable=\"locator\" form=\"short\"/><text variable=\"locator\"/></group></group></else></choose></layout></citation><bibliography hanging-indent=\"true\" et-al-min=\"3\" et-al-use-first=\"1\" line-spacing=\"2\" entry-spacing=\"0\" subsequent-author-substitute=\"---\"><sort><key macro=\"author\"/><key variable=\"title\"/></sort><layout suffix=\".\"><group delimiter=\". \"><text macro=\"author\"/><text macro=\"title\"/><date variable=\"original-date\" form=\"numeric\" date-parts=\"year\"/><group delimiter=\", \"><text macro=\"container-title\"/><text macro=\"other-contributors\"/><text macro=\"version\"/><text macro=\"number\"/><text macro=\"publisher\"/><text macro=\"publication-date\"/><text macro=\"location\"/></group><group delimiter=\", \"><text macro=\"container2-title\"/><text macro=\"container2-location\"/></group><text macro=\"accessed\"/></group></layout></bibliography></style>`\n","export default `<?xml version=\"1.0\" encoding=\"utf-8\"?><style xmlns=\"http://purl.org/net/xbiblio/csl\" class=\"in-text\" version=\"1.0\" demote-non-dropping-particle=\"display-and-sort\" page-range-format=\"chicago\"><info><title>Chicago Manual of Style 17th edition (author-date)</title><id>http://www.zotero.org/styles/chicago-author-date</id><link href=\"http://www.zotero.org/styles/chicago-author-date\" rel=\"self\"/><link href=\"http://www.chicagomanualofstyle.org/tools_citationguide.html\" rel=\"documentation\"/><author><name>Julian Onions</name><email>julian.onions@gmail.com</email></author><contributor><name>Sebastian Karcher</name></contributor><contributor><name>Richard Karnesky</name><email>karnesky+zotero@gmail.com</email><uri>http://arc.nucapt.northwestern.edu/Richard_Karnesky</uri></contributor><contributor><name>Andrew Dunning</name><email>andrew.dunning@utoronto.ca</email><uri>https://orcid.org/0000-0003-0464-5036</uri></contributor><contributor><name>Matthew Roth</name><email>matthew.g.roth@yale.edu</email><uri> https://orcid.org/0000-0001-7902-6331</uri></contributor><contributor><name>Brenton M. Wiernik</name></contributor><category citation-format=\"author-date\"/><category field=\"generic-base\"/><summary>The author-date variant of the Chicago style</summary><updated>2018-01-24T12:00:00+00:00</updated><rights license=\"http://creativecommons.org/licenses/by-sa/3.0/\">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights></info><locale xml:lang=\"en\"><terms><term name=\"editor\" form=\"verb-short\">ed.</term><term name=\"container-author\" form=\"verb\">by</term><term name=\"translator\" form=\"verb-short\">trans.</term><term name=\"editortranslator\" form=\"verb\">edited and translated by</term><term name=\"translator\" form=\"short\">trans.</term></terms></locale><macro name=\"secondary-contributors\"><choose><if type=\"chapter entry-dictionary entry-encyclopedia paper-conference\" match=\"none\"><group delimiter=\". \"><names variable=\"editor translator\" delimiter=\". \"><label form=\"verb\" text-case=\"capitalize-first\" suffix=\" \"/><name and=\"text\" delimiter=\", \"/></names><names variable=\"director\" delimiter=\". \"><label form=\"verb\" text-case=\"capitalize-first\" suffix=\" \"/><name and=\"text\" delimiter=\", \"/></names></group></if></choose></macro><macro name=\"container-contributors\"><choose><if type=\"chapter entry-dictionary entry-encyclopedia paper-conference\" match=\"any\"><group prefix=\", \" delimiter=\", \"><names variable=\"container-author\" delimiter=\", \"><label form=\"verb\" suffix=\" \"/><name and=\"text\" delimiter=\", \"/></names><names variable=\"editor translator\" delimiter=\", \"><label form=\"verb\" suffix=\" \"/><name and=\"text\" delimiter=\", \"/></names></group></if></choose></macro><macro name=\"editor\"><names variable=\"editor\"><name name-as-sort-order=\"first\" and=\"text\" sort-separator=\", \" delimiter=\", \" delimiter-precedes-last=\"always\"/><label form=\"short\" prefix=\", \"/></names></macro><macro name=\"translator\"><names variable=\"translator\"><name name-as-sort-order=\"first\" and=\"text\" sort-separator=\", \" delimiter=\", \" delimiter-precedes-last=\"always\"/><label form=\"short\" prefix=\", \"/></names></macro><macro name=\"recipient\"><choose><if type=\"personal_communication\"><choose><if variable=\"genre\"><text variable=\"genre\" text-case=\"capitalize-first\"/></if><else><text term=\"letter\" text-case=\"capitalize-first\"/></else></choose></if></choose><names variable=\"recipient\" delimiter=\", \"><label form=\"verb\" prefix=\" \" text-case=\"lowercase\" suffix=\" \"/><name and=\"text\" delimiter=\", \"/></names></macro><macro name=\"substitute-title\"><choose><if type=\"article-magazine article-newspaper review review-book\" match=\"any\"><text macro=\"container-title\"/></if></choose></macro><macro name=\"contributors\"><group delimiter=\". \"><names variable=\"author\"><name and=\"text\" name-as-sort-order=\"first\" sort-separator=\", \" delimiter=\", \" delimiter-precedes-last=\"always\"/><label form=\"short\" prefix=\", \"/><substitute><names variable=\"editor\"/><names variable=\"translator\"/><names variable=\"director\"/><text macro=\"substitute-title\"/><text macro=\"title\"/></substitute></names><text macro=\"recipient\"/></group></macro><macro name=\"contributors-short\"><names variable=\"author\"><name form=\"short\" and=\"text\" delimiter=\", \" initialize-with=\". \"/><substitute><names variable=\"editor\"/><names variable=\"translator\"/><names variable=\"director\"/><text macro=\"substitute-title\"/><text macro=\"title\"/></substitute></names></macro><macro name=\"interviewer\"><names variable=\"interviewer\" delimiter=\", \"><label form=\"verb\" prefix=\" \" text-case=\"capitalize-first\" suffix=\" \"/><name and=\"text\" delimiter=\", \"/></names></macro><macro name=\"archive\"><group delimiter=\". \"><text variable=\"archive_location\" text-case=\"capitalize-first\"/><text variable=\"archive\"/><text variable=\"archive-place\"/></group></macro><macro name=\"access\"><group delimiter=\". \"><choose><if type=\"graphic report\" match=\"any\"><text macro=\"archive\"/></if><else-if type=\"article-journal bill book chapter legal_case legislation motion_picture paper-conference\" match=\"none\"><text macro=\"archive\"/></else-if></choose><choose><if type=\"webpage post-weblog\" match=\"any\"><date variable=\"issued\" form=\"text\"/></if></choose><choose><if variable=\"issued\" match=\"none\"><group delimiter=\" \"><text term=\"accessed\" text-case=\"capitalize-first\"/><date variable=\"accessed\" form=\"text\"/></group></if></choose><choose><if type=\"legal_case\" match=\"none\"><choose><if variable=\"DOI\"><text variable=\"DOI\" prefix=\"https://doi.org/\"/></if><else><text variable=\"URL\"/></else></choose></if></choose></group></macro><macro name=\"title\"><choose><if variable=\"title\" match=\"none\"><choose><if type=\"personal_communication\" match=\"none\"><text variable=\"genre\" text-case=\"capitalize-first\"/></if></choose></if><else-if type=\"bill book graphic legislation motion_picture song\" match=\"any\"><text variable=\"title\" text-case=\"title\" font-style=\"italic\"/><group prefix=\" (\" suffix=\")\" delimiter=\" \"><text term=\"version\"/><text variable=\"version\"/></group></else-if><else-if variable=\"reviewed-author\"><choose><if variable=\"reviewed-title\"><group delimiter=\". \"><text variable=\"title\" text-case=\"title\" quotes=\"true\"/><group delimiter=\", \"><text variable=\"reviewed-title\" text-case=\"title\" font-style=\"italic\" prefix=\"Review of \"/><names variable=\"reviewed-author\"><label form=\"verb-short\" text-case=\"lowercase\" suffix=\" \"/><name and=\"text\" delimiter=\", \"/></names></group></group></if><else><group delimiter=\", \"><text variable=\"title\" text-case=\"title\" font-style=\"italic\" prefix=\"Review of \"/><names variable=\"reviewed-author\"><label form=\"verb-short\" text-case=\"lowercase\" suffix=\" \"/><name and=\"text\" delimiter=\", \"/></names></group></else></choose></else-if><else-if type=\"legal_case interview patent\" match=\"any\"><text variable=\"title\"/></else-if><else><text variable=\"title\" text-case=\"title\" quotes=\"true\"/></else></choose></macro><macro name=\"edition\"><choose><if type=\"bill book graphic legal_case legislation motion_picture report song\" match=\"any\"><choose><if is-numeric=\"edition\"><group delimiter=\" \" prefix=\". \"><number variable=\"edition\" form=\"ordinal\"/><text term=\"edition\" form=\"short\" strip-periods=\"true\"/></group></if><else><text variable=\"edition\" text-case=\"capitalize-first\" prefix=\". \"/></else></choose></if><else-if type=\"chapter entry-dictionary entry-encyclopedia paper-conference\" match=\"any\"><choose><if is-numeric=\"edition\"><group delimiter=\" \" prefix=\", \"><number variable=\"edition\" form=\"ordinal\"/><text term=\"edition\" form=\"short\"/></group></if><else><text variable=\"edition\" prefix=\", \"/></else></choose></else-if></choose></macro><macro name=\"locators\"><choose><if type=\"article-journal\"><choose><if variable=\"volume\"><text variable=\"volume\" prefix=\" \"/><group prefix=\" (\" suffix=\")\"><choose><if variable=\"issue\"><text variable=\"issue\"/></if><else><date variable=\"issued\"><date-part name=\"month\"/></date></else></choose></group></if><else-if variable=\"issue\"><group delimiter=\" \" prefix=\", \"><text term=\"issue\" form=\"short\"/><text variable=\"issue\"/><date variable=\"issued\" prefix=\"(\" suffix=\")\"><date-part name=\"month\"/></date></group></else-if><else><date variable=\"issued\" prefix=\", \"><date-part name=\"month\"/></date></else></choose></if><else-if type=\"legal_case\"><text variable=\"volume\" prefix=\", \"/><text variable=\"container-title\" prefix=\" \"/><text variable=\"page\" prefix=\" \"/></else-if><else-if type=\"bill book graphic legal_case legislation motion_picture report song\" match=\"any\"><group prefix=\". \" delimiter=\". \"><group><text term=\"volume\" form=\"short\" text-case=\"capitalize-first\" suffix=\" \"/><number variable=\"volume\" form=\"numeric\"/></group><group><number variable=\"number-of-volumes\" form=\"numeric\"/><text term=\"volume\" form=\"short\" prefix=\" \" plural=\"true\"/></group></group></else-if><else-if type=\"chapter entry-dictionary entry-encyclopedia paper-conference\" match=\"any\"><choose><if variable=\"page\" match=\"none\"><group prefix=\". \"><text term=\"volume\" form=\"short\" text-case=\"capitalize-first\" suffix=\" \"/><number variable=\"volume\" form=\"numeric\"/></group></if></choose></else-if></choose></macro><macro name=\"locators-chapter\"><choose><if type=\"chapter entry-dictionary entry-encyclopedia paper-conference\" match=\"any\"><choose><if variable=\"page\"><group prefix=\", \"><text variable=\"volume\" suffix=\":\"/><text variable=\"page\"/></group></if></choose></if></choose></macro><macro name=\"locators-article\"><choose><if type=\"article-newspaper\"><group prefix=\", \" delimiter=\", \"><group delimiter=\" \"><text variable=\"edition\"/><text term=\"edition\"/></group><group><text term=\"section\" form=\"short\" suffix=\" \"/><text variable=\"section\"/></group></group></if><else-if type=\"article-journal\"><choose><if variable=\"volume issue\" match=\"any\"><text variable=\"page\" prefix=\": \"/></if><else><text variable=\"page\" prefix=\", \"/></else></choose></else-if></choose></macro><macro name=\"point-locators\"><choose><if variable=\"locator\"><choose><if locator=\"page\" match=\"none\"><choose><if type=\"bill book graphic legal_case legislation motion_picture report song\" match=\"any\"><choose><if variable=\"volume\"><group><text term=\"volume\" form=\"short\" suffix=\" \"/><number variable=\"volume\" form=\"numeric\"/><label variable=\"locator\" form=\"short\" prefix=\", \" suffix=\" \"/></group></if><else><label variable=\"locator\" form=\"short\" suffix=\" \"/></else></choose></if><else><label variable=\"locator\" form=\"short\" suffix=\" \"/></else></choose></if><else-if type=\"bill book graphic legal_case legislation motion_picture report song\" match=\"any\"><number variable=\"volume\" form=\"numeric\" suffix=\":\"/></else-if></choose><text variable=\"locator\"/></if></choose></macro><macro name=\"container-prefix\"><text term=\"in\" text-case=\"capitalize-first\"/></macro><macro name=\"container-title\"><choose><if type=\"chapter entry-dictionary entry-encyclopedia paper-conference\" match=\"any\"><text macro=\"container-prefix\" suffix=\" \"/></if></choose><choose><if type=\"webpage\"><text variable=\"container-title\" text-case=\"title\"/></if><else-if type=\"legal_case\" match=\"none\"><group delimiter=\" \"><text variable=\"container-title\" text-case=\"title\" font-style=\"italic\"/><choose><if type=\"post-weblog\"><text value=\"(blog)\"/></if></choose></group></else-if></choose></macro><macro name=\"publisher\"><group delimiter=\": \"><text variable=\"publisher-place\"/><text variable=\"publisher\"/></group></macro><macro name=\"date\"><choose><if variable=\"issued\"><group delimiter=\" \"><date variable=\"original-date\" form=\"text\" date-parts=\"year\" prefix=\"(\" suffix=\")\"/><date variable=\"issued\"><date-part name=\"year\"/></date></group></if><else-if variable=\"status\"><text variable=\"status\" text-case=\"capitalize-first\"/></else-if><else><text term=\"no date\" form=\"short\"/></else></choose></macro><macro name=\"date-in-text\"><choose><if variable=\"issued\"><group delimiter=\" \"><date variable=\"original-date\" form=\"text\" date-parts=\"year\" prefix=\"[\" suffix=\"]\"/><date variable=\"issued\"><date-part name=\"year\"/></date></group></if><else-if variable=\"status\"><text variable=\"status\"/></else-if><else><text term=\"no date\" form=\"short\"/></else></choose></macro><macro name=\"day-month\"><date variable=\"issued\"><date-part name=\"month\"/><date-part name=\"day\" prefix=\" \"/></date></macro><macro name=\"collection-title\"><choose><if match=\"none\" type=\"article-journal\"><choose><if match=\"none\" is-numeric=\"collection-number\"><group delimiter=\", \"><text variable=\"collection-title\" text-case=\"title\"/><text variable=\"collection-number\"/></group></if><else><group delimiter=\" \"><text variable=\"collection-title\" text-case=\"title\"/><text variable=\"collection-number\"/></group></else></choose></if></choose></macro><macro name=\"collection-title-journal\"><choose><if type=\"article-journal\"><group delimiter=\" \"><text variable=\"collection-title\"/><text variable=\"collection-number\"/></group></if></choose></macro><macro name=\"event\"><group delimiter=\" \"><choose><if variable=\"genre\"><text term=\"presented at\"/></if><else><text term=\"presented at\" text-case=\"capitalize-first\"/></else></choose><text variable=\"event\"/></group></macro><macro name=\"description\"><choose><if variable=\"interviewer\" type=\"interview\" match=\"any\"><group delimiter=\". \"><text macro=\"interviewer\"/><text variable=\"medium\" text-case=\"capitalize-first\"/></group></if><else-if type=\"patent\"><group delimiter=\" \" prefix=\". \"><text variable=\"authority\"/><text variable=\"number\"/></group></else-if><else><text variable=\"medium\" text-case=\"capitalize-first\" prefix=\". \"/></else></choose><choose><if variable=\"title\" match=\"none\"/><else-if type=\"thesis personal_communication speech\" match=\"any\"/><else><group delimiter=\" \" prefix=\". \"><text variable=\"genre\" text-case=\"capitalize-first\"/><choose><if type=\"report\"><text variable=\"number\"/></if></choose></group></else></choose></macro><macro name=\"issue\"><choose><if type=\"legal_case\"><text variable=\"authority\" prefix=\". \"/></if><else-if type=\"speech\"><group prefix=\". \" delimiter=\", \"><group delimiter=\" \"><text variable=\"genre\" text-case=\"capitalize-first\"/><text macro=\"event\"/></group><text variable=\"event-place\"/><text macro=\"day-month\"/></group></else-if><else-if type=\"article-newspaper article-magazine personal_communication\" match=\"any\"><date variable=\"issued\" form=\"text\" prefix=\", \"/></else-if><else-if type=\"patent\"><group delimiter=\", \" prefix=\", \"><group delimiter=\" \"><text value=\"filed\"/><date variable=\"submitted\" form=\"text\"/></group><group delimiter=\" \"><choose><if variable=\"issued submitted\" match=\"all\"><text term=\"and\"/></if></choose><text value=\"issued\"/><date variable=\"issued\" form=\"text\"/></group></group></else-if><else-if type=\"article-journal\" match=\"any\"/><else><group prefix=\". \" delimiter=\", \"><choose><if type=\"thesis\"><text variable=\"genre\" text-case=\"capitalize-first\"/></if></choose><text macro=\"publisher\"/></group></else></choose></macro><citation et-al-min=\"4\" et-al-use-first=\"1\" disambiguate-add-year-suffix=\"true\" disambiguate-add-names=\"true\" disambiguate-add-givenname=\"true\" givenname-disambiguation-rule=\"primary-name\" collapse=\"year\" after-collapse-delimiter=\"; \"><layout prefix=\"(\" suffix=\")\" delimiter=\"; \"><group delimiter=\", \"><choose><if variable=\"issued accessed\" match=\"any\"><group delimiter=\" \"><text macro=\"contributors-short\"/><text macro=\"date-in-text\"/></group></if><else><group delimiter=\", \"><text macro=\"contributors-short\"/><text macro=\"date-in-text\"/></group></else></choose><text macro=\"point-locators\"/></group></layout></citation><bibliography hanging-indent=\"true\" et-al-min=\"11\" et-al-use-first=\"7\" subsequent-author-substitute=\"&#8212;&#8212;&#8212;\" entry-spacing=\"0\"><sort><key macro=\"contributors\"/><key variable=\"issued\"/><key variable=\"title\"/></sort><layout suffix=\".\"><group delimiter=\". \"><text macro=\"contributors\"/><text macro=\"date\"/><text macro=\"title\"/></group><text macro=\"description\"/><text macro=\"secondary-contributors\" prefix=\". \"/><text macro=\"container-title\" prefix=\". \"/><text macro=\"container-contributors\"/><text macro=\"edition\"/><text macro=\"locators-chapter\"/><text macro=\"collection-title-journal\" prefix=\", \" suffix=\", \"/><text macro=\"locators\"/><text macro=\"collection-title\" prefix=\". \"/><text macro=\"issue\"/><text macro=\"locators-article\"/><text macro=\"access\" prefix=\". \"/></layout></bibliography></style>`\n","export default `<?xml version=\"1.0\" encoding=\"utf-8\"?><style xmlns=\"http://purl.org/net/xbiblio/csl\" class=\"in-text\" version=\"1.0\" demote-non-dropping-particle=\"sort-only\"><info><title>Harvard Reference format 1 (author-date)</title><id>http://www.zotero.org/styles/harvard1</id><link href=\"http://www.zotero.org/styles/harvard1\" rel=\"self\"/><link href=\"http://libweb.anglia.ac.uk/referencing/harvard.htm\" rel=\"documentation\"/><author><name>Julian Onions</name><email>julian.onions@gmail.com</email></author><category citation-format=\"author-date\"/><category field=\"generic-base\"/><summary>The Harvard author-date style</summary><updated>2012-09-27T22:06:38+00:00</updated><rights license=\"http://creativecommons.org/licenses/by-sa/3.0/\">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights></info><macro name=\"editor\"><names variable=\"editor\" delimiter=\", \"><name and=\"symbol\" initialize-with=\". \" delimiter=\", \"/><label form=\"short\" prefix=\", \" text-case=\"lowercase\"/></names></macro><macro name=\"anon\"><text term=\"anonymous\" form=\"short\" text-case=\"capitalize-first\" strip-periods=\"true\"/></macro><macro name=\"author\"><names variable=\"author\"><name name-as-sort-order=\"all\" and=\"symbol\" sort-separator=\", \" initialize-with=\".\" delimiter-precedes-last=\"never\" delimiter=\", \"/><label form=\"short\" prefix=\" \" text-case=\"lowercase\"/><substitute><names variable=\"editor\"/><text macro=\"anon\"/></substitute></names></macro><macro name=\"author-short\"><names variable=\"author\"><name form=\"short\" and=\"symbol\" delimiter=\", \" delimiter-precedes-last=\"never\" initialize-with=\". \"/><substitute><names variable=\"editor\"/><names variable=\"translator\"/><text macro=\"anon\"/></substitute></names></macro><macro name=\"access\"><choose><if variable=\"URL\"><text value=\"Available at:\" suffix=\" \"/><text variable=\"URL\"/><group prefix=\" [\" suffix=\"]\"><text term=\"accessed\" text-case=\"capitalize-first\" suffix=\" \"/><date variable=\"accessed\"><date-part name=\"month\" suffix=\" \"/><date-part name=\"day\" suffix=\", \"/><date-part name=\"year\"/></date></group></if></choose></macro><macro name=\"title\"><choose><if type=\"bill book graphic legal_case legislation motion_picture report song thesis\" match=\"any\"><text variable=\"title\" font-style=\"italic\"/></if><else><text variable=\"title\"/></else></choose></macro><macro name=\"publisher\"><group delimiter=\": \"><text variable=\"publisher-place\"/><text variable=\"publisher\"/></group></macro><macro name=\"year-date\"><choose><if variable=\"issued\"><date variable=\"issued\"><date-part name=\"year\"/></date></if><else><text term=\"no date\" form=\"short\"/></else></choose></macro><macro name=\"edition\"><choose><if is-numeric=\"edition\"><group delimiter=\" \"><number variable=\"edition\" form=\"ordinal\"/><text term=\"edition\" form=\"short\"/></group></if><else><text variable=\"edition\" suffix=\".\"/></else></choose></macro><macro name=\"pages\"><group><label variable=\"page\" form=\"short\" suffix=\" \"/><text variable=\"page\"/></group></macro><citation et-al-min=\"3\" et-al-use-first=\"1\" disambiguate-add-year-suffix=\"true\" disambiguate-add-names=\"true\" disambiguate-add-givenname=\"true\"><layout prefix=\"(\" suffix=\")\" delimiter=\"; \"><group delimiter=\", \"><group delimiter=\" \"><text macro=\"author-short\"/><text macro=\"year-date\"/></group><group><label variable=\"locator\" form=\"short\"/><text variable=\"locator\"/></group></group></layout></citation><bibliography hanging-indent=\"true\" et-al-min=\"4\" et-al-use-first=\"1\"><sort><key macro=\"author\"/><key variable=\"title\"/></sort><layout><text macro=\"author\" suffix=\",\"/><date variable=\"issued\" prefix=\" \" suffix=\".\"><date-part name=\"year\"/></date><choose><if type=\"bill book graphic legal_case legislation motion_picture report song\" match=\"any\"><group prefix=\" \" delimiter=\" \" suffix=\",\"><text macro=\"title\"/><text macro=\"edition\"/><text macro=\"editor\"/></group><text prefix=\" \" suffix=\".\" macro=\"publisher\"/></if><else-if type=\"chapter paper-conference\" match=\"any\"><text macro=\"title\" prefix=\" \" suffix=\".\"/><group prefix=\" \" delimiter=\" \"><text term=\"in\" text-case=\"capitalize-first\"/><text macro=\"editor\"/><text variable=\"container-title\" font-style=\"italic\" suffix=\".\"/><text variable=\"collection-title\" suffix=\".\"/><text variable=\"event\" suffix=\".\"/><group suffix=\".\" delimiter=\", \"><text macro=\"publisher\" prefix=\" \"/><text macro=\"pages\"/></group></group></else-if><else-if type=\"thesis\"><group prefix=\" \" suffix=\".\" delimiter=\". \"><text macro=\"title\"/><text variable=\"genre\"/><text macro=\"publisher\"/></group></else-if><else><group suffix=\".\"><text macro=\"title\" prefix=\" \"/><text macro=\"editor\" prefix=\" \"/></group><group prefix=\" \" suffix=\".\"><text variable=\"container-title\" font-style=\"italic\"/><group prefix=\", \"><text variable=\"volume\"/><text variable=\"issue\" prefix=\"(\" suffix=\")\"/></group><group prefix=\", \"><label variable=\"page\" form=\"short\"/><text variable=\"page\"/></group></group></else></choose><text prefix=\" \" macro=\"access\" suffix=\".\"/></layout></bibliography></style>`\n","export default `<?xml version=\"1.0\" encoding=\"utf-8\"?><style xmlns=\"http://purl.org/net/xbiblio/csl\" class=\"in-text\" version=\"1.0\" demote-non-dropping-particle=\"sort-only\" page-range-format=\"minimal\"><info><title>Vancouver</title><id>http://www.zotero.org/styles/vancouver</id><link href=\"http://www.zotero.org/styles/vancouver\" rel=\"self\"/><link href=\"http://www.nlm.nih.gov/bsd/uniform_requirements.html\" rel=\"documentation\"/><author><name>Michael Berkowitz</name><email>mberkowi@gmu.edu</email></author><contributor><name>Sean Takats</name><email>stakats@gmu.edu</email></contributor><contributor><name>Sebastian Karcher</name></contributor><category citation-format=\"numeric\"/><category field=\"medicine\"/><summary>Vancouver style as outlined by International Committee of Medical Journal Editors Uniform Requirements for Manuscripts Submitted to Biomedical Journals: Sample References</summary><updated>2014-09-06T16:03:01+00:00</updated><rights license=\"http://creativecommons.org/licenses/by-sa/3.0/\">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights></info><locale xml:lang=\"en\"><date form=\"text\" delimiter=\" \"><date-part name=\"year\"/><date-part name=\"month\" form=\"short\" strip-periods=\"true\"/><date-part name=\"day\"/></date><terms><term name=\"collection-editor\" form=\"long\"><single>editor</single><multiple>editors</multiple></term><term name=\"presented at\">presented at</term><term name=\"available at\">available from</term><term name=\"section\" form=\"short\">sect.</term></terms></locale><locale xml:lang=\"fr\"><date form=\"text\" delimiter=\" \"><date-part name=\"day\"/><date-part name=\"month\" form=\"short\" strip-periods=\"true\"/><date-part name=\"year\"/></date></locale><macro name=\"author\"><names variable=\"author\"><name sort-separator=\" \" initialize-with=\"\" name-as-sort-order=\"all\" delimiter=\", \" delimiter-precedes-last=\"always\"/><label form=\"long\" prefix=\", \"/><substitute><names variable=\"editor\"/></substitute></names></macro><macro name=\"editor\"><names variable=\"editor\" suffix=\".\"><name sort-separator=\" \" initialize-with=\"\" name-as-sort-order=\"all\" delimiter=\", \" delimiter-precedes-last=\"always\"/><label form=\"long\" prefix=\", \"/></names></macro><macro name=\"chapter-marker\"><choose><if type=\"chapter paper-conference entry-dictionary entry-encyclopedia\" match=\"any\"><text term=\"in\" text-case=\"capitalize-first\"/></if></choose></macro><macro name=\"publisher\"><choose><if type=\"article-journal article-magazine article-newspaper\" match=\"none\"><group delimiter=\": \" suffix=\";\"><choose><if type=\"thesis\"><text variable=\"publisher-place\" prefix=\"[\" suffix=\"]\"/></if><else-if type=\"speech\"/><else><text variable=\"publisher-place\"/></else></choose><text variable=\"publisher\"/></group></if></choose></macro><macro name=\"access\"><choose><if variable=\"URL\"><group delimiter=\": \"><text term=\"available at\" text-case=\"capitalize-first\"/><text variable=\"URL\"/></group></if></choose></macro><macro name=\"accessed-date\"><choose><if variable=\"URL\"><group prefix=\"[\" suffix=\"]\" delimiter=\" \"><text term=\"cited\" text-case=\"lowercase\"/><date variable=\"accessed\" form=\"text\"/></group></if></choose></macro><macro name=\"container-title\"><choose><if type=\"article-journal article-magazine chapter paper-conference article-newspaper review review-book entry-dictionary entry-encyclopedia\" match=\"any\"><group suffix=\".\" delimiter=\" \"><choose><if type=\"article-journal review review-book\" match=\"any\"><text variable=\"container-title\" form=\"short\" strip-periods=\"true\"/></if><else><text variable=\"container-title\" strip-periods=\"true\"/></else></choose><choose><if variable=\"URL\"><text term=\"internet\" prefix=\"[\" suffix=\"]\" text-case=\"capitalize-first\"/></if></choose></group><text macro=\"edition\" prefix=\" \"/></if><else-if type=\"bill legislation\" match=\"any\"><group delimiter=\", \"><group delimiter=\". \"><text variable=\"container-title\"/><group delimiter=\" \"><text term=\"section\" form=\"short\" text-case=\"capitalize-first\"/><text variable=\"section\"/></group></group><text variable=\"number\"/></group></else-if><else-if type=\"speech\"><group delimiter=\": \" suffix=\";\"><group delimiter=\" \"><text variable=\"genre\" text-case=\"capitalize-first\"/><text term=\"presented at\"/></group><text variable=\"event\"/></group></else-if><else><group delimiter=\", \" suffix=\".\"><choose><if variable=\"collection-title\" match=\"none\"><group delimiter=\" \"><label variable=\"volume\" form=\"short\" text-case=\"capitalize-first\"/><text variable=\"volume\"/></group></if></choose><text variable=\"container-title\"/></group></else></choose></macro><macro name=\"title\"><text variable=\"title\"/><choose><if type=\"article-journal article-magazine chapter paper-conference article-newspaper review review-book entry-dictionary entry-encyclopedia\" match=\"none\"><choose><if variable=\"URL\"><text term=\"internet\" prefix=\" [\" suffix=\"]\" text-case=\"capitalize-first\"/></if></choose><text macro=\"edition\" prefix=\". \"/></if></choose><choose><if type=\"thesis\"><text variable=\"genre\" prefix=\" [\" suffix=\"]\"/></if></choose></macro><macro name=\"edition\"><choose><if is-numeric=\"edition\"><group delimiter=\" \"><number variable=\"edition\" form=\"ordinal\"/><text term=\"edition\" form=\"short\"/></group></if><else><text variable=\"edition\" suffix=\".\"/></else></choose></macro><macro name=\"date\"><choose><if type=\"article-journal article-magazine article-newspaper review review-book\" match=\"any\"><group suffix=\";\" delimiter=\" \"><date variable=\"issued\" form=\"text\"/><text macro=\"accessed-date\"/></group></if><else-if type=\"bill legislation\" match=\"any\"><group delimiter=\", \"><date variable=\"issued\" delimiter=\" \"><date-part name=\"month\" form=\"short\" strip-periods=\"true\"/><date-part name=\"day\"/></date><date variable=\"issued\"><date-part name=\"year\"/></date></group></else-if><else-if type=\"report\"><date variable=\"issued\" delimiter=\" \"><date-part name=\"year\"/><date-part name=\"month\" form=\"short\" strip-periods=\"true\"/></date><text macro=\"accessed-date\" prefix=\" \"/></else-if><else-if type=\"patent\"><group suffix=\".\"><group delimiter=\", \"><text variable=\"number\"/><date variable=\"issued\"><date-part name=\"year\"/></date></group><text macro=\"accessed-date\" prefix=\" \"/></group></else-if><else-if type=\"speech\"><group delimiter=\"; \"><group delimiter=\" \"><date variable=\"issued\" delimiter=\" \"><date-part name=\"year\"/><date-part name=\"month\" form=\"short\" strip-periods=\"true\"/><date-part name=\"day\"/></date><text macro=\"accessed-date\"/></group><text variable=\"event-place\"/></group></else-if><else><group suffix=\".\"><date variable=\"issued\"><date-part name=\"year\"/></date><text macro=\"accessed-date\" prefix=\" \"/></group></else></choose></macro><macro name=\"pages\"><choose><if type=\"article-journal article-magazine article-newspaper review review-book\" match=\"any\"><text variable=\"page\" prefix=\":\"/></if><else-if type=\"book\" match=\"any\"><text variable=\"number-of-pages\" prefix=\" \"/><choose><if is-numeric=\"number-of-pages\"><label variable=\"number-of-pages\" form=\"short\" prefix=\" \" plural=\"never\"/></if></choose></else-if><else><group prefix=\" \" delimiter=\" \"><label variable=\"page\" form=\"short\" plural=\"never\"/><text variable=\"page\"/></group></else></choose></macro><macro name=\"journal-location\"><choose><if type=\"article-journal article-magazine review review-book\" match=\"any\"><text variable=\"volume\"/><text variable=\"issue\" prefix=\"(\" suffix=\")\"/></if></choose></macro><macro name=\"collection-details\"><choose><if type=\"article-journal article-magazine article-newspaper review review-book\" match=\"none\"><choose><if variable=\"collection-title\"><group delimiter=\" \" prefix=\"(\" suffix=\")\"><names variable=\"collection-editor\" suffix=\".\"><name sort-separator=\" \" initialize-with=\"\" name-as-sort-order=\"all\" delimiter=\", \" delimiter-precedes-last=\"always\"/><label form=\"long\" prefix=\", \"/></names><group delimiter=\"; \"><text variable=\"collection-title\"/><group delimiter=\" \"><label variable=\"volume\" form=\"short\"/><text variable=\"volume\"/></group></group></group></if></choose></if></choose></macro><macro name=\"report-details\"><choose><if type=\"report\"><text variable=\"number\" prefix=\"Report No.: \"/></if></choose></macro><citation collapse=\"citation-number\"><sort><key variable=\"citation-number\"/></sort><layout prefix=\"(\" suffix=\")\" delimiter=\",\"><text variable=\"citation-number\"/></layout></citation><bibliography et-al-min=\"7\" et-al-use-first=\"6\" second-field-align=\"flush\"><layout><text variable=\"citation-number\" suffix=\". \"/><group delimiter=\". \" suffix=\". \"><text macro=\"author\"/><text macro=\"title\"/></group><group delimiter=\" \" suffix=\". \"><group delimiter=\": \"><text macro=\"chapter-marker\"/><group delimiter=\" \"><text macro=\"editor\"/><text macro=\"container-title\"/></group></group><text macro=\"publisher\"/><group><text macro=\"date\"/><text macro=\"journal-location\"/><text macro=\"pages\"/></group></group><text macro=\"collection-details\" suffix=\". \"/><text macro=\"report-details\" suffix=\". \"/><text macro=\"access\"/></layout></bibliography></style>`\n","import rehypeCitationGenerator from './generator.js'\n// @ts-ignore\nimport Cite from './cite.js'\nimport mla from '../styles/mla.js'\nimport chicago from '../styles/chicago.js'\nimport harvard1 from '../styles/harvard1.js'\nimport vancouver from '../styles/vancouver.js'\n\nconst config = Cite.plugins.config.get('@csl')\n\n// Citation.js comes with apa\nconfig.templates.add('vancouver', vancouver)\nconfig.templates.add('harvard1', harvard1)\nconfig.templates.add('mla', mla)\nconfig.templates.add('chicago', chicago)\n\nconst rehypeCitation = rehypeCitationGenerator(Cite)\n\nexport default rehypeCitation\n"],"names":["citationRE","fullCitationRE","_wrapRegExp","prefix","citekey","explicitLocator","explicitLocatorInSuffix","suffix","locatorRE","locatorLabels","book","chapter","column","figure","folio","issue","line","note","opus","page","paragraph","part","section","verse","volume","parseCitation","regexMatch","entries","isComposite","fullCitation","inTextSuppressAuthor","inTextCitation","optionalSuffix","undefined","citationPart","split","match","exec","trim","thisCitation","id","groups","replace","locator","label","rawPrefix","endsWith","substring","length","rawSuffix","suffixToParse","containsLocator","parseSuffix","push","_extends","retValue","natural","toLowerCase","startsWith","substr","readFile","path","isValidHttpUrl","fetch","then","response","text","data","fs","readFileSync","str","url","URL","_","protocol","getBibliography","options","file","_file$data","bibliography","frontmatter","i","join","cwd","loadCSL","Cite","format","root","config","plugins","get","Object","keys","templates","includes","cslName","Math","random","toString","slice","cslPath","add","err","Error","loadLocale","locales","localePath","xmlLangRe","localeName","getCitationFormat","citeproc","info","cslXml","dataObj","children","node","find","x","citationFormat","getSortedRelevantRegistryItems","relevantIds","sorted","res","item","registry","reflist","index","isSameAuthor","item2","authorList","ref","author","authorList2","family","htmlToHast","html","p5ast","parseFragment","fromParse5","genCitation","mode","citationIdRoot","citationId","citationPre","inlineClass","linkCitations","key","c","processCitationCluster","citationID","citationItems","properties","noteIndex","citationText","ids","map","refIds","e","output","d","results","opt","sort_citations","citeMatch","ambig","indexOf","issued","year","startPos","start","rest","genBiblioNode","params","bibBody","makeBibliography","biblioNode","filter","_node$properties","className","forEach","entry_ids","genFootnoteSection","citationDict","footnoteArray","footnoteSection","list","type","tagName","value","oldFootnoteList","n","idx","oldId","href","dataFootnoteBackref","ariaLabel","liNode","aNode","newfootnoteSection","dataFootnotes","defaultCiteFormat","permittedTags","idRoot","rehypeCitationGenerator","tree","_options$inlineBibCla","bibtexFile","inputCiteformat","csl","inputLang","lang","citeFormat","citations","citationIds","engine","xclass","visit","parent","citeStartIdx","citeEndIdx","newChildren","citeItem","citedText","citedTextNode","noCite","updateItems","mylist","suppressBibliography","inlineBibClass","bilioInserted","biblioMap","_options$inlineBibCla2","_node$properties2","citekeys","pop","inlineBibNode","aBibNode","class","splice","fnArray","nextNode","newFootnoteSection","currentVersion","log","retrieveVersion","versnum","image","constructor","JSON","parse","undo","number","retrieveLastVersion","save","stringify","_options","formats","types","styles","wrapperTypes","validateOutputOptions","TypeError","style","append","prepend","test","validateOptions","maxChainLength","forceType","generateGraph","strict","target","defaultOptions","validate","assign","typeOf","thing","name","dataTypeOf","Array","isArray","applyGraph","entry","graph","_graph","findIndex","removeGraph","logger","_output","level","scope","msg","_log","_levels","_console","console","Console","process","stderr","dataTypes","unregExts","parseNativeTypes","input","dataType","every","matchType","typeList","predicate","extensions","addTypeParser","extends","extend","debug","object","parentTypeParser","hasTypeParser","prototype","hasOwnProperty","call","removeTypeParser","typeLists","listTypeParser","treeTypeParser","attachNode","typeMatcher","TypeParser","validDataTypes","validateDataType","RangeError","validateParseType","RegExp","validateTokenList","tokenList","validatePropertyConstraint","propertyConstraint","validateElementConstraint","elementConstraint","validateExtends","parseTokenList","token","trimInput","testTokens","parsePropertyConstraint","constraints","concat","props","some","prop","parseElementConstraint","constraint","parsePredicate","bind","getCombinedPredicate","predicates","getDataType","DataParser","parser","async","FormatParser","parsers","parseType","typeParser","dataParser","parseAsync","asyncDataParser","validateFormat","NAME","NAME_LIST","DATE","TYPE","entryTypes","article","bill","broadcast","classic","collection","dataset","document","event","graphic","hearing","interview","legal_case","legislation","manuscript","motion_picture","musical_score","pamphlet","patent","performance","periodical","personal_communication","post","regulation","report","review","software","song","speech","standard","thesis","treaty","webpage","fieldTypes","chair","compiler","composer","contributor","curator","director","editor","guest","host","interviewer","illustrator","narrator","organizer","performer","producer","recipient","translator","accessed","container","submitted","categories","custom","language","journalAbbreviation","shortTitle","abstract","annote","archive","archive_collection","archive_location","authority","dimensions","division","DOI","edition","genre","ISBN","ISSN","jurisdiction","keyword","medium","PMCID","PMID","printing","publisher","references","scale","source","status","supplement","title","version","correctName","bestGuessConversions","literal","given","parseName","correctNameList","nameList","names","Boolean","correctDateParts","dateParts","isNaN","parseInt","correctDate","date","dp","range","correctType","correctField","fieldName","fieldType","parseFloat","parseCsl","clean","field","correction","upgradeCsl","downgradeCsl","deepCopy","seen","Set","has","copy","delete","conversions","lib","sign","evenRound","floor","round","createNumberConversion","bitLength","typeOpts","unsigned","lowerBound","pow","upperBound","moduloVal","moduloBitLength","moduloBound","V","opts","enforceRange","Number","isFinite","abs","clamp","val","treatNullAsEmptyString","String","codePointAt","S","U","charCodeAt","fromCodePoint","a","b","Date","module","exports","mixin","getOwnPropertyNames","defineProperty","getOwnPropertyDescriptor","wrapperSymbol","Symbol","implSymbol","wrapperForImpl","impl","implForWrapper","wrapper","PROCESSING_OPTIONS","TRANSITIONAL","NONTRANSITIONAL","normalize","s","findStatus","end","mappingTable","mid","regexAstralSymbols","countSymbols","string","mapChars","domain_name","useSTD3","processing_option","hasError","processed","len","codePoint","apply","error","combiningMarksRegex","validateLabel","punycode","toUnicode","search","processing","result","labels","validation","toASCII","verifyDnsLength","l","total","domain","PROCESSING_OPTIONS_1","specialSchemes","ftp","gopher","http","https","ws","wss","failure","ucs2","decode","at","isASCIIDigit","isASCIIAlpha","isASCIIAlphanumeric","isASCIIHex","isSingleDot","buffer","isDoubleDot","isWindowsDriveLetterCodePoints","cp1","cp2","isWindowsDriveLetterString","isNormalizedWindowsDriveLetterString","containsForbiddenHostCodePoint","containsForbiddenHostCodePointExcludingPercent","isSpecialScheme","scheme","isSpecial","defaultPort","percentEncode","hex","toUpperCase","utf8PercentEncode","buf","Buffer","utf8PercentDecode","isC0ControlPercentEncode","extraPathPercentEncodeSet","isPathPercentEncode","extraUserinfoPercentEncodeSet","isUserinfoPercentEncode","percentEncodeChar","encodeSetPredicate","cStr","parseIPv4Number","R","charAt","regex","parseIPv4","parts","numbers","ipv4","counter","serializeIPv4","address","parseIPv6","pieceIndex","compress","pointer","numbersSeen","ipv4Piece","swaps","temp","serializeIPv6","seqResult","findLongestZeroSequence","ignore0","separator","parseHost","isSpecialArg","parseOpaqueHost","asciiDomain","tr46","ipv4Host","decoded","arr","maxIdx","maxLen","currStart","currLen","serializeHost","trimControlChars","trimTabAndNewline","shortenPath","isNormalizedWindowsDriveLetter","includesCredentials","username","password","cannotHaveAUsernamePasswordPort","cannotBeABaseURL","URLStateMachine","base","encodingOverride","stateOverride","parseError","port","query","fragment","state","atFlag","arrFlag","passwordTokenSeenFlag","ret","parseSchemeStart","parseScheme","parseNoScheme","parseSpecialRelativeOrAuthority","parsePathOrAuthority","parseRelative","parseRelativeSlash","parseSpecialAuthoritySlashes","parseSpecialAuthorityIgnoreSlashes","parseAuthority","encodedCodePoints","parseHostName","parsePort","fileOtherwiseCodePoints","parseFile","parseFileSlash","parseFileHost","parsePathStart","parsePath","shift","parseCannotBeABaseURLPath","parseQuery","serializeURL","excludeFragment","serializeOrigin","tuple","serializeURLOrigin","parseURL","basicURLParse","usm","baseURL","setTheUsername","setThePassword","serializeInteger","integer","implementation","URLImpl","constructorArgs","parsedBase","parsedURL","_url","v","origin","hostname","pathname","hash","toJSON","utils","arguments","args","setup","is","set","enumerable","configurable","obj","Impl","create","privateData","interface","expose","Window","Worker","require$$0","require$$1","Readable","Stream","BUFFER","Blob","blobParts","buffers","element","ArrayBuffer","isView","from","byteOffset","byteLength","size","Promise","resolve","arrayBuffer","ab","stream","readable","_read","relativeStart","relativeEnd","max","min","span","slicedBuffer","blob","defineProperties","toStringTag","writable","FetchError","message","systemError","code","errno","captureStackTrace","convert","require","INTERNALS","PassThrough","Body","body","_this","_ref","_ref$size","_ref$timeout","timeout","isURLSearchParams","isBlob","isBuffer","disturbed","on","bodyUsed","consumeBody","ct","headers","json","_this2","reject","textConverted","_this3","convertBody","mixIn","proto","desc","_this4","alloc","accum","accumBytes","abort","resTimeout","setTimeout","chunk","clearTimeout","charset","getAll","sort","clone","instance","p1","p2","getBoundary","pipe","extractContentType","getTotalBytes","getLengthSync","_lengthRetrievers","hasKnownLength","writeToStream","dest","write","global","invalidTokenRegex","invalidHeaderCharRegex","validateName","validateValue","MAP","Headers","init","rawHeaders","raw","headerNames","headerName","method","iterator","pairs","pair","callback","thisArg","getHeaders","_pairs$i","createHeadersIterator","values","kind","k","INTERNAL","HeadersIteratorPrototype","setPrototypeOf","next","getPrototypeOf","_INTERNAL","done","exportNodeCompatibleHeaders","__proto__","hostHeaderKey","createHeadersLenient","INTERNALS$1","STATUS_CODES","Response","contentType","statusText","ok","redirected","INTERNALS$2","Url","whatwgUrl","parse_url","format_url","urlStr","streamDestructionSupported","isRequest","isAbortSignal","signal","Request","inputBody","redirect","follow","agent","getNodeRequestOptions","request","contentLengthValue","totalBytes","AbortError","URL$1","PassThrough$1","isDomainOrSubdomain","destination","original","orig","isSameProtocol","send","destroyStream","emit","aborted","abortAndFinalize","finalize","req","reqTimeout","addEventListener","removeEventListener","once","socket","fixResponseChunkedTransferBadEnding","addListener","hadError","hasDataListener","listenerCount","isRedirect","statusCode","location","locationURL","requestOpts","response_options","statusMessage","codings","zlibOptions","flush","zlib","Z_SYNC_FLUSH","finishFlush","createGunzip","createInflate","createInflateRaw","createBrotliDecompress","errorCallback","destroy","serializeHeaders","deserializeHeaders","old","serializeRequest","credentials","cache","referrer","referrerPolicy","integrity","keepalive","deserializeRequest","resource","serializeResponse","deserializeResponse","bodyError","createStream","errors","serializeError","deserializeError","parseBodyType","parseBody","Transform","read","shared","execFileSync","_fetch","sendMessage","execPath","__dirname","windowsHide","maxBuffer","Infinity","shell","_body","_bodyError","SyncRequest","defineBuffer","checkBody","SyncResponse","defineBodyError","_super","self","catch","wrapFetchForNode","u","fetchNode","context","fetchFn","default","fetchPolyfill","fetchId","Register","remove","Grammar","rules","defaultState","mainRule","lexer","consumeRule","matchEndOfFile","matchToken","consumeToken","optional","got","SyntaxError","formatError","rule","createConditionEval","condition","conditionEval","parsePropStatement","toSource","inputProp","outputProp","toTarget","when","createConverter","Translator","CONVERT_TO_SOURCE","converter","outputData","converted","cause","convertToSource","convertToTarget","CONVERT_TO_TARGET","prepareParseGraph","reduce","array","last","count","ChainParser","iteration","iterate","typeInfo","getTypeInfo","outputs","chain","parseData","chainLink","chainAsync","parseDataAsync","chainLinkAsync","asyncParsers","nativeParsers","flat","@invalid","nativeAsyncParsers","all","dataAsync","hasDataParser","addDataParser","removeDataParser","listDataParser","formatParser","asyncData","util","parseInput","getIds","addAsync","parseInputAsync","setAsync","reset","getLabel","getComparisonValue","getName","num","compareProp","entryA","entryB","flip","getSortCallback","formatter","register","formatData","parsedOptions","styleType","styleFormat","newStyle","newType","formatOptions","template","_newOptions","createElement","tmp","innerHTML","firstChild","promise","staticMethods","dict","entryName","bibliographyContainer","listItem","htmlDict","wr_start","wr_end","en_start","en_end","ul_start","ul_end","li_start","li_end","textDict","configs","registers","indices","mainIndex","typeIndex","typePlugins","typePlugin","substituters","parseJSON","subst","textContent","empty","jquery","jQuery","HTMLElement","appendCommas","getJsonObject","src","getJsonValue","getJson","warn","ndjson","nameProps","person","firstname","lastname","firstName","lastName","identifiers","journalIdentifiers","idProps","upperCaseProp","identifier","typeMap","booklet","proceedings","mastersthesis","inbook","incollection","conference","inproceedings","manual","misc","online","phdthesis","techreport","unpublished","quickscrapeSpecificProps","generalProps","reviewer","keywords","published","parseDate","journal","firstpage","pages","lastpage","link","cid","parseContentMine","parseBibJson","scraperLinks","authorNameFields","links","authors","records","metadata","factory","moo","this","hasSticky","sticky","isRegExp","o","isObject","reEscape","reGroups","re","reCapture","reUnion","regexps","regexpOrLiteral","ignoreCase","multiline","pad","lastNLines","numLines","position","lineBreaks","lastIndexOf","startPosition","objectToRules","j","include","ruleOptions","arrayToRules","defaultType","fallback","shouldThrow","toRules","spec","defaultErrorRule","compileRules","hasStates","errorRule","fast","fastAllowed","unicodeFlag","word","unicode","pat","regexp","groupCount","fallbackRule","flags","combined","compile","Lexer","checkStateGroup","g","compileStates","states","$all","ruleMap","included","newRules","newRule","fastKeys","keywordTransform","isMap","Map","reverseMap","tokenType","keywordList","startState","stack","col","queuedToken","queuedText","queuedThrow","setState","popState","pushState","eat","_getGroup","tokenToString","queuedGroup","_token","group","lastIndex","offset","matchNL","nl","LexerIterator","numLinesAround","firstDisplayedLine","lastDisplayedLine","lastLineDigits","displayedLines","errorLines","lineNo","freeze","required","biblatex","mvbook","mvcollection","mvproceedings","electronic","www","bibtex","addendum","afterword","annotation","annotator","authortype","bookauthor","bookpagination","booksubtitle","booktitle","booktitleaddon","commentator","doi","editora","editorb","editorc","editortype","editoratype","editorbtype","editorctype","eid","entrysubtype","eprint","eprintclass","eprinttype","eventdate","eventtitle","eventtitleaddon","foreword","holder","howpublished","indextitle","institution","introduction","isan","isbn","ismn","isrn","issn","issuesubtitle","issuetitle","iswc","journalsubtitle","journaltitle","library","mainsubtitle","maintitle","maintitleaddon","month","nameaddon","organization","origdate","origlanguage","origlocation","origpublisher","origtitle","pagetotal","pagination","pubstate","reprinttitle","series","shortauthor","shorteditor","shorthand","shorthandintro","shortjournal","shortseries","shorttitle","subtitle","titleaddon","urldate","venue","volumes","crossref","entryset","execute","gender","langid","langidopts","indexsorttitle","presort","related","relatedoptions","relatedtype","relatedstring","sortkey","sortname","sortshorthand","sorttitle","sortyear","xdata","xref","namea","nameb","namec","nameatype","namebtype","namectype","lista","listb","listc","listd","liste","listf","usera","userb","userc","userd","usere","userf","verba","verbb","verbc","archiveprefix","pdf","primaryclass","school","numpages","pmid","pmcid","diacritics","r","H","t","textcommabelow","commands","textquotesingle","textasciigrave","textquotedbl","textdollar","textless","textgreater","textbackslash","textasciicircum","textunderscore","textbraceleft","textbar","textbraceright","textasciitilde","textexclamdown","textcent","textsterling","textcurrency","textyen","textbrokenbar","textsection","textasciidieresis","textcopyright","textordfeminine","guillemetleft","guillemotleft","textlnot","textregistered","textasciimacron","textdegree","textpm","texttwosuperior","textthreesuperior","textasciiacute","textmu","textparagraph","textperiodcentered","textonesuperior","textordmasculine","guillemetright","guillemotright","textonequarter","textonehalf","textthreequarters","textquestiondown","AE","DH","texttimes","O","TH","ss","ae","dh","textdiv","th","DJ","dj","IJ","ij","L","NG","ng","OE","oe","textflorin","textasciicaron","textasciibreve","textacutedbl","textgravedbl","texttildelow","textbaht","SS","textcompwordmark","textendash","textemdash","textbardbl","textquoteleft","textquoteright","quotesinglbase","textquotedblleft","textquotedblright","quotedblbase","textdagger","textdaggerdbl","textbullet","textellipsis","textperthousand","textpertenthousand","guilsinglleft","guilsinglright","textreferencemark","textinterrobang","textfractionsolidus","textlquill","textrquill","textdiscount","textcolonmonetary","textlira","textnaira","textwon","textdong","texteuro","textpeso","textcelsius","textnumero","textcircledP","textrecipe","textservicemark","texttrademark","textohm","textmho","textestimated","textleftarrow","textuparrow","textrightarrow","textdownarrow","textminus","Hwithstroke","hwithstroke","textasteriskcentered","textsurd","textlangle","textrangle","textblank","textvisiblespace","textopenbullet","textbigcircle","textmusicalnote","textmarried","textdivorced","textinterrobangdown","copyright","Gamma","Delta","Theta","Lambda","Xi","Pi","Sigma","Phi","Psi","Omega","alpha","beta","gamma","delta","varepsilon","zeta","eta","theta","iota","kappa","lambda","mu","nu","xi","pi","rho","varsigma","sigma","tau","upsilon","varphi","chi","psi","omega","vartheta","Upsilon","phi","varpi","varrho","epsilon","_required","_fieldTypes","defaultStrings","jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec","acmcs","acta","cacm","ibmjrd","ibmsj","ieeese","ieeetc","ieeetcad","ipl","jacm","jcss","scp","sicomp","tocs","tods","tog","toms","toois","toplas","tcs","formattingEnvs","it","itshape","sl","slshape","em","bf","bfseries","sc","scshape","rm","sf","tt","formattingCommands","textit","textsl","emph","mkbibitalic","mkbibemph","textbf","strong","mkbibbold","textsc","textsuperscript","textsubscript","enquote","mkbibquote","textmd","textrm","textsf","texttt","textup","formatting","italics","bold","superscript","subscript","smallcaps","nocase","quotes","argumentCommands","ElsevierGlyph","glyph","fromCharCode","ligaturePattern","ligatures","mathScriptFormatting","sp","sb","mathrm","mathScripts","h","m","p","sentenceCaseLanguages","whitespace","comment","main","junk","otherEntryType","dataEntryType","otherEntryContents","lbrace","dataEntryContents","comma","fields","equals","quote","rbrace","quotedLiteral","bracedLiteral","delimiters","bibtexGrammar","Main","oldToken","Entry","openBrace","strings","closeBrace","EntryBody","Field","Expression","ExpressionPart","QuoteString","BracketString","Text","bibTxtRegex","splitEntries","parseEntry","splitPairs","splitPair","parseBibTxtEntry","out","parseBibTxt","biblatexTypes","bookinbook","reference","mvreference","inreference","artwork","audio","legal","letter","movie","music","video","bibtexTypes","constants","sentenceCase","useIdAsLabel","stopWords","unsafeChars","firstWord","months","LABEL","MONTHS","january","february","march","april","june","july","august","september","october","november","december","TYPE_KEYS","bathesis","mathesis","candthesis","resreport","datacd","audiocd","patentde","patenteu","patentfr","patentuk","patentus","patreq","patreqde","patreqeu","patreqfr","patrequk","patrequs","STANDARD_NUMBERS_PATTERN","day","parseMonth","formatLabel","Converters","PICK","datePart","padStart","YEAR_MONTH","EPRINT","HOW_PUBLISHED","howPublished","KEYWORDS","safeId","NAMES","STANDARD_NUMBERS","STATUS","TITLE","addon","nonSpec","formatDate","S2ID","aliases","subtype","typeKey","sourceType","EVENT_TITLE","PAGES","subType","targetType","_objectWithoutProperties","excluded","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","sourceKeys","_toPropertyKey","arg","_toPrimitive","hint","prim","toPrimitive","ownKeys","enumerableOnly","symbols","sym","_objectSpread","_defineProperty","getOwnPropertyDescriptors","_parse","_format","_spec$convertToSource","parseBibtex","formatBibtex","getStringCase","formatNameParts","piece","hyphenated","orderNameParts","orderGiven","undecided","upperCase","unshift","orderNamePieces","pieces","command","commandBegin","commandEnd","mathShift","stringLiteral","namesLiteral","and","hyphen","listLiteral","separatedLiteral","mathLiteral","script","flattenConsString","applyFormatting","valueGrammar","StringNames","Name","NamePiece","NameToken","StringList","StringSeparated","StringVerbatim","StringUri","uri","decodeURI","encodeURI","StringTitleCase","_this$state","partlyLowercase","topLevel","protectCase","MathString","char","formatName","ligature","afterPunctuation","_this$state2","first","otherCharacters","restLowerCase","Command","commandToken","diacritic","func","arity","Env","EnclosedEnv","beginEnv","endEnv","singleLanguageIsEnglish","isEnglish","languages","getMainRule","option","getLexerState","requirements","problems","missing","problem","parseEntryValues","parseValue","property","mapBiblatex","mapBibtex","parseEntries","parseBibtxt","UNSAFE_UNICODE","DIACRITIC_PATTERN","listDelimiters","separated","richTextMappings","sup","sub","escapeValue","subject","formatRichText","closingTags","tokens","formatTitle","formatSingleValue","valueType","formatList","listType","delimiter","formatted","formatEntryValues","formatValue","formatEntry","mapper","bibtxt","formatBibtxt","defaultLocales","defaultTemplates","apa","proxied","for","getWrapperProxy","proxy","sys","wrapBibliographyEntry","postfix","system_id","CSL","Output","Formats","retrieveLocale","locale","unnormalised","engines","fetchEngine","styleXml","retrieveItem","engineHash","Engine","prepareEngine","items","store","setOutputFormat","getAttributedEntry","getPrefixedEntry","getAffix","affix","nosort","sortedIds","bibstart","bibend","asEntryArray","prepareCiteItem","prepareCitation","citation","prepareCitations","before","citationsPre","after","citationsPost","rebuildProcessorState","timestampTag","timestamp","yaml","DEFAULT_SCHEMA","compiledTypeMap","scalar","Type","construct","instanceOf","represent","toISOString","CFF_SCHEMA","implicit","explicit","load","dump","schema","TYPES_TO_TARGET","art","audiovisual","blog","catalogue","database","dictionary","encyclopedia","generic","grant","multimedia","serial","slides","statute","website","TYPES_TO_SOURCE","ENTITY_PROPS","entity","PROP_CONVERTERS","city","region","country","place","UTC","SHARED_PROPS","newIdentifiers","fill","term","MAIN_PROPS","REF_PROPS","nameFallback","department","mainTranslator","refTranslator","CFF_VERSION","addId","_cff_mainReference","preferredCitation","preferred","cffVersion","preferredIndex","mainRef","cff","CiteCore","vancouver","harvard1","mla","chicago","rehypeCitation"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,UAAU,GACrB,muhBAAmG,CAAA;;AAErG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,cAAc,gBAAAC,WAAA,CACzB,s2hBAAgK,EAAA;EAAAC,MAAA,EAAA,CAAA;EAAAC,OAAA,EAAA,CAAA;EAAAC,eAAA,EAAA,CAAA;EAAAC,uBAAA,EAAA,CAAA;EAAAC,MAAA,EAAA,CAAA;AAAA,CAAA,CAAA,CAAA;;AAElK;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,SAAS,GAAG,yCAAyC;;AC5ClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,aAAa,GAAG;EACpBC,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC;AACzFC,EAAAA,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC;AAC9FC,EAAAA,MAAM,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,CAAC;AAChGC,EAAAA,MAAM,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC;AACjFC,EAAAA,KAAK,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC;EACnFC,KAAK,EAAE,CACL,QAAQ,EACR,SAAS,EACT,KAAK,EACL,QAAQ,EACR,SAAS,EACT,KAAK,EACL,MAAM,EACN,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,KAAK,CACN;AACDC,EAAAA,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC;AAC/EC,EAAAA,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC;AAC3DC,EAAAA,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;AACvDC,EAAAA,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC;EAC7DC,SAAS,EAAE,CACT,QAAQ,EACR,SAAS,EACT,MAAM,EACN,GAAG,EACH,IAAI,EACJ,WAAW,EACX,YAAY,EACZ,OAAO,EACP,OAAO,EACP,YAAY,EACZ,aAAa,EACb,SAAS,CACV;AACDC,EAAAA,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC;EACpFC,OAAO,EAAE,CACP,WAAW,EACX,YAAY,EACZ,SAAS,EACT,GAAG,EACH,IAAI,EACJ,SAAS,EACT,UAAU,EACV,MAAM,EACN,MAAM,EACN,OAAO,CACR;AACD,EAAA,WAAW,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC;AACtFC,EAAAA,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC;AACnFC,EAAAA,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAA;AAC/E,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,aAAa,GAAIC,UAAU,IAAK;AAC3C;EACA,IAAIC,OAAO,GAAG,EAAE,CAAA;EAChB,IAAIC,WAAW,GAAG,KAAK,CAAA;AACvB,EAAA,MAAMC,YAAY,GAAGH,UAAU,CAAC,CAAC,CAAC,CAAA;AAClC,EAAA,MAAMI,oBAAoB,GAAGJ,UAAU,CAAC,CAAC,CAAC,CAAA;AAC1C,EAAA,MAAMK,cAAc,GAAGL,UAAU,CAAC,CAAC,CAAC,CAAA;AACpC,EAAA,MAAMM,cAAc,GAAGN,UAAU,CAAC,CAAC,CAAC,CAAA;EAEpC,IAAIG,YAAY,KAAKI,SAAS,EAAE;AAC9B;IACA,KAAK,MAAMC,YAAY,IAAIL,YAAY,CAACM,KAAK,CAAC,GAAG,CAAC,EAAE;MAClD,MAAMC,KAAK,GAAGnC,cAAc,CAACoC,IAAI,CAACH,YAAY,CAACI,IAAI,EAAE,CAAC,CAAA;MACtD,IAAIF,KAAK,KAAK,IAAI,EAAE;AAClB,QAAA,SAAQ;AACV,OAAA;AACA;AACA;AACA;AACA;AACA,MAAA,MAAMG,YAAY,GAAG;AACnBC,QAAAA,EAAE,EAAEJ,KAAK,CAACK,MAAM,CAACrC,OAAO,CAACsC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;AAChDvC,QAAAA,MAAM,EAAE8B,SAAS;AACjBU,QAAAA,OAAO,EAAEV,SAAS;AAClBW,QAAAA,KAAK,EAAE,MAAM;AACb,QAAA,iBAAiB,EAAE,KAAK;AACxBrC,QAAAA,MAAM,EAAE0B,SAAAA;OACT,CAAA;;AAED;AACA;AACA,MAAA,MAAMY,SAAS,GAAGT,KAAK,CAACK,MAAM,CAACtC,MAAM,CAAA;MACrC,IAAI0C,SAAS,KAAKZ,SAAS,EAAE;AAC3BM,QAAAA,YAAY,CAAC,iBAAiB,CAAC,GAAGM,SAAS,CAACP,IAAI,EAAE,CAACQ,QAAQ,CAAC,GAAG,CAAC,CAAA;AAChE,QAAA,IAAIP,YAAY,CAAC,iBAAiB,CAAC,EAAE;UACnCA,YAAY,CAACpC,MAAM,GAAG0C,SAAS,CAACE,SAAS,CAAC,CAAC,EAAEF,SAAS,CAACP,IAAI,EAAE,CAACU,MAAM,GAAG,CAAC,CAAC,CAACV,IAAI,EAAE,CAAA;AAClF,SAAC,MAAM;AACLC,UAAAA,YAAY,CAACpC,MAAM,GAAG0C,SAAS,CAACP,IAAI,EAAE,CAAA;AACxC,SAAA;AACF,OAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAA,MAAMjC,eAAe,GAAG+B,KAAK,CAACK,MAAM,CAACpC,eAAe,CAAA;AACpD,MAAA,MAAMC,uBAAuB,GAAG8B,KAAK,CAACK,MAAM,CAACnC,uBAAuB,CAAA;AACpE,MAAA,MAAM2C,SAAS,GAAGb,KAAK,CAACK,MAAM,CAAClC,MAAM,CAAA;AAErC,MAAA,IAAI2C,aAAa,CAAA;MACjB,IAAIC,eAAe,GAAG,IAAI,CAAA;AAC1B,MAAA,IAAI9C,eAAe,KAAK4B,SAAS,IAAI3B,uBAAuB,KAAK2B,SAAS,EAAE;AAC1E;AACA;AACAiB,QAAAA,aAAa,GAAGD,SAAS,CAAA;AACzBE,QAAAA,eAAe,GAAG,KAAK,CAAA;OACxB,MAAM,IAAI7C,uBAAuB,KAAK2B,SAAS,IAAI5B,eAAe,KAAK4B,SAAS,EAAE;AACjFiB,QAAAA,aAAa,GAAG7C,eAAe,KAAK4B,SAAS,GAAG5B,eAAe,GAAGC,uBAAuB,CAAA;QACzFiC,YAAY,CAAChC,MAAM,GAAG0C,SAAS,oBAATA,SAAS,CAAEX,IAAI,EAAE,CAAA;AACzC,OAAA;MAEA,MAAM;QAAEM,KAAK;QAAED,OAAO;AAAEpC,QAAAA,MAAAA;AAAO,OAAC,GAAG6C,WAAW,CAACF,aAAa,EAAEC,eAAe,CAAC,CAAA;MAC9EZ,YAAY,CAACI,OAAO,GAAGA,OAAO,CAAA;MAE9B,IAAIC,KAAK,KAAKX,SAAS,EAAE;QACvBM,YAAY,CAACK,KAAK,GAAGA,KAAK,CAAA;AAC5B,OAAA;AAEA,MAAA,IAAIvC,eAAe,KAAK4B,SAAS,IAAI3B,uBAAuB,KAAK2B,SAAS,EAAE;QAC1EM,YAAY,CAAChC,MAAM,GAAGA,MAAM,CAAA;OAC7B,MAAM,IAAIA,MAAM,KAAK0B,SAAS,IAAIM,YAAY,CAACI,OAAO,KAAKV,SAAS,EAAE;AACrE;AACA;AACA;QACAM,YAAY,CAACI,OAAO,IAAIpC,MAAM,CAAA;AAChC,OAAA;AAEAoB,MAAAA,OAAO,CAAC0B,IAAI,CAACd,YAAY,CAAC,CAAA;AAC5B,KAAA;AACF,GAAC,MAAM;AACL;AACAX,IAAAA,WAAW,GAAG,IAAI,CAAA;IAClBD,OAAO,CAAC0B,IAAI,CAAAC,QAAA,CAAA;AACVnD,MAAAA,MAAM,EAAE8B,SAAS;MACjBO,EAAE,EAAET,cAAc,CAACW,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;MAC1C,iBAAiB,EAAEZ,oBAAoB,KAAKG,SAAAA;AAAS,KAAA,EAClDmB,WAAW,CAACpB,cAAc,EAAE,KAAK,CAAC,CACtC,CAAC,CAAA;AACJ,GAAA;AACA,EAAA,OAAO,CAACL,OAAO,EAAEC,WAAW,CAAC,CAAA;AAC/B,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASwB,WAAWA,CAAC7C,MAAM,EAAE4C,eAAe,EAAE;AAC5C;AACA,EAAA,MAAMI,QAAQ,GAAG;AACfZ,IAAAA,OAAO,EAAEV,SAAS;AAClBW,IAAAA,KAAK,EAAE,MAAM;AACbrC,IAAAA,MAAM,EAAE0B,SAAAA;GACT,CAAA;EAED,IAAI1B,MAAM,KAAK0B,SAAS,EAAE;AACxB,IAAA,OAAOsB,QAAQ,CAAA;AACjB,GAAA;;AAEA;AACAhD,EAAAA,MAAM,GAAGA,MAAM,CAAC+B,IAAI,EAAE,CAAA;;AAEtB;AACA,EAAA,KAAK,MAAMM,KAAK,IAAInC,aAAa,EAAE;AACjC,IAAA,KAAK,MAAM+C,OAAO,IAAI/C,aAAa,CAACmC,KAAK,CAAC,EAAE;AAC1C,MAAA,IAAIrC,MAAM,CAACkD,WAAW,EAAE,CAACC,UAAU,CAACF,OAAO,CAACC,WAAW,EAAE,CAAC,EAAE;QAC1DF,QAAQ,CAACX,KAAK,GAAGA,KAAK,CAAA;AACtB,QAAA,IAAIO,eAAe,EAAE;AACnB;AACA;AACAI,UAAAA,QAAQ,CAACZ,OAAO,GAAGpC,MAAM,CAACoD,MAAM,CAACH,OAAO,CAACR,MAAM,CAAC,CAACV,IAAI,EAAE,CAAA;AACzD,SAAC,MAAM;AACL;AACA;AACAiB,UAAAA,QAAQ,CAAChD,MAAM,GAAGA,MAAM,CAACoD,MAAM,CAACH,OAAO,CAACR,MAAM,CAAC,CAACV,IAAI,EAAE,CAAA;UACtD,MAAMF,KAAK,GAAG5B,SAAS,CAAC6B,IAAI,CAACkB,QAAQ,CAAChD,MAAM,CAAC,CAAA;UAC7C,IAAI6B,KAAK,KAAK,IAAI,EAAE;AAClBmB,YAAAA,QAAQ,CAACZ,OAAO,GAAGP,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5BmB,YAAAA,QAAQ,CAAChD,MAAM,GAAGgD,QAAQ,CAAChD,MAAM,CAACoD,MAAM,CAACvB,KAAK,CAAC,CAAC,CAAC,CAACY,MAAM,CAAC,CAACV,IAAI,EAAE,CAAA;AAClE,WAAA;AACF,SAAA;AAEA,QAAA,OAAOiB,QAAQ,CAAC;AAClB,OAAA;AACF,KAAA;AACF,GAAA;;AAEA;AACA;AACA;AACA,EAAA,IAAIJ,eAAe,EAAE;IACnBI,QAAQ,CAACZ,OAAO,GAAGpC,MAAM,CAAA;AAC3B,GAAC,MAAM;AACL;AACA;AACA;AACA,IAAA,MAAM6B,KAAK,GAAG5B,SAAS,CAAC6B,IAAI,CAAC9B,MAAM,CAAC,CAAA;IACpC,IAAI6B,KAAK,KAAK,IAAI,EAAE;AAClBmB,MAAAA,QAAQ,CAACZ,OAAO,GAAGP,KAAK,CAAC,CAAC,CAAC,CAAC;AAC5BmB,MAAAA,QAAQ,CAAChD,MAAM,GAAGA,MAAM,CAACoD,MAAM,CAACvB,KAAK,CAAC,CAAC,CAAC,CAACY,MAAM,CAAC,CAACV,IAAI,EAAE,CAAC;AAC1D,KAAA;AACF,GAAA;;AAEA,EAAA,OAAOiB,QAAQ,CAAA;AACjB;;AC1OO,MAAMK,QAAQ,GAAG,MAAOC,IAAI,IAAK;AACtC,EAAA,IAAIC,cAAc,CAACD,IAAI,CAAC,EAAE;IACxB,OAAOE,OAAK,CAACF,IAAI,CAAC,CACfG,IAAI,CAAEC,QAAQ,IAAKA,QAAQ,CAACC,IAAI,EAAE,CAAC,CACnCF,IAAI,CAAEG,IAAI,IAAKA,IAAI,CAAC,CAAA;AACzB,GAAC,MAAM;AACL,IAAY;AACV,MAAA,OAAO,OAAO,IAAI,CAAC,CAACH,IAAI,CAAEI,EAAE,IAAKA,EAAE,CAACC,YAAY,CAACR,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;AACjE,KAEA;AACF,GAAA;AACF,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,cAAc,GAAIQ,GAAG,IAAK;AACrC,EAAA,IAAIC,GAAG,CAAA;EAEP,IAAI;AACFA,IAAAA,GAAG,GAAG,IAAIC,GAAG,CAACF,GAAG,CAAC,CAAA;GACnB,CAAC,OAAOG,CAAC,EAAE;AACV,IAAA,OAAO,KAAK,CAAA;AACd,GAAA;EAEA,OAAOF,GAAG,CAACG,QAAQ,KAAK,OAAO,IAAIH,GAAG,CAACG,QAAQ,KAAK,QAAQ,CAAA;AAC9D,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,eAAe,GAAG,OAAOC,OAAO,EAAEC,IAAI,KAAK;AAAA,EAAA,IAAAC,UAAA,CAAA;AACtD;EACA,IAAIC,YAAY,GAAG,EAAE,CAAA;EACrB,IAAIH,OAAO,CAACG,YAAY,EAAE;AACxBA,IAAAA,YAAY,GACV,OAAOH,OAAO,CAACG,YAAY,KAAK,QAAQ,GAAG,CAACH,OAAO,CAACG,YAAY,CAAC,GAAGH,OAAO,CAACG,YAAY,CAAA;AAC1F;AACF,GAAC,MAAM,IAAIF,IAAI,aAAAC,UAAA,GAAJD,IAAI,CAAEV,IAAI,cAAAW,UAAA,GAAVA,UAAA,CAAYE,WAAW,aAAvBF,UAAA,CAAyBC,YAAY,EAAE;AAChD;AACAA,IAAAA,YAAY,GACV,OAAOF,IAAI,CAACV,IAAI,CAACa,WAAW,CAACD,YAAY,KAAK,QAAQ,GAClD,CAACF,IAAI,CAACV,IAAI,CAACa,WAAW,CAACD,YAAY,CAAC,GACpCF,IAAI,CAACV,IAAI,CAACa,WAAW,CAACD,YAAY,CAAA;AACxC;AACA,IAAA,KAAK,IAAIE,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,YAAY,CAAC/B,MAAM,EAAEiC,CAAC,EAAE,EAAE;MAC5C,IAAI,CAACnB,cAAc,CAACiB,YAAY,CAACE,CAAC,CAAC,CAAC,EAAE;AACpC,QAAY;AACVF,UAAAA,YAAY,CAACE,CAAC,CAAC,GAAG,MAAM,OAAO,MAAM,CAAC,CAACjB,IAAI,CAAEH,IAAI,IAC/CA,IAAI,CAACqB,IAAI,CAACN,OAAO,CAACf,IAAI,IAAIgB,IAAI,CAACM,GAAG,EAAEJ,YAAY,CAACE,CAAC,CAAC,CACrD,CAAC,CAAA;AACH,SAEA;AACF,OAAA;AACF,KAAA;AACF,GAAA;AAEA,EAAA,OAAOF,YAAY,CAAA;AACrB,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMK,OAAO,GAAG,OAAOC,IAAI,EAAEC,MAAM,EAAEC,IAAI,GAAG,EAAE,KAAK;EACxD,MAAMC,MAAM,GAAGH,IAAI,CAACI,OAAO,CAACD,MAAM,CAACE,GAAG,CAAC,MAAM,CAAC,CAAA;AAC9C,EAAA,IAAI,CAACC,MAAM,CAACC,IAAI,CAACJ,MAAM,CAACK,SAAS,CAAC1B,IAAI,CAAC,CAAC2B,QAAQ,CAACR,MAAM,CAAC,EAAE;IACxD,MAAMS,OAAO,GAAI,CAAYC,UAAAA,EAAAA,IAAI,CAACC,MAAM,EAAE,CAACC,QAAQ,CAAC,EAAE,CAAC,CAACC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAE,CAAC,CAAA,CAAA;IACrE,IAAIC,OAAO,GAAG,EAAE,CAAA;IAChB,IAAItC,cAAc,CAACwB,MAAM,CAAC,EAAEc,OAAO,GAAGd,MAAM,CACvC,KAAA;MACSc,OAAO,GAAG,MAAM,OAAO,MAAM,CAAC,CAACpC,IAAI,CAAEH,IAAI,IAAKA,IAAI,CAACqB,IAAI,CAACK,IAAI,EAAED,MAAM,CAAC,CAAC,CAAA;AACpF,KAAA;IACA,IAAI;AACFE,MAAAA,MAAM,CAACK,SAAS,CAACQ,GAAG,CAACN,OAAO,EAAE,MAAMnC,QAAQ,CAACwC,OAAO,CAAC,CAAC,CAAA;KACvD,CAAC,OAAOE,GAAG,EAAE;AACZ,MAAA,MAAM,IAAIC,KAAK,CAAE,CAAoBjB,kBAAAA,EAAAA,MAAO,qCAAoC,CAAC,CAAA;AACnF,KAAA;AACA,IAAA,OAAOS,OAAO,CAAA;AAChB,GAAC,MAAM;AACL,IAAA,OAAOT,MAAM,CAAA;AACf,GAAA;AACF,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMkB,UAAU,GAAG,OAAOnB,IAAI,EAAEC,MAAM,EAAEC,IAAI,GAAG,EAAE,KAAK;EAC3D,MAAMC,MAAM,GAAGH,IAAI,CAACI,OAAO,CAACD,MAAM,CAACE,GAAG,CAAC,MAAM,CAAC,CAAA;AAC9C,EAAA,IAAI,CAACC,MAAM,CAACC,IAAI,CAACJ,MAAM,CAACiB,OAAO,CAACtC,IAAI,CAAC,CAAC2B,QAAQ,CAACR,MAAM,CAAC,EAAE;IACtD,IAAIoB,UAAU,GAAG,EAAE,CAAA;IACnB,IAAI5C,cAAc,CAACwB,MAAM,CAAC,EAAEoB,UAAU,GAAGpB,MAAM,CAC1C,KAAA;MACSoB,UAAU,GAAG,MAAM,OAAO,MAAM,CAAC,CAAC1C,IAAI,CAAEH,IAAI,IAAKA,IAAI,CAACqB,IAAI,CAACK,IAAI,EAAED,MAAM,CAAC,CAAC,CAAA;AACvF,KAAA;IACA,IAAI;AACF,MAAA,MAAMT,IAAI,GAAG,MAAMjB,QAAQ,CAAC8C,UAAU,CAAC,CAAA;MACvC,MAAMC,SAAS,GAAG,iBAAiB,CAAA;MACnC,MAAMC,UAAU,GAAG/B,IAAI,CAACzC,KAAK,CAACuE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;MAC3CnB,MAAM,CAACiB,OAAO,CAACJ,GAAG,CAACO,UAAU,EAAE/B,IAAI,CAAC,CAAA;AACpC,MAAA,OAAO+B,UAAU,CAAA;KAClB,CAAC,OAAON,GAAG,EAAE;AACZ,MAAA,MAAM,IAAIC,KAAK,CAAE,CAAuBjB,qBAAAA,EAAAA,MAAO,qCAAoC,CAAC,CAAA;AACtF,KAAA;AACF,GAAC,MAAM;AACL,IAAA,OAAOA,MAAM,CAAA;AACf,GAAA;AACF,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACO,MAAMuB,iBAAiB,GAAIC,QAAQ,IAAK;EAC7C,MAAMC,IAAI,GAAGD,QAAQ,CAACE,MAAM,CAACC,OAAO,CAACC,QAAQ,CAAC,CAAC,CAAC,CAAA;EAChD,MAAMC,IAAI,GAAGJ,IAAI,CAACG,QAAQ,CAACE,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAAC,OAAO,CAAC,IAAIA,CAAC,CAAC,OAAO,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAA;AACnF;AACA;AACA;EACA,MAAMC,cAAc,GAAGH,IAAI,CAAC,OAAO,CAAC,CAAC,iBAAiB,CAAC,CAAA;AACvD,EAAA,OAAOG,cAAc,CAAA;AACvB,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,8BAA8B,GAAGA,CAACT,QAAQ,EAAEU,WAAW,EAAEC,MAAM,KAAK;EAC/E,MAAMC,GAAG,GAAG,EAAE,CAAA;AACd,EAAA,IAAID,MAAM,EAAE;AACV;IACA,KAAK,MAAME,IAAI,IAAIb,QAAQ,CAACc,QAAQ,CAACC,OAAO,EAAE;AAC5C,MAAA,IAAIL,WAAW,CAAC1B,QAAQ,CAAC6B,IAAI,CAACnF,EAAE,CAAC,EAAEkF,GAAG,CAACrE,IAAI,CAACsE,IAAI,CAAC,CAAA;AACnD,KAAA;AACF,GAAC,MAAM;AACL;AACA,IAAA,KAAK,MAAMnF,EAAE,IAAIgF,WAAW,EAAE;AAC5BE,MAAAA,GAAG,CAACrE,IAAI,CAACyD,QAAQ,CAACc,QAAQ,CAACC,OAAO,CAACT,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAAC7E,EAAE,KAAKA,EAAE,CAAC,CAAC,CAAA;AAC9D,KAAA;AACF,GAAA;AACA,EAAA,OAAOkF,GAAG,CAAA;AACZ,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMvF,KAAK,GAAGA,CAACmC,GAAG,EAAEwD,KAAK,KAAK;AACnC,EAAA,OAAO,CAACxD,GAAG,CAAC6B,KAAK,CAAC,CAAC,EAAE2B,KAAK,CAAC,EAAExD,GAAG,CAAC6B,KAAK,CAAC2B,KAAK,CAAC,CAAC,CAAA;AAChD,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,YAAY,GAAGA,CAACJ,IAAI,EAAEK,KAAK,KAAK;AAC3C,EAAA,MAAMC,UAAU,GAAGN,IAAI,CAACO,GAAG,CAACC,MAAM,CAAA;AAClC,EAAA,MAAMC,WAAW,GAAGJ,KAAK,CAACE,GAAG,CAACC,MAAM,CAAA;EACpC,IAAIF,UAAU,CAACjF,MAAM,KAAKoF,WAAW,CAACpF,MAAM,EAAE,OAAO,KAAK,CAAA;AAC1D,EAAA,KAAK,IAAIiC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGgD,UAAU,CAACjF,MAAM,EAAEiC,CAAC,EAAE,EAAE;AAC1C,IAAA,IAAIgD,UAAU,CAAChD,CAAC,CAAC,CAACoD,MAAM,KAAKD,WAAW,CAACnD,CAAC,CAAC,CAACoD,MAAM,EAAE,OAAO,KAAK,CAAA;AAClE,GAAA;AACA,EAAA,OAAO,IAAI,CAAA;AACb,CAAC;;AClMD;AACA;AACA;AACA;AACA;AACO,MAAMC,UAAU,GAAIC,IAAI,IAAK;AAClC,EAAA,MAAMC,KAAK,GAAGC,aAAa,CAACF,IAAI,CAAC,CAAA;AACjC;EACA,OAAOG,UAAU,CAACF,KAAK,CAAC,CAACtB,QAAQ,CAAC,CAAC,CAAC,CAAA;AACtC,CAAC;;ACZD;AACA;AACA;AACA;AACA;;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMyB,WAAW,GAAGA,CACzB7B,QAAQ,EACR8B,IAAI,EACJjH,OAAO,EACPkH,cAAc,EACdC,UAAU,EACVC,WAAW,EACXnE,OAAO,EACPhD,WAAW,EACX0F,cAAc,KACX;EACH,MAAM;IAAE0B,WAAW;AAAEC,IAAAA,aAAAA;AAAc,GAAC,GAAGrE,OAAO,CAAA;AAC9C,EAAA,MAAMsE,GAAG,GAAI,CAAA,EAAEL,cAAe,CAAA,CAAA,EAAGC,UAAW,CAAC,CAAA,CAAA;AAC7C,EAAA,MAAMK,CAAC,GAAGrC,QAAQ,CAACsC,sBAAsB,CACvC;AACEC,IAAAA,UAAU,EAAEH,GAAG;AACfI,IAAAA,aAAa,EAAE3H,OAAO;AACtB4H,IAAAA,UAAU,EACRX,IAAI,KAAK,SAAS,GACd;AAAEY,MAAAA,SAAS,EAAE,CAAC;AAAEZ,MAAAA,IAAI,EAAEhH,WAAW,GAAG,WAAW,GAAG,EAAA;AAAG,KAAC,GACtD;AAAE4H,MAAAA,SAAS,EAAEV,UAAU;AAAEF,MAAAA,IAAI,EAAEhH,WAAW,GAAG,WAAW,GAAG,EAAA;AAAG,KAAA;AACtE,GAAC,EACDmH,WAAW,CAAC/F,MAAM,GAAG,CAAC,GAAG+F,WAAW,GAAG,EAAE,EACzC,EACF,CAAC,CAAA;AACD;;EAEA,MAAMU,YAAY,GAAGN,CAAC,CAAC,CAAC,CAAC,CAAC/B,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAAC,CAAC,CAAC,KAAK6B,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;EACtD,MAAMQ,GAAG,GAAI,CAAA,UAAA,EAAY/H,OAAO,CAACgI,GAAG,CAAEtC,CAAC,IAAKA,CAAC,CAAC7E,EAAE,CAACiB,WAAW,EAAE,CAAC,CAACyB,IAAI,CAAC,IAAI,CAAE,CAAI4D,EAAAA,EAAAA,UAAW,CAAC,CAAA,CAAA;EAC3F,IAAIF,IAAI,KAAK,MAAM,EAAE;AACnB;IACA,OAAO,CACLa,YAAY,EACZnB,UAAU,CACP,CAAe,aAAA,EAAA,CAACU,WAAW,IAAA,IAAA,GAAXA,WAAW,GAAI,EAAE,EAAE9D,IAAI,CACtC,GACF,CAAE,CAAOwE,KAAAA,EAAAA,GAAI,CAA0BZ,wBAAAA,EAAAA,UAAW,CAAmBA,iBAAAA,EAAAA,UAAW,CAAwDA,sDAAAA,EAAAA,UAAW,CACrJ,iBAAA,CAAA,CAAC,CACF,CAAA;AACH,GAAC,MAAM,IAAIG,aAAa,IAAI3B,cAAc,KAAK,SAAS,EAAE;AACxD;IACA,IAAIrC,CAAC,GAAG,CAAC,CAAA;IACT,MAAM2E,MAAM,GAAGjI,OAAO,CAACgI,GAAG,CAAEE,CAAC,IAAKA,CAAC,CAACrH,EAAE,CAAC,CAAA;IACvC,MAAMsH,MAAM,GAAGL,YAAY,CAAC/G,OAAO,CAAC,MAAM,EAAE,UAAUqH,CAAC,EAAE;AACvD,MAAA,MAAMxF,GAAG,GAAI,CAAgBqF,cAAAA,EAAAA,MAAM,CAAC3E,CAAC,CAAC,CAACxB,WAAW,EAAG,CAAA,EAAA,EAAIsG,CAAE,CAAK,IAAA,CAAA,CAAA;AAChE9E,MAAAA,CAAC,EAAE,CAAA;AACH,MAAA,OAAOV,GAAG,CAAA;AACZ,KAAC,CAAC,CAAA;IAEF,OAAO,CACLkF,YAAY,EACZnB,UAAU,CAAE,CAAe,aAAA,EAAA,CAACU,WAAW,IAAA,IAAA,GAAXA,WAAW,GAAI,EAAE,EAAE9D,IAAI,CAAC,GAAG,CAAE,CAAA,KAAA,EAAOwE,GAAI,CAAGI,CAAAA,EAAAA,MAAO,CAAQ,OAAA,CAAA,CAAC,CACxF,CAAA;AACH,GAAC,MAAM,IAAIb,aAAa,IAAI3B,cAAc,KAAK,aAAa,EAAE;AAC5D;AACA,IAAA,IAAI3F,OAAO,CAACqB,MAAM,KAAK,CAAC,EAAE;AACxB;MACA,MAAM8G,MAAM,GAAGlI,WAAW,GACrB,CAAA,cAAA,EAAgBD,OAAO,CAAC,CAAC,CAAC,CAACa,EAAE,CAACiB,WAAW,EAAG,CAAA,EAAA,EAAIgG,YAAa,CAAA,IAAA,CAAK,GAClE,CAAA,EAAEA,YAAY,CAACtD,KAAK,CACnB,CAAC,EACD,CACF,CAAE,iBAAgBxE,OAAO,CAAC,CAAC,CAAC,CAACa,EAAE,CAACiB,WAAW,EAAG,CAAIgG,EAAAA,EAAAA,YAAY,CAACtD,KAAK,CAClE,CAAC,EACD,CAAC,CACH,CAAE,CAAMsD,IAAAA,EAAAA,YAAY,CAACtD,KAAK,CAAC,CAAC,CAAC,CAAE,CAAC,CAAA,CAAA;MACpC,OAAO,CACLsD,YAAY,EACZnB,UAAU,CAAE,CAAe,aAAA,EAAA,CAACU,WAAW,IAAA,IAAA,GAAXA,WAAW,GAAI,EAAE,EAAE9D,IAAI,CAAC,GAAG,CAAE,CAAA,KAAA,EAAOwE,GAAI,CAAGI,CAAAA,EAAAA,MAAO,CAAQ,OAAA,CAAA,CAAC,CACxF,CAAA;AACH,KAAC,MAAM;AACL;MACA,MAAMF,MAAM,GAAGjI,OAAO,CAACgI,GAAG,CAAEE,CAAC,IAAKA,CAAC,CAACrH,EAAE,CAAC,CAAA;AACvC,MAAA,MAAMwH,OAAO,GAAGzC,8BAA8B,CAACT,QAAQ,EAAE8C,MAAM,EAAE9C,QAAQ,CAACmD,GAAG,CAACC,cAAc,CAAC,CAAA;MAC7F,MAAMJ,MAAM,GAAG,EAAE,CAAA;MACjB,IAAIxF,GAAG,GAAGmF,YAAY,CAAA;AAEtB,MAAA,KAAK,MAAM,CAACxE,CAAC,EAAE0C,IAAI,CAAC,IAAIqC,OAAO,CAACrI,OAAO,EAAE,EAAE;AACzC;AACA,QAAA,MAAMa,EAAE,GAAGmF,IAAI,CAACnF,EAAE,CAAA;AAClB,QAAA,IAAI2H,SAAS,GAAGxC,IAAI,CAACyC,KAAK,CAAA;AAC1B;QACA,IAAInF,CAAC,GAAG,CAAC,IAAI8C,YAAY,CAACiC,OAAO,CAAC/E,CAAC,GAAG,CAAC,CAAC,EAAE0C,IAAI,CAAC,IAAIrD,GAAG,CAAC+F,OAAO,CAACF,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE;AAChF;UACAA,SAAS,GAAGxC,IAAI,CAACO,GAAG,CAACoC,MAAM,CAACC,IAAI,CAACrE,QAAQ,EAAE,CAAA;AAC7C,SAAA;AACA,QAAA,MAAMsE,QAAQ,GAAGlG,GAAG,CAAC+F,OAAO,CAACF,SAAS,CAAC,CAAA;QACvC,MAAM,CAACM,KAAK,EAAEC,IAAI,CAAC,GAAGvI,KAAK,CAACmC,GAAG,EAAEkG,QAAQ,CAAC,CAAA;AAC1CV,QAAAA,MAAM,CAACzG,IAAI,CAACoH,KAAK,CAAC,CAAC;AACnB,QAAA,MAAMlG,GAAG,GAAI,CAAA,cAAA,EAAgB/B,EAAE,CAACiB,WAAW,EAAG,CAAA,EAAA,EAAIiH,IAAI,CAAC3H,SAAS,CAAC,CAAC,EAAEoH,SAAS,CAACnH,MAAM,CAAE,CAAK,IAAA,CAAA,CAAA;AAC3F8G,QAAAA,MAAM,CAACzG,IAAI,CAACkB,GAAG,CAAC,CAAA;QAChBD,GAAG,GAAGoG,IAAI,CAAC/G,MAAM,CAACwG,SAAS,CAACnH,MAAM,CAAC,CAAA;AACrC,OAAA;AACA8G,MAAAA,MAAM,CAACzG,IAAI,CAACiB,GAAG,CAAC,CAAA;AAChB,MAAA,OAAO,CACLmF,YAAY,EACZnB,UAAU,CACP,CAAA,aAAA,EAAe,CAACU,WAAW,IAAXA,IAAAA,GAAAA,WAAW,GAAI,EAAE,EAAE9D,IAAI,CAAC,GAAG,CAAE,CAAA,KAAA,EAAOwE,GAAI,CAAA,CAAA,EAAGI,MAAM,CAAC5E,IAAI,CAAC,EAAE,CAAE,CAC9E,OAAA,CAAA,CAAC,CACF,CAAA;AACH,KAAA;AACF,GAAC,MAAM;IACL,OAAO,CACLuE,YAAY,EACZnB,UAAU,CAAE,CAAe,aAAA,EAAA,CAACU,WAAW,IAAA,IAAA,GAAXA,WAAW,GAAI,EAAE,EAAE9D,IAAI,CAAC,GAAG,CAAE,CAAA,KAAA,EAAOwE,GAAI,CAAGD,CAAAA,EAAAA,YAAa,CAAQ,OAAA,CAAA,CAAC,CAC9F,CAAA;AACH,GAAA;AACF,CAAC;;ACjID;AACA;AACA;AACA;AACA;AACO,MAAMkB,aAAa,GAAI7D,QAAQ,IAAK;EACzC,MAAM,CAAC8D,MAAM,EAAEC,OAAO,CAAC,GAAG/D,QAAQ,CAACgE,gBAAgB,EAAE,CAAA;EACrD,MAAM/F,YAAY,GAChB,mDAAmD,GAAG8F,OAAO,CAAC3F,IAAI,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAA;AACnF,EAAA,MAAM6F,UAAU,GAAGzC,UAAU,CAACvD,YAAY,CAAC,CAAA;;AAE3C;AACAgG,EAAAA,UAAU,CAAC7D,QAAQ,CAChB8D,MAAM,CAAE7D,IAAI,IAAA;AAAA,IAAA,IAAA8D,gBAAA,CAAA;AAAA,IAAA,OAAA,CAAAA,gBAAA,GAAK9D,IAAI,CAACoC,UAAU,cAAA0B,gBAAA,GAAfA,gBAAA,CAAiBC,SAAS,KAA1BD,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,gBAAA,CAA4BnF,QAAQ,CAAC,WAAW,CAAC,CAAA;AAAA,GAAA,CAAC,CACnEqF,OAAO,CAAC,CAAChE,IAAI,EAAElC,CAAC,KAAK;AACpB,IAAA,MAAM7E,OAAO,GAAGwK,MAAM,CAACQ,SAAS,CAACnG,CAAC,CAAC,CAAC,CAAC,CAAC,CAACxB,WAAW,EAAE,CAAA;IACpD0D,IAAI,CAACoC,UAAU,GAAGpC,IAAI,CAACoC,UAAU,IAAI,EAAE,CAAA;AACvCpC,IAAAA,IAAI,CAACoC,UAAU,CAAC/G,EAAE,GAAG,MAAM,GAAGpC,OAAO,CAAA;AACvC,GAAC,CAAC,CAAA;AACJ,EAAA,OAAO2K,UAAU,CAAA;AACnB,CAAC;;ACtBD;AACA;AACA;AACA;;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMM,kBAAkB,GAAGA,CAACC,YAAY,EAAEC,aAAa,EAAEC,eAAe,KAAK;AAClF;AACA,EAAA,MAAMC,IAAI,GAAG;AACXC,IAAAA,IAAI,EAAE,SAAS;AACfC,IAAAA,OAAO,EAAE,IAAI;IACbpC,UAAU,EAAE,EAAE;AACdrC,IAAAA,QAAQ,EAAE,CAAC;AAAEwE,MAAAA,IAAI,EAAE,MAAM;AAAEE,MAAAA,KAAK,EAAE,IAAA;KAAM,CAAA;GACzC,CAAA;AACD,EAAA,IAAIC,eAAe,CAAA;AACnB,EAAA,IAAIL,eAAe,EAAE;;IAEnBK,eAAe,GAAGL,eAAe,CAACtE,QAAQ,CAAC8D,MAAM,CAACc,CAAC,IAAKA,CAAC,CAACJ,IAAI,IAAI,SAAU,CAAC,CAACtE,IAAI,CAAE0E,CAAC,IAAMA,CAAC,CAACH,OAAO,KAAK,IAAK,CAAC,CAAA;AACjH,GAAA;AACA,EAAA,KAAK,MAAM,CAACI,GAAG,EAAEpE,IAAI,CAAC,IAAI4D,aAAa,CAAC5J,OAAO,EAAE,EAAE;IACjD,MAAM;MAAE+J,IAAI;AAAEM,MAAAA,KAAAA;AAAM,KAAC,GAAGrE,IAAI,CAAA;IAC5B,IAAI+D,IAAI,KAAK,UAAU,EAAE;AACvBD,MAAAA,IAAI,CAACvE,QAAQ,CAAC7D,IAAI,CAAC;AACjBqI,QAAAA,IAAI,EAAE,SAAS;AACfC,QAAAA,OAAO,EAAE,IAAI;AACbpC,QAAAA,UAAU,EAAE;AAAE/G,UAAAA,EAAE,EAAG,CAAA,gBAAA,EAAkBuJ,GAAG,GAAG,CAAE,CAAA,CAAA;SAAG;AAChD7E,QAAAA,QAAQ,EAAE,CACR;AACEwE,UAAAA,IAAI,EAAE,SAAS;AACfC,UAAAA,OAAO,EAAE,GAAG;UACZpC,UAAU,EAAE,EAAE;UACdrC,QAAQ,EAAE,CACRoB,UAAU,CAAE,CAAA,MAAA,EAAQgD,YAAY,CAACU,KAAK,CAAE,CAAQ,OAAA,CAAA,CAAC,EACjD;AACEN,YAAAA,IAAI,EAAE,SAAS;AACfC,YAAAA,OAAO,EAAE,GAAG;AACZpC,YAAAA,UAAU,EAAE;AACV0C,cAAAA,IAAI,EAAG,CAAA,oBAAA,EAAsBF,GAAG,GAAG,CAAE,CAAC,CAAA;AACtCG,cAAAA,mBAAmB,EAAE,IAAI;cACzBhB,SAAS,EAAE,CAAC,uBAAuB,CAAC;AACpCiB,cAAAA,SAAS,EAAE,iBAAA;aACZ;AACDjF,YAAAA,QAAQ,EAAE,CAAC;AAAEwE,cAAAA,IAAI,EAAE,MAAM;AAAEE,cAAAA,KAAK,EAAE,GAAA;aAAK,CAAA;WACxC,CAAA;AAEL,SAAC,EACD;AAAEF,UAAAA,IAAI,EAAE,MAAM;AAAEE,UAAAA,KAAK,EAAE,IAAA;SAAM,CAAA;AAEjC,OAAC,CAAC,CAAA;AACJ,KAAC,MAAM,IAAIF,IAAI,KAAK,UAAU,EAAE;AAC9B;MACA,MAAMU,MAAM,GAAGP,eAAe,CAAC3E,QAAQ,CAACE,IAAI,CACzC0E,CAAC,IAAKA,CAAC,CAACH,OAAO,KAAK,IAAI,IAAIG,CAAC,CAACvC,UAAU,CAAC/G,EAAE,KAAM,CAAA,gBAAA,EAAkBwJ,KAAM,CAAA,CAC5E,CAAC,CAAA;MACDI,MAAM,CAAC7C,UAAU,CAAC/G,EAAE,GAAI,CAAkBuJ,gBAAAA,EAAAA,GAAG,GAAG,CAAE,CAAC,CAAA,CAAA;MACnD,MAAMM,KAAK,GAAGD,MAAM,CAAClF,QAAQ,CAAC,CAAC,CAAC,CAACA,QAAQ,CAACE,IAAI,CAAE0E,CAAC,IAAKA,CAAC,CAACH,OAAO,KAAK,GAAG,CAAC,CAAA;MACxEU,KAAK,CAAC9C,UAAU,CAAC0C,IAAI,GAAI,CAAsBF,oBAAAA,EAAAA,GAAG,GAAG,CAAE,CAAC,CAAA,CAAA;AACxDN,MAAAA,IAAI,CAACvE,QAAQ,CAAC7D,IAAI,CAAC+I,MAAM,CAAC,CAAA;AAC5B,KAAA;AACF,GAAA;;AAEA;AACA,EAAA,MAAME,kBAAkB,GAAG;AACzBZ,IAAAA,IAAI,EAAE,SAAS;AACfC,IAAAA,OAAO,EAAE,SAAS;AAClBpC,IAAAA,UAAU,EAAE;AAAEgD,MAAAA,aAAa,EAAE,IAAI;MAAErB,SAAS,EAAE,CAAC,WAAW,CAAA;KAAG;AAC7DhE,IAAAA,QAAQ,EAAE,CACR;AACEwE,MAAAA,IAAI,EAAE,SAAS;AACfC,MAAAA,OAAO,EAAE,IAAI;AACbpC,MAAAA,UAAU,EAAE;QAAE2B,SAAS,EAAE,CAAC,SAAS,CAAC;AAAE1I,QAAAA,EAAE,EAAE,gBAAA;OAAkB;AAC5D0E,MAAAA,QAAQ,EAAE,CAAC;AAAEwE,QAAAA,IAAI,EAAE,MAAM;AAAEE,QAAAA,KAAK,EAAE,WAAA;OAAa,CAAA;AACjD,KAAC,EACD;AAAEF,MAAAA,IAAI,EAAE,MAAM;AAAEE,MAAAA,KAAK,EAAE,IAAA;AAAK,KAAC,EAC7BH,IAAI,CAAA;GAEP,CAAA;AACD,EAAA,OAAOa,kBAAkB,CAAA;AAC3B,CAAC;;AC3DD,MAAME,iBAAiB,GAAG,KAAK,CAAA;AAC/B,MAAMC,aAAa,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAC5D,MAAMC,MAAM,GAAG,UAAU,CAAA;;AAEzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACMC,MAAAA,uBAAuB,GAAItH,IAAI,IAAK;AACxC,EAAA,OAAO,CAACT,OAAO,GAAG,EAAE,KAAK;AACvB,IAAA,OAAO,OAAOgI,IAAI,EAAE/H,IAAI,KAAK;MAAA,IAAAC,UAAA,EAAA+H,qBAAA,CAAA;AAC3B;MACA,IAAIC,UAAU,GAAG,EAAE,CAAA;;MAEnB,MAAMC,eAAe,GAAGnI,OAAO,CAACoI,GAAG,KAAInI,IAAI,IAAA,IAAA,IAAA,CAAAC,UAAA,GAAJD,IAAI,CAAEV,IAAI,KAAAW,IAAAA,IAAAA,CAAAA,UAAA,GAAVA,UAAA,CAAYE,WAAW,qBAAvBF,UAAA,CAAyBkI,GAAG,CAAA,IAAIR,iBAAiB,CAAA;AACxF,MAAA,MAAMS,SAAS,GAAGrI,OAAO,CAACsI,IAAI,IAAI,OAAO,CAAA;MACzC,MAAM1H,MAAM,GAAGH,IAAI,CAACI,OAAO,CAACD,MAAM,CAACE,GAAG,CAAC,MAAM,CAAC,CAAA;AAC9C,MAAA,MAAMyH,UAAU,GAAG,MAAM/H,OAAO,CAACC,IAAI,EAAE0H,eAAe,EAAEnI,OAAO,CAACf,IAAI,CAAC,CAAA;AACrE,MAAA,MAAMqJ,IAAI,GAAG,MAAM1G,UAAU,CAACnB,IAAI,EAAE4H,SAAS,EAAErI,OAAO,CAACf,IAAI,CAAC,CAAA;MAE5D,IAAIkB,YAAY,GAAG,MAAMJ,eAAe,CAACC,OAAO,EAAEC,IAAI,CAAC,CAAA;AACvD,MAAA,IAAIE,YAAY,CAAC/B,MAAM,KAAK,CAAC,EAAE;AAC7B,QAAA,OAAA;AACF,OAAA;AAEA,MAAA,KAAK,IAAIiC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,YAAY,CAAC/B,MAAM,EAAEiC,CAAC,EAAE,EAAE;AAC5C,QAAA,IAAInB,cAAc,CAACiB,YAAY,CAACE,CAAC,CAAC,CAAC,EAAE;UACnC,MAAMhB,QAAQ,GAAG,MAAMF,OAAK,CAACgB,YAAY,CAACE,CAAC,CAAC,CAAC,CAAA;UAC7C6H,UAAU,CAACzJ,IAAI,CAAC,MAAMY,QAAQ,CAACC,IAAI,EAAE,CAAC,CAAA;AACxC,SAAC,MAAM;AACL,UAAY;YACV4I,UAAU,CAACzJ,IAAI,CAAC,MAAMO,QAAQ,CAACmB,YAAY,CAACE,CAAC,CAAC,CAAC,CAAC,CAAA;AAClD,WAEA;AACF,SAAA;AACF,OAAA;AACA,MAAA,MAAMmI,SAAS,GAAG,IAAI/H,IAAI,CAACyH,UAAU,CAAC,CAAA;AACtC,MAAA,MAAMO,WAAW,GAAGD,SAAS,CAACjJ,IAAI,CAACwF,GAAG,CAAEtC,CAAC,IAAKA,CAAC,CAAC7E,EAAE,CAAC,CAAA;MACnD,MAAMuG,WAAW,GAAG,EAAE,CAAA;MACtB,MAAMuC,YAAY,GAAG,EAAE,CAAA;MACvB,IAAIxC,UAAU,GAAG,CAAC,CAAA;AAClB,MAAA,MAAMhC,QAAQ,GAAGtB,MAAM,CAAC8H,MAAM,CAACF,SAAS,CAACjJ,IAAI,EAAEgJ,UAAU,EAAED,IAAI,EAAE,MAAM,CAAC,CAAA;AACxE;AACA,MAAA,MAAMtE,IAAI,GAAG9B,QAAQ,CAACmD,GAAG,CAACsD,MAAM,CAAA;AAChC,MAAA,MAAMjG,cAAc,GAAGT,iBAAiB,CAACC,QAAQ,CAAC,CAAA;MAElD0G,KAAK,CAACZ,IAAI,EAAE,MAAM,EAAE,CAACzF,IAAI,EAAE4E,GAAG,EAAE0B,MAAM,KAAK;QACzC,MAAMrL,KAAK,GAAG+E,IAAI,CAACyE,KAAK,CAACxJ,KAAK,CAACpC,UAAU,CAAC,CAAA;AAC1C,QAAA,IAAI,CAACoC,KAAK,IAAK,SAAS,IAAIqL,MAAM,IAAI,CAAChB,aAAa,CAAC3G,QAAQ,CAAC2H,MAAM,CAAC9B,OAAO,CAAE,EAAE,OAAA;AAChF,QAAA,IAAI+B,YAAY,GAAGtL,KAAK,CAAC0F,KAAK,CAAA;QAC9B,IAAI6F,UAAU,GAAGvL,KAAK,CAAC0F,KAAK,GAAG1F,KAAK,CAAC,CAAC,CAAC,CAACY,MAAM,CAAA;AAC9C;AACA;AACA;AACA,QAAA,IAAIZ,KAAK,CAAC,CAAC,CAAC,KAAKH,SAAS,EAAE;AAC1ByL,UAAAA,YAAY,EAAE,CAAA;AAChB,SAAA;QACA,MAAME,WAAW,GAAG,EAAE,CAAA;AACtB;QACA,IAAIF,YAAY,KAAK,CAAC,EAAE;AACtB;UACAE,WAAW,CAACvK,IAAI,CAAC;AACfqI,YAAAA,IAAI,EAAE,MAAM;YACZE,KAAK,EAAEzE,IAAI,CAACyE,KAAK,CAACzF,KAAK,CAAC,CAAC,EAAEuH,YAAY,CAAA;AACzC,WAAC,CAAC,CAAA;AACJ,SAAA;QAEA,MAAM,CAAC/L,OAAO,EAAEC,WAAW,CAAC,GAAGH,aAAa,CAACW,KAAK,CAAC,CAAA;;AAEnD;AACA,QAAA,KAAK,MAAMyL,QAAQ,IAAIlM,OAAO,EAAE;UAC9B,IAAI,CAAC0L,WAAW,CAACvH,QAAQ,CAAC+H,QAAQ,CAACrL,EAAE,CAAC,EAAE,OAAA;AAC1C,SAAA;QACA,MAAM,CAACsL,SAAS,EAAEC,aAAa,CAAC,GAAGpF,WAAW,CAC5C7B,QAAQ,EACR8B,IAAI,EACJjH,OAAO,EACP+K,MAAM,EACN5D,UAAU,EACVC,WAAW,EACXnE,OAAO,EACPhD,WAAW,EACX0F,cACF,CAAC,CAAA;AACDgE,QAAAA,YAAY,CAACxC,UAAU,CAAC,GAAGgF,SAAS,CAAA;;AAEpC;AACA/E,QAAAA,WAAW,CAAC1F,IAAI,CAAC,CAAE,CAAEqJ,EAAAA,MAAO,CAAG5D,CAAAA,EAAAA,UAAW,CAAC,CAAA,EAAE,CAAC,CAAC,CAAC,CAAA;QAChDA,UAAU,GAAGA,UAAU,GAAG,CAAC,CAAA;AAE3B8E,QAAAA,WAAW,CAACvK,IAAI,CAAC0K,aAAa,CAAC,CAAA;;AAE/B;AACA,QAAA,IAAIJ,UAAU,GAAGxG,IAAI,CAACyE,KAAK,CAAC5I,MAAM,EAAE;UAClC4K,WAAW,CAACvK,IAAI,CAAC;AACfqI,YAAAA,IAAI,EAAE,MAAM;AACZE,YAAAA,KAAK,EAAEzE,IAAI,CAACyE,KAAK,CAACzF,KAAK,CAACwH,UAAU,CAAA;AACpC,WAAC,CAAC,CAAA;AACJ,SAAA;;AAEA;AACA;AACAF,QAAAA,MAAM,CAACvG,QAAQ,GAAG,CAChB,GAAGuG,MAAM,CAACvG,QAAQ,CAACf,KAAK,CAAC,CAAC,EAAE4F,GAAG,CAAC,EAChC,GAAG6B,WAAW,EACd,GAAGH,MAAM,CAACvG,QAAQ,CAACf,KAAK,CAAC4F,GAAG,GAAG,CAAC,CAAC,CAClC,CAAA;AACH,OAAC,CAAC,CAAA;MAEF,IAAInH,OAAO,CAACoJ,MAAM,EAAE;QAClBlH,QAAQ,CAACmH,WAAW,CAACrJ,OAAO,CAACoJ,MAAM,CAACrE,GAAG,CAAEtC,CAAC,IAAKA,CAAC,CAAC3E,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAA;AACrE,OAAA;AAEA,MAAA,IACEoE,QAAQ,CAACc,QAAQ,CAACsG,MAAM,CAAClL,MAAM,IAAI,CAAC,KACnC,CAAC4B,OAAO,CAACuJ,oBAAoB,IAAI,CAAA,CAAAtB,qBAAA,GAAAjI,OAAO,CAACwJ,cAAc,KAAA,IAAA,GAAA,KAAA,CAAA,GAAtBvB,qBAAA,CAAwB7J,MAAM,IAAG,CAAC,CAAC,EACrE;AACA,QAAA,MAAM+H,UAAU,GAAGJ,aAAa,CAAC7D,QAAQ,CAAC,CAAA;QAC1C,IAAIuH,aAAa,GAAG,KAAK,CAAA;QAEzB,MAAMC,SAAS,GAAG,EAAE,CAAA;AACpBvD,QAAAA,UAAU,CAAC7D,QAAQ,CAChB8D,MAAM,CAAE7D,IAAI,IAAA;AAAA,UAAA,IAAA8D,gBAAA,CAAA;AAAA,UAAA,OAAA,CAAAA,gBAAA,GAAK9D,IAAI,CAACoC,UAAU,cAAA0B,gBAAA,GAAfA,gBAAA,CAAiBC,SAAS,KAA1BD,IAAAA,GAAAA,KAAAA,CAAAA,GAAAA,gBAAA,CAA4BnF,QAAQ,CAAC,WAAW,CAAC,CAAA;AAAA,SAAA,CAAC,CACnEqF,OAAO,CAAEhE,IAAI,IAAK;UACjB,MAAM/G,OAAO,GAAG+G,IAAI,CAACoC,UAAU,CAAC/G,EAAE,CAACL,KAAK,CAAC,GAAG,CAAC,CAACgE,KAAK,CAAC,CAAC,CAAC,CAACjB,IAAI,CAAC,GAAG,CAAC,CAAA;AAChEoJ,UAAAA,SAAS,CAAClO,OAAO,CAAC,GAAAkD,QAAA,CAAA,EAAA,EAAQ6D,IAAI,CAAE,CAAA;AAChCmH,UAAAA,SAAS,CAAClO,OAAO,CAAC,CAACmJ,UAAU,GAAG;YAAE/G,EAAE,EAAE,YAAY,GAAGpC,OAAAA;WAAS,CAAA;AAChE,SAAC,CAAC,CAAA;;AAEJ;QACAoN,KAAK,CAACZ,IAAI,EAAE,SAAS,EAAE,CAACzF,IAAI,EAAE4E,GAAG,EAAE0B,MAAM,KAAK;UAAA,IAAAc,sBAAA,EAAAC,iBAAA,CAAA;AAC5C;AACA,UAAA,IACE,CAAAD,CAAAA,sBAAA,GAAA3J,OAAO,CAACwJ,cAAc,KAAA,IAAA,GAAA,KAAA,CAAA,GAAtBG,sBAAA,CAAwBvL,MAAM,IAAG,CAAC,IAAAwL,CAAAA,iBAAA,GAClCrH,IAAI,CAACoC,UAAU,KAAA,IAAA,IAAA,CAAAiF,iBAAA,GAAfA,iBAAA,CAAiBhM,EAAE,aAAnBgM,iBAAA,CAAqBtI,QAAQ,EAAE,CAACxC,UAAU,CAAC,WAAW,CAAC,EACvD;AACA;AACA,YAAA,MAAM,GAAG,GAAG+K,QAAQ,CAAC,GAAGtH,IAAI,CAACoC,UAAU,CAAC/G,EAAE,CAAC0D,QAAQ,EAAE,CAAC/D,KAAK,CAAC,IAAI,CAAC,CAAA;AACjE,YAAA,MAAMkH,UAAU,GAAGoF,QAAQ,CAACC,GAAG,EAAE,CAAA;;AAEjC;AACA,YAAA,MAAMC,aAAa,GAAG;AACpBjD,cAAAA,IAAI,EAAE,SAAS;AACfC,cAAAA,OAAO,EAAE,KAAK;AACdpC,cAAAA,UAAU,EAAE;gBACV2B,SAAS,EAAEtG,OAAO,CAACwJ,cAAc;gBACjC5L,EAAE,EAAG,cAAaiM,QAAQ,CAACvJ,IAAI,CAAC,IAAI,CAAE,CAAA,EAAA,EAAImE,UAAW,CAAA,CAAA;eACtD;AACDnC,cAAAA,QAAQ,EAAEuH,QAAQ,CAAC9E,GAAG,CAAEvJ,OAAO,IAAK;AAClC,gBAAA,MAAMwO,QAAQ,GAAGN,SAAS,CAAClO,OAAO,CAAC,CAAA;gBACnCwO,QAAQ,CAACrF,UAAU,GAAG;AACpBsF,kBAAAA,KAAK,EAAE,cAAc;AACrBrM,kBAAAA,EAAE,EAAG,CAAA,QAAA,EAAUpC,OAAQ,CAAA,EAAA,EAAIiJ,UAAW,CAAA,CAAA;iBACvC,CAAA;AACD,gBAAA,OAAOuF,QAAQ,CAAA;eAChB,CAAA;aACF,CAAA;AACDnB,YAAAA,MAAM,CAACvG,QAAQ,CAAC7D,IAAI,CAACsL,aAAa,CAAC,CAAA;AACrC,WAAA;;AAEA;UACA,IACE,CAAC/J,OAAO,CAACuJ,oBAAoB,KAC5BhH,IAAI,CAACwE,OAAO,KAAK,GAAG,IAAIxE,IAAI,CAACwE,OAAO,KAAK,KAAK,CAAC,IAChDxE,IAAI,CAACD,QAAQ,CAAClE,MAAM,IAAI,CAAC,IACzBmE,IAAI,CAACD,QAAQ,CAAC,CAAC,CAAC,CAACwE,IAAI,KAAK,MAAM,IAChCvE,IAAI,CAACD,QAAQ,CAAC,CAAC,CAAC,CAAC0E,KAAK,KAAK,QAAQ,EACnC;AACA6B,YAAAA,MAAM,CAACvG,QAAQ,CAAC6E,GAAG,CAAC,GAAGhB,UAAU,CAAA;AACjCsD,YAAAA,aAAa,GAAG,IAAI,CAAA;AACtB,WAAA;AACF,SAAC,CAAC,CAAA;AAEF,QAAA,IAAI,CAACzJ,OAAO,CAACuJ,oBAAoB,IAAI,CAACE,aAAa,EAAE;AACnDzB,UAAAA,IAAI,CAAC1F,QAAQ,CAAC7D,IAAI,CAAC0H,UAAU,CAAC,CAAA;AAChC,SAAA;AACF,OAAA;AAEA,MAAA,IAAIS,eAAe,CAAA;MACnBgC,KAAK,CAACZ,IAAI,EAAE,SAAS,EAAE,CAACzF,IAAI,EAAEW,KAAK,EAAE2F,MAAM,KAAK;QAC9C,IAAItG,IAAI,CAACwE,OAAO,KAAK,SAAS,IAAIxE,IAAI,CAACoC,UAAU,CAACgD,aAAa,EAAE;AAC/Df,UAAAA,eAAe,GAAGrE,IAAI,CAAA;UACtBsG,MAAM,CAACvG,QAAQ,CAAC4H,MAAM,CAAChH,KAAK,EAAE,CAAC,CAAC,CAAA;AAClC,SAAA;AACF,OAAC,CAAC,CAAA;;AAEF;AACA;AACA;AACA,MAAA,IAAIc,IAAI,KAAK,MAAM,IAAIjD,MAAM,CAACC,IAAI,CAAC0F,YAAY,CAAC,CAACtI,MAAM,GAAG,CAAC,EAAE;AAC3D;QACA,IAAI+L,OAAO,GAAG,EAAE,CAAA;QAChB,IAAIjH,KAAK,GAAG,CAAC,CAAA;AACb0F,QAAAA,KAAK,CAACZ,IAAI,EAAE,SAAS,EAAGzF,IAAI,IAAK;AAC/B,UAAA,IAAIA,IAAI,CAACwE,OAAO,KAAK,KAAK,IAAIxE,IAAI,CAACD,QAAQ,CAAC,CAAC,CAAC,CAACwE,IAAI,KAAK,SAAS,EAAE;AACjE,YAAA,IAAIsD,QAAQ,GAAG7H,IAAI,CAACD,QAAQ,CAAC,CAAC,CAAC,CAAA;AAC/B,YAAA,IAAI8H,QAAQ,CAACrD,OAAO,KAAK,GAAG,EAAE;;cAE5B,MAAM;gBAAEM,IAAI;AAAEzJ,gBAAAA,EAAAA;eAAI,GAAGwM,QAAQ,CAACzF,UAAU,CAAA;AACxC,cAAA,IAAI0C,IAAI,CAACnG,QAAQ,CAAC,IAAI,CAAC,IAAItD,EAAE,CAACsD,QAAQ,CAAC,OAAO,CAAC,EAAE;gBAC/C,MAAMkG,KAAK,GAAGC,IAAI,CAAC9J,KAAK,CAAC,GAAG,CAAC,CAACuM,GAAG,EAAE,CAAA;gBACnCK,OAAO,CAAC1L,IAAI,CAAC;kBACXqI,IAAI,EAAEO,IAAI,CAACnG,QAAQ,CAAC,MAAM,CAAC,GAAG,UAAU,GAAG,UAAU;AACrDkG,kBAAAA,KAAAA;AACF,iBAAC,CAAC,CAAA;AACF;AACAgD,gBAAAA,QAAQ,CAACzF,UAAU,CAAC0C,IAAI,GAAI,CAAA,iBAAA,EAAmBnE,KAAM,CAAC,CAAA,CAAA;AACtDkH,gBAAAA,QAAQ,CAACzF,UAAU,CAAC/G,EAAE,GAAI,CAAA,mBAAA,EAAqBsF,KAAM,CAAC,CAAA,CAAA;AACtD;AACAkH,gBAAAA,QAAQ,CAAC9H,QAAQ,CAAC,CAAC,CAAC,CAAC0E,KAAK,GAAG9D,KAAK,CAAC5B,QAAQ,EAAE,CAAA;AAC7C4B,gBAAAA,KAAK,IAAI,CAAC,CAAA;AACZ,eAAA;AACF,aAAA;AACF,WAAA;AACF,SAAC,CAAC,CAAA;AACF;QACA,MAAMmH,kBAAkB,GAAG5D,kBAAkB,CAACC,YAAY,EAAEyD,OAAO,EAAEvD,eAAe,CAAC,CAAA;AACrFoB,QAAAA,IAAI,CAAC1F,QAAQ,CAAC7D,IAAI,CAAC4L,kBAAkB,CAAC,CAAA;AACxC,OAAC,MAAM;QACL,IAAIzD,eAAe,EAAEoB,IAAI,CAAC1F,QAAQ,CAAC7D,IAAI,CAACmI,eAAe,CAAC,CAAA;AAC1D,OAAA;KACD,CAAA;GACF,CAAA;AACH;;AClQA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS0D,cAAcA,GAAG;AACxB,EAAA,OAAO,IAAI,CAACC,GAAG,CAACnM,MAAM,CAAA;AACxB,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASoM,eAAeA,CAACC,OAAO,GAAG,CAAC,EAAE;EACpC,IAAIA,OAAO,IAAI,CAAC,IAAIA,OAAO,GAAG,IAAI,CAACH,cAAc,EAAE,EAAE;AACnD,IAAA,OAAO,IAAI,CAAA;AACb,GAAC,MAAM;AACL,IAAA,MAAM,CAAC/K,IAAI,EAAES,OAAO,CAAC,GAAG,IAAI,CAACuK,GAAG,CAACE,OAAO,GAAG,CAAC,CAAC,CAAA;IAC7C,MAAMC,KAAK,GAAG,IAAI,IAAI,CAACC,WAAW,CAACC,IAAI,CAACC,KAAK,CAACtL,IAAI,CAAC,EAAEqL,IAAI,CAACC,KAAK,CAAC7K,OAAO,CAAC,CAAC,CAAA;AACzE0K,IAAAA,KAAK,CAACH,GAAG,GAAG,IAAI,CAACA,GAAG,CAAChJ,KAAK,CAAC,CAAC,EAAEkJ,OAAO,CAAC,CAAA;AACtC,IAAA,OAAOC,KAAK,CAAA;AACd,GAAA;AACF,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASI,IAAIA,CAACC,MAAM,GAAG,CAAC,EAAE;EACxB,OAAO,IAAI,CAACP,eAAe,CAAC,IAAI,CAACF,cAAc,EAAE,GAAGS,MAAM,CAAC,CAAA;AAC7D,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,mBAAmBA,GAAG;EAC7B,OAAO,IAAI,CAACR,eAAe,CAAC,IAAI,CAACF,cAAc,EAAE,CAAC,CAAA;AACpD,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASW,IAAIA,GAAG;EACd,IAAI,CAACV,GAAG,CAAC9L,IAAI,CAAC,CAACmM,IAAI,CAACM,SAAS,CAAC,IAAI,CAAC3L,IAAI,CAAC,EAAEqL,IAAI,CAACM,SAAS,CAAC,IAAI,CAACC,QAAQ,CAAC,CAAC,CAAC,CAAA;AAEzE,EAAA,OAAO,IAAI,CAAA;AACb;;;;;;;;;;;ACjEA;AACA,MAAMC,SAAO,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;AAClC,MAAMC,OAAK,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAA;AAC/C,MAAMC,MAAM,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;AACzE,MAAMC,YAAY,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAA;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,qBAAqBA,CAACxL,OAAO,EAAE;AAC7C,EAAA,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE;AAC/B,IAAA,MAAM,IAAIyL,SAAS,CAAC,wBAAwB,CAAC,CAAA;AAC/C,GAAA;EAEA,MAAM;IAAE/K,MAAM;IAAEoG,IAAI;IAAE4E,KAAK;IAAEpD,IAAI;IAAEqD,MAAM;AAAEC,IAAAA,OAAAA;AAAQ,GAAC,GAAG5L,OAAO,CAAA;EAE9D,IAAIU,MAAM,IAAI,CAAC0K,SAAO,CAAClK,QAAQ,CAACR,MAAM,CAAC,EAAE;IACvC,MAAM,IAAI+K,SAAS,CAAE,CAAA,gBAAA,EAAkB/K,MAAO,CAAuB0K,qBAAAA,EAAAA,SAAQ,EAAC,CAAC,CAAA;GAChF,MAAM,IAAItE,IAAI,IAAI,CAACuE,OAAK,CAACnK,QAAQ,CAAC4F,IAAI,CAAC,EAAE;IACxC,MAAM,IAAI2E,SAAS,CAAE,CAAA,cAAA,EAAgB3E,IAAK,CAAuBuE,qBAAAA,EAAAA,OAAM,EAAC,CAAC,CAAA;AAC3E,GAAC,MAAM,IAAIK,KAAK,IAAI,CAACJ,MAAM,CAACpK,QAAQ,CAACwK,KAAK,CAAC,IAAI,CAAC,WAAW,CAACG,IAAI,CAACH,KAAK,CAAC,EAAE;IACvE,MAAM,IAAID,SAAS,CAAE,CAAA,eAAA,EAAiBC,KAAM,CAAuBJ,qBAAAA,EAAAA,MAAO,EAAC,CAAC,CAAA;GAC7E,MAAM,IAAIhD,IAAI,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;AAC3C,IAAA,MAAM,IAAImD,SAAS,CAAE,4CAA2C,OAAOnD,IAAK,EAAC,CAAC,CAAA;AAChF,GAAC,MAAM,IAAIsD,OAAO,IAAI,CAACL,YAAY,CAACrK,QAAQ,CAAC,OAAO0K,OAAO,CAAC,EAAE;AAC5D,IAAA,MAAM,IAAIH,SAAS,CAChB,6DAA4D,OAAOG,OAAQ,EAC9E,CAAC,CAAA;AACH,GAAC,MAAM,IAAID,MAAM,IAAI,CAACJ,YAAY,CAACrK,QAAQ,CAAC,OAAOyK,MAAM,CAAC,EAAE;AAC1D,IAAA,MAAM,IAAIF,SAAS,CAAE,4DAA2D,OAAOE,MAAO,EAAC,CAAC,CAAA;AAClG,GAAA;EAEA,IAAI,WAAW,CAACE,IAAI,CAACH,KAAK,CAAC,IAAI5E,IAAI,KAAK,MAAM,EAAE;IAC9C,MAAM,IAAInF,KAAK,CAAE,CAAA,wDAAA,EAA0DmF,IAAK,CAAG4E,CAAAA,EAAAA,KAAM,EAAC,CAAC,CAAA;AAC7F,GAAA;AAEA,EAAA,OAAO,IAAI,CAAA;AACb,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASI,eAAeA,CAAC9L,OAAO,EAAE;AACvC,EAAA,IAAI,OAAOA,OAAO,KAAK,QAAQ,EAAE;AAC/B,IAAA,MAAM,IAAIyL,SAAS,CAAC,6BAA6B,CAAC,CAAA;AACpD,GAAA;;AAEA;EACA,IAAIzL,OAAO,CAACkF,MAAM,EAAE;AAClBsG,IAAAA,qBAAqB,CAACxL,OAAO,CAACkF,MAAM,CAAC,CAAA;AACvC,GAAC,MAAM,IAAIlF,OAAO,CAAC+L,cAAc,IAAI,OAAO/L,OAAO,CAAC+L,cAAc,KAAK,QAAQ,EAAE;AAC/E,IAAA,MAAM,IAAIN,SAAS,CAAC,0CAA0C,CAAC,CAAA;AACjE,GAAC,MAAM,IAAIzL,OAAO,CAACgM,SAAS,IAAI,OAAOhM,OAAO,CAACgM,SAAS,KAAK,QAAQ,EAAE;AACrE,IAAA,MAAM,IAAIP,SAAS,CAAC,qCAAqC,CAAC,CAAA;AAC5D,GAAC,MAAM,IAAIzL,OAAO,CAACiM,aAAa,IAAI,IAAI,IAAI,OAAOjM,OAAO,CAACiM,aAAa,KAAK,SAAS,EAAE;AACtF,IAAA,MAAM,IAAIR,SAAS,CAAC,0CAA0C,CAAC,CAAA;AACjE,GAAC,MAAM,IAAIzL,OAAO,CAACkM,MAAM,IAAI,IAAI,IAAI,OAAOlM,OAAO,CAACkM,MAAM,KAAK,SAAS,EAAE;AACxE,IAAA,MAAM,IAAIT,SAAS,CAAC,mCAAmC,CAAC,CAAA;AAC1D,GAAC,MAAM,IAAIzL,OAAO,CAACmM,MAAM,IAAI,IAAI,IAAI,OAAOnM,OAAO,CAACmM,MAAM,KAAK,QAAQ,EAAE;AACvE,IAAA,MAAM,IAAIV,SAAS,CAAC,mCAAmC,CAAC,CAAA;AAC1D,GAAA;AAEA,EAAA,OAAO,IAAI,CAAA;AACb;;ACpFA;AACA;AACA;AACA;AACA;AACA,MAAMW,cAAc,GAAG;AAAE1L,EAAAA,MAAM,EAAE,MAAM;AAAEoG,EAAAA,IAAI,EAAE,MAAM;AAAE4E,EAAAA,KAAK,EAAE,KAAK;AAAEpD,EAAAA,IAAI,EAAE,OAAA;AAAQ,CAAC,CAAA;;AAEpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAStI,OAAOA,CAACA,OAAO,EAAEuK,GAAG,EAAE;EAC7B8B,qBAAQ,CAACrM,OAAO,CAAC,CAAA;AAEjB,EAAA,IAAIuK,GAAG,EAAE;IACP,IAAI,CAACU,IAAI,EAAE,CAAA;AACb,GAAA;EAEAlK,MAAM,CAACuL,MAAM,CAAC,IAAI,CAACnB,QAAQ,EAAEnL,OAAO,CAAC,CAAA;AAErC,EAAA,OAAO,IAAI,CAAA;AACb;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASuM,MAAMA,CAACC,KAAK,EAAE;AAC5B,EAAA,QAAQA,KAAK;AACX,IAAA,KAAKnP,SAAS;AACZ,MAAA,OAAO,WAAW,CAAA;AACpB,IAAA,KAAK,IAAI;AACP,MAAA,OAAO,MAAM,CAAA;AACf,IAAA;AACE,MAAA,OAAOmP,KAAK,CAAC7B,WAAW,CAAC8B,IAAI,CAAA;AACjC,GAAA;AACF,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,UAAUA,CAACF,KAAK,EAAE;AAChC,EAAA,QAAQ,OAAOA,KAAK;AAClB,IAAA,KAAK,QAAQ;AACX,MAAA,OAAO,QAAQ,CAAA;AAEjB,IAAA,KAAK,QAAQ;AACX,MAAA,IAAIG,KAAK,CAACC,OAAO,CAACJ,KAAK,CAAC,EAAE;AACxB,QAAA,OAAO,OAAO,CAAA;OACf,MAAM,IAAID,MAAM,CAACC,KAAK,CAAC,KAAK,QAAQ,EAAE;AACrC,QAAA,OAAO,cAAc,CAAA;OACtB,MAAM,IAAID,MAAM,CAACC,KAAK,CAAC,KAAK,MAAM,EAAE;AACnC,QAAA,OAAO,eAAe,CAAA;AACxB,OAAA;AACF;;AAEA,IAAA;AACE,MAAA,OAAO,WAAW,CAAA;AACtB,GAAA;AACF;;;;;;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASK,UAAUA,CAACC,KAAK,EAAEC,KAAK,EAAE;EACvC,IAAID,KAAK,CAACE,MAAM,EAAE;AAChB,IAAA,MAAM9J,KAAK,GAAG6J,KAAK,CAACE,SAAS,CAAC,CAAC;AAAEnG,MAAAA,IAAAA;AAAK,KAAC,KAAKA,IAAI,KAAK,mBAAmB,CAAC,CAAA;AACzE,IAAA,IAAI5D,KAAK,KAAK,CAAC,CAAC,EAAE;MAChB6J,KAAK,CAAC7C,MAAM,CAAChH,KAAK,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG4J,KAAK,CAACE,MAAM,CAACzL,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;AAC1D,KAAA;AACF,GAAA;EAEAuL,KAAK,CAACE,MAAM,GAAGD,KAAK,CAAA;AACpB,EAAA,OAAOD,KAAK,CAAA;AACd,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASI,WAAWA,CAACJ,KAAK,EAAE;EACjC,OAAOA,KAAK,CAACE,MAAM,CAAA;AACnB,EAAA,OAAOF,KAAK,CAAA;AACd;;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMK,MAAM,GAAG;AACbC,EAAAA,OAAOA,CAACC,KAAK,EAAEC,KAAK,EAAEC,GAAG,EAAE;IACzB,IAAI,CAACC,IAAI,CAAC/O,IAAI,CAAC6O,KAAK,EAAEC,GAAG,CAAC,CAAA;AAE1B,IAAA,IAAI,IAAI,CAACE,OAAO,CAAChI,OAAO,CAAC4H,KAAK,CAAC,GAAG,IAAI,CAACI,OAAO,CAAChI,OAAO,CAAC,IAAI,CAAC4H,KAAK,CAAC,EAAE;AAClE,MAAA,OAAA;AACF,KAAA;IAEA,IAAI,CAACK,QAAQ,CAACnD,GAAG,CAAC+C,KAAK,EAAE,GAAGC,GAAG,CAAC,CAAA;GACjC;AACDG,EAAAA,QAAQ,EAAE,IAAI;AACdF,EAAAA,IAAI,EAAE,EAAE;AAER;AACF;AACA;AACEC,EAAAA,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC;AAEzEJ,EAAAA,KAAK,EAAE,QAAA;AACT,CAAC,CAAA;AAED,KAAK,MAAMA,KAAK,IAAIF,MAAM,CAACM,OAAO,EAAE;AAClCN,EAAAA,MAAM,CAACE,KAAK,CAAC,GAAG,CAACC,KAAK,EAAE,GAAGC,GAAG,KAAKJ,MAAM,CAACC,OAAO,CAACC,KAAK,EAAEC,KAAK,EAAEC,GAAG,CAAC,CAAA;AACtE,CAAA;AAEA,IAAI,OAAOI,OAAO,CAACC,OAAO,KAAK,UAAU,EAAE;EACzCT,MAAM,CAACO,QAAQ,GAAG,IAAIC,OAAO,CAACC,OAAO,CAACC,OAAO,CAACC,MAAM,CAAC,CAAA;AACvD,CAAC,MAAM;EACLX,MAAM,CAACO,QAAQ,GAAGC,OAAO,CAAA;AAC3B;;ACtCA;;AAIA;AACA,MAAMtC,KAAK,GAAG,EAAE,CAAA;AAChB,MAAM0C,SAAS,GAAG,EAAE,CAAA;;AAEpB;AACA,MAAMC,SAAS,GAAG,EAAE,CAAA;;AAEpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,gBAAgBA,CAACC,KAAK,EAAEC,QAAQ,EAAE;AACzC,EAAA,QAAQA,QAAQ;AACd,IAAA,KAAK,OAAO;AACV,MAAA,IAAID,KAAK,CAAC9P,MAAM,KAAK,CAAC,IAAI8P,KAAK,CAACE,KAAK,CAAEtB,KAAK,IAAKhG,IAAI,CAACgG,KAAK,CAAC,KAAK,aAAa,CAAC,EAAE;AAC/E,QAAA,OAAO,kBAAkB,CAAA;AAC3B,OAAC,MAAM;AACL,QAAA,OAAO,mBAAmB,CAAA;AAC5B,OAAA;AAEF,IAAA,KAAK,cAAc,CAAA;AACnB,IAAA,KAAK,eAAe;AAClB;AACA,MAAA,OAAO,aAAa,CAAA;AAEtB,IAAA;AACE,MAAA,OAAO,UAAU,CAAA;AACrB,GAAA;AACF,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASuB,SAASA,CAACC,QAAQ,GAAG,EAAE,EAAE/O,IAAI,EAAE;AACtC,EAAA,KAAK,MAAMuH,IAAI,IAAIwH,QAAQ,EAAE;IAC3B,IAAIjD,KAAK,CAACvE,IAAI,CAAC,CAACyH,SAAS,CAAChP,IAAI,CAAC,EAAE;AAC/B,MAAA,OAAO8O,SAAS,CAAChD,KAAK,CAACvE,IAAI,CAAC,CAAC0H,UAAU,EAAEjP,IAAI,CAAC,IAAIuH,IAAI,CAAA;AACxD,KAAA;AACF,GAAA;AACF,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,IAAIA,CAACoH,KAAK,EAAE;AAC1B,EAAA,MAAMC,QAAQ,GAAGzB,UAAU,CAACwB,KAAK,CAAC,CAAA;;AAElC;EACA,IAAIC,QAAQ,KAAK,OAAO,IAAID,KAAK,CAAC9P,MAAM,KAAK,CAAC,EAAE;AAC9C;AACA;AACA,IAAA,OAAO6P,gBAAgB,CAACC,KAAK,EAAEC,QAAQ,CAAC,CAAA;AAC1C,GAAA;EAEA,MAAM3Q,KAAK,GAAG6Q,SAAS,CAACN,SAAS,CAACI,QAAQ,CAAC,EAAED,KAAK,CAAC,CAAA;;AAEnD;AACA;AACA,EAAA,OAAO1Q,KAAK,IAAIyQ,gBAAgB,CAACC,KAAK,EAAEC,QAAQ,CAAC,CAAA;AACnD,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASM,aAAaA,CAAC/N,MAAM,EAAE;EAAEyN,QAAQ;EAAEI,SAAS;AAAEG,EAAAA,OAAO,EAAEC,MAAAA;AAAO,CAAC,EAAE;AAC9E;EACA,IAAIH,UAAU,GAAG,EAAE,CAAA;EACnB,IAAI9N,MAAM,IAAIsN,SAAS,EAAE;AACvBQ,IAAAA,UAAU,GAAGR,SAAS,CAACtN,MAAM,CAAC,CAAA;IAC9B,OAAOsN,SAAS,CAACtN,MAAM,CAAC,CAAA;IACxByM,MAAM,CAACyB,KAAK,CACV,QAAQ,EACP,eAAcJ,UAAW,CAAA,qCAAA,EAAuC9N,MAAO,CAAA,CAAA,CAC1E,CAAC,CAAA;AACH,GAAA;;AAEA;AACA,EAAA,MAAMmO,MAAM,GAAG;IAAEN,SAAS;AAAEC,IAAAA,UAAAA;GAAY,CAAA;AACxCnD,EAAAA,KAAK,CAAC3K,MAAM,CAAC,GAAGmO,MAAM,CAAA;;AAEtB;AACA,EAAA,IAAIF,MAAM,EAAE;AACV;AACA,IAAA,MAAMG,gBAAgB,GAAGzD,KAAK,CAACsD,MAAM,CAAC,CAAA;AAEtC,IAAA,IAAIG,gBAAgB,EAAE;AACpB;AACAA,MAAAA,gBAAgB,CAACN,UAAU,CAAC/P,IAAI,CAACiC,MAAM,CAAC,CAAA;AAC1C,KAAC,MAAM;AACL;AACA,MAAA,IAAI,CAACsN,SAAS,CAACW,MAAM,CAAC,EAAE;AACtBX,QAAAA,SAAS,CAACW,MAAM,CAAC,GAAG,EAAE,CAAA;AACxB,OAAA;AACAX,MAAAA,SAAS,CAACW,MAAM,CAAC,CAAClQ,IAAI,CAACiC,MAAM,CAAC,CAAA;MAC9ByM,MAAM,CAACyB,KAAK,CAAC,QAAQ,EAAG,aAAYlO,MAAO,CAAA,6BAAA,EAA+BiO,MAAO,CAAA,CAAA,CAAE,CAAC,CAAA;AACtF,KAAA;AACF,GAAC,MAAM;AACL;AACA,IAAA,MAAML,QAAQ,GAAGP,SAAS,CAACI,QAAQ,CAAC,KAAKJ,SAAS,CAACI,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAA;AAClEG,IAAAA,QAAQ,CAAC7P,IAAI,CAACiC,MAAM,CAAC,CAAA;AACvB,GAAA;AACF,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASqO,aAAaA,CAACjI,IAAI,EAAE;EAClC,OAAO/F,MAAM,CAACiO,SAAS,CAACC,cAAc,CAACC,IAAI,CAAC7D,KAAK,EAAEvE,IAAI,CAAC,CAAA;AAC1D,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASqI,gBAAgBA,CAACrI,IAAI,EAAE;EACrC,OAAOuE,KAAK,CAACvE,IAAI,CAAC,CAAA;;AAElB;EACA,MAAMsI,SAAS,GAAG,CAChB,GAAGrO,MAAM,CAACC,IAAI,CAAC+M,SAAS,CAAC,CAAChJ,GAAG,CAAET,GAAG,IAAKyJ,SAAS,CAACzJ,GAAG,CAAC,CAAC,EACtD,GAAGvD,MAAM,CAACC,IAAI,CAACqK,KAAK,CAAC,CAClBtG,GAAG,CAAE+B,IAAI,IAAKuE,KAAK,CAACvE,IAAI,CAAC,CAAC0H,UAAU,CAAC,CACrCpI,MAAM,CAAES,IAAI,IAAKA,IAAI,CAACzI,MAAM,GAAG,CAAC,CAAC,CACrC,CAAA;AACDgR,EAAAA,SAAS,CAAC7I,OAAO,CAAE+H,QAAQ,IAAK;AAC9B,IAAA,MAAMpL,KAAK,GAAGoL,QAAQ,CAAC7I,OAAO,CAACqB,IAAI,CAAC,CAAA;AACpC,IAAA,IAAI5D,KAAK,GAAG,CAAC,CAAC,EAAE;AACdoL,MAAAA,QAAQ,CAACpE,MAAM,CAAChH,KAAK,EAAE,CAAC,CAAC,CAAA;AAC3B,KAAA;AACF,GAAC,CAAC,CAAA;AACJ,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASmM,cAAcA,GAAG;AAC/B,EAAA,OAAOtO,MAAM,CAACC,IAAI,CAACqK,KAAK,CAAC,CAAA;AAC3B,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASiE,cAAcA,GAAG;EAC/B,MAAMC,UAAU,GAAI9C,IAAI,KAAM;IAAEA,IAAI;IAAEnK,QAAQ,EAAE+I,KAAK,CAACoB,IAAI,CAAC,CAAC+B,UAAU,CAACzJ,GAAG,CAACwK,UAAU,CAAA;AAAE,GAAC,CAAC,CAAA;EACzF,OAAO;AACL9C,IAAAA,IAAI,EAAE,WAAW;IACjBnK,QAAQ,EAAEvB,MAAM,CAACC,IAAI,CAAC+M,SAAS,CAAC,CAAChJ,GAAG,CAAE0H,IAAI,KAAM;MAC9CA,IAAI;MACJnK,QAAQ,EAAEyL,SAAS,CAACtB,IAAI,CAAC,CAAC1H,GAAG,CAACwK,UAAU,CAAA;AAC1C,KAAC,CAAC,CAAA;GACH,CAAA;AACH,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMC,WAAW,GAAG,yCAAyC;;AC9MpE;;AAGA;AACA;AACA;AACA;AACA,MAAMC,UAAU,CAAC;EAOf9E,WAAWA,CAACpL,IAAI,EAAE;AANlB;AACF;AACA;AACA;AAHE,IAAA,IAAA,CAIAmQ,cAAc,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,WAAW,CAAC,CAAA;IAGhF,IAAI,CAACnQ,IAAI,GAAGA,IAAI,CAAA;AAClB,GAAA;;AAEA;AACA;AACA;;AAEA;AACF;AACA;AACA;AACEoQ,EAAAA,gBAAgBA,GAAG;AACjB,IAAA,MAAMxB,QAAQ,GAAG,IAAI,CAAC5O,IAAI,CAAC4O,QAAQ,CAAA;IACnC,IAAIA,QAAQ,IAAI,CAAC,IAAI,CAACuB,cAAc,CAACxO,QAAQ,CAACiN,QAAQ,CAAC,EAAE;MACvD,MAAM,IAAIyB,UAAU,CAAE,CAAezB,aAAAA,EAAAA,QAAS,qBAAoB,IAAI,CAACuB,cAAe,CAAA,CAAC,CAAC,CAAA;AAC1F,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACEG,EAAAA,iBAAiBA,GAAG;AAClB,IAAA,MAAMtB,SAAS,GAAG,IAAI,CAAChP,IAAI,CAACgP,SAAS,CAAA;AACrC,IAAA,IAAIA,SAAS,IAAI,EAAEA,SAAS,YAAYuB,MAAM,IAAI,OAAOvB,SAAS,KAAK,UAAU,CAAC,EAAE;AAClF,MAAA,MAAM,IAAI9C,SAAS,CAAE,iBAAgB,OAAO8C,SAAU,+BAA8B,CAAC,CAAA;AACvF,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACEwB,EAAAA,iBAAiBA,GAAG;AAClB,IAAA,MAAMC,SAAS,GAAG,IAAI,CAACzQ,IAAI,CAACyQ,SAAS,CAAA;AACrC,IAAA,IAAIA,SAAS,IAAI,OAAOA,SAAS,KAAK,QAAQ,EAAE;AAC9C,MAAA,MAAM,IAAIvE,SAAS,CAAE,iBAAgB,OAAOuE,SAAU,6BAA4B,CAAC,CAAA;AACrF,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACEC,EAAAA,0BAA0BA,GAAG;AAC3B,IAAA,MAAMC,kBAAkB,GAAG,IAAI,CAAC3Q,IAAI,CAAC2Q,kBAAkB,CAAA;AACvD,IAAA,IAAIA,kBAAkB,IAAI,OAAOA,kBAAkB,KAAK,QAAQ,EAAE;AAChE,MAAA,MAAM,IAAIzE,SAAS,CAChB,0BAAyB,OAAOyE,kBAAmB,4BACtD,CAAC,CAAA;AACH,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACEC,EAAAA,yBAAyBA,GAAG;AAC1B,IAAA,MAAMC,iBAAiB,GAAG,IAAI,CAAC7Q,IAAI,CAAC6Q,iBAAiB,CAAA;AACrD,IAAA,IAAIA,iBAAiB,IAAI,OAAOA,iBAAiB,KAAK,QAAQ,EAAE;AAC9D,MAAA,MAAM,IAAI3E,SAAS,CAAE,yBAAwB,OAAO2E,iBAAkB,mBAAkB,CAAC,CAAA;AAC3F,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACEC,EAAAA,eAAeA,GAAG;AAChB,IAAA,MAAM1B,MAAM,GAAG,IAAI,CAACpP,IAAI,CAACmP,OAAO,CAAA;AAChC,IAAA,IAAIC,MAAM,IAAI,OAAOA,MAAM,KAAK,QAAQ,EAAE;AACxC,MAAA,MAAM,IAAIlD,SAAS,CAAE,eAAc,OAAOkD,MAAO,mBAAkB,CAAC,CAAA;AACtE,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACEtC,EAAAA,QAAQA,GAAG;AACT,IAAA,IAAI,IAAI,CAAC9M,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,CAACA,IAAI,KAAK,QAAQ,EAAE;MACvD,MAAM,IAAIkM,SAAS,CAAE,CAAA,eAAA,EAAiB,OAAO,IAAI,CAAClM,IAAK,CAAA,iBAAA,CAAkB,CAAC,CAAA;AAC5E,KAAA;IACA,IAAI,CAACoQ,gBAAgB,EAAE,CAAA;IACvB,IAAI,CAACE,iBAAiB,EAAE,CAAA;IACxB,IAAI,CAACE,iBAAiB,EAAE,CAAA;IACxB,IAAI,CAACE,0BAA0B,EAAE,CAAA;IACjC,IAAI,CAACE,yBAAyB,EAAE,CAAA;IAChC,IAAI,CAACE,eAAe,EAAE,CAAA;AACxB,GAAA;;AAEA;AACA;AACA;;AAEA;AACF;AACA;AACA;AACEC,EAAAA,cAAcA,GAAG;AACf,IAAA,IAAIN,SAAS,GAAG,IAAI,CAACzQ,IAAI,CAACyQ,SAAS,CAAA;IAEnC,IAAI,CAACA,SAAS,EAAE;AACd,MAAA,OAAO,EAAE,CAAA;AACX,KAAC,MAAM,IAAIA,SAAS,YAAYF,MAAM,EAAE;AACtCE,MAAAA,SAAS,GAAG;AAAEO,QAAAA,KAAK,EAAEP,SAAAA;OAAW,CAAA;AAClC,KAAA;IAEA,MAAM;MAAEO,KAAK;AAAEhT,MAAAA,KAAK,GAAG,KAAK;AAAEG,MAAAA,IAAI,GAAG,IAAI;AAAE0Q,MAAAA,KAAK,GAAG,IAAA;AAAK,KAAC,GAAG4B,SAAS,CAAA;AAErE,IAAA,MAAMQ,SAAS,GAAItC,KAAK,IAAMxQ,IAAI,GAAGwQ,KAAK,CAACxQ,IAAI,EAAE,GAAGwQ,KAAM,CAAA;AAC1D,IAAA,MAAMuC,UAAU,GAAGrC,KAAK,GAAG,OAAO,GAAG,MAAM,CAAA;IAE3C,MAAMG,SAAS,GAAIL,KAAK,IACtBsC,SAAS,CAACtC,KAAK,CAAC,CACb3Q,KAAK,CAACA,KAAK,CAAC,CACZkT,UAAU,CAAC,CAAEhU,IAAI,IAAK8T,KAAK,CAAC1E,IAAI,CAACpP,IAAI,CAAC,CAAC,CAAA;IAE5C,OAAO,CAAC8R,SAAS,CAAC,CAAA;AACpB,GAAA;;AAEA;AACF;AACA;AACA;AACEmC,EAAAA,uBAAuBA,GAAG;AACxB,IAAA,MAAMC,WAAW,GAAG,EAAE,CAACC,MAAM,CAAC,IAAI,CAACrR,IAAI,CAAC2Q,kBAAkB,IAAI,EAAE,CAAC,CAAA;AAEjE,IAAA,OAAOS,WAAW,CAAC5L,GAAG,CAAC,CAAC;MAAE8L,KAAK;MAAErT,KAAK;AAAEwJ,MAAAA,KAAAA;AAAM,KAAC,KAAK;AAClD6J,MAAAA,KAAK,GAAG,EAAE,CAACD,MAAM,CAACC,KAAK,CAAC,CAAA;AAExB,MAAA,QAAQrT,KAAK;QACX,KAAK,KAAK,CAAC;AACX,QAAA,KAAK,MAAM;UACT,OAAQ0Q,KAAK,IAAK2C,KAAK,CAACC,IAAI,CAAEC,IAAI,IAAKA,IAAI,IAAI7C,KAAK,KAAK,CAAClH,KAAK,IAAIA,KAAK,CAACkH,KAAK,CAAC6C,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AACzF,QAAA,KAAK,MAAM;UACT,OAAQ7C,KAAK,IAAK,CAAC2C,KAAK,CAACC,IAAI,CAAEC,IAAI,IAAKA,IAAI,IAAI7C,KAAK,KAAK,CAAClH,KAAK,IAAIA,KAAK,CAACkH,KAAK,CAAC6C,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;QAC1F,KAAK,OAAO,CAAC;AACb,QAAA;UACE,OAAQ7C,KAAK,IAAK2C,KAAK,CAACzC,KAAK,CAAE2C,IAAI,IAAKA,IAAI,IAAI7C,KAAK,KAAK,CAAClH,KAAK,IAAIA,KAAK,CAACkH,KAAK,CAAC6C,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AAC5F,OAAA;AACF,KAAC,CAAC,CAAA;AACJ,GAAA;;AAEA;AACF;AACA;AACA;AACEC,EAAAA,sBAAsBA,GAAG;AACvB,IAAA,MAAMC,UAAU,GAAG,IAAI,CAAC1R,IAAI,CAAC6Q,iBAAiB,CAAA;IAC9C,OAAO,CAACa,UAAU,GAAG,EAAE,GAAG,CAAE/C,KAAK,IAAKA,KAAK,CAACE,KAAK,CAAEtB,KAAK,IAAKhG,IAAI,CAACgG,KAAK,CAAC,KAAKmE,UAAU,CAAC,CAAC,CAAA;AAC3F,GAAA;;AAEA;AACF;AACA;AACA;AACEC,EAAAA,cAAcA,GAAG;AACf,IAAA,IAAI,IAAI,CAAC3R,IAAI,CAACgP,SAAS,YAAYuB,MAAM,EAAE;AACzC,MAAA,OAAO,CAAC,IAAI,CAACvQ,IAAI,CAACgP,SAAS,CAAC1C,IAAI,CAACsF,IAAI,CAAC,IAAI,CAAC5R,IAAI,CAACgP,SAAS,CAAC,CAAC,CAAA;AAC7D,KAAC,MAAM,IAAI,IAAI,CAAChP,IAAI,CAACgP,SAAS,EAAE;AAC9B,MAAA,OAAO,CAAC,IAAI,CAAChP,IAAI,CAACgP,SAAS,CAAC,CAAA;AAC9B,KAAC,MAAM;AACL,MAAA,OAAO,EAAE,CAAA;AACX,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACE6C,EAAAA,oBAAoBA,GAAG;AACrB,IAAA,MAAMC,UAAU,GAAG,CACjB,GAAG,IAAI,CAACH,cAAc,EAAE,EACxB,GAAG,IAAI,CAACZ,cAAc,EAAE,EACxB,GAAG,IAAI,CAACI,uBAAuB,EAAE,EACjC,GAAG,IAAI,CAACM,sBAAsB,EAAE,CACjC,CAAA;AAED,IAAA,IAAIK,UAAU,CAACjT,MAAM,KAAK,CAAC,EAAE;AAC3B,MAAA,OAAO,MAAM,IAAI,CAAA;AACnB,KAAC,MAAM,IAAIiT,UAAU,CAACjT,MAAM,KAAK,CAAC,EAAE;MAClC,OAAOiT,UAAU,CAAC,CAAC,CAAC,CAAA;AACtB,KAAC,MAAM;AACL,MAAA,OAAQnD,KAAK,IAAKmD,UAAU,CAACjD,KAAK,CAAEG,SAAS,IAAKA,SAAS,CAACL,KAAK,CAAC,CAAC,CAAA;AACrE,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACA;AACEoD,EAAAA,WAAWA,GAAG;AACZ,IAAA,IAAI,IAAI,CAAC/R,IAAI,CAAC4O,QAAQ,EAAE;AACtB,MAAA,OAAO,IAAI,CAAC5O,IAAI,CAAC4O,QAAQ,CAAA;KAC1B,MAAM,IAAI,IAAI,CAAC5O,IAAI,CAACgP,SAAS,YAAYuB,MAAM,EAAE;AAChD,MAAA,OAAO,QAAQ,CAAA;AACjB,KAAC,MAAM,IAAI,IAAI,CAACvQ,IAAI,CAACyQ,SAAS,EAAE;AAC9B,MAAA,OAAO,QAAQ,CAAA;AACjB,KAAC,MAAM,IAAI,IAAI,CAACzQ,IAAI,CAAC6Q,iBAAiB,EAAE;AACtC,MAAA,OAAO,OAAO,CAAA;AAChB,KAAC,MAAM;AACL,MAAA,OAAO,WAAW,CAAA;AACpB,KAAA;AACF,GAAA;;AAEA;AACA;AACA;;AAEA;AACF;AACA;EACE,IAAIjC,QAAQA,GAAG;AACb,IAAA,OAAO,IAAI,CAACmD,WAAW,EAAE,CAAA;AAC3B,GAAA;;AAEA;AACF;AACA;EACE,IAAI/C,SAASA,GAAG;AACd,IAAA,OAAO,IAAI,CAAC6C,oBAAoB,EAAE,CAAA;AACpC,GAAA;;AAEA;AACF;AACA;EACE,IAAI1C,OAAOA,GAAG;AACZ,IAAA,OAAO,IAAI,CAACnP,IAAI,CAACmP,OAAO,CAAA;AAC1B,GAAA;AACF,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM6C,UAAU,CAAC;EACf5G,WAAWA,CAAC6G,MAAM,EAAE;AAAEC,IAAAA,KAAAA;GAAO,GAAG,EAAE,EAAE;IAClC,IAAI,CAACD,MAAM,GAAGA,MAAM,CAAA;IACpB,IAAI,CAACC,KAAK,GAAGA,KAAK,CAAA;AACpB,GAAA;;AAEA;AACA;AACA;;AAEA;AACF;AACA;AACEpF,EAAAA,QAAQA,GAAG;AACT,IAAA,MAAMmF,MAAM,GAAG,IAAI,CAACA,MAAM,CAAA;AAC1B,IAAA,IAAI,OAAOA,MAAM,KAAK,UAAU,EAAE;AAChC,MAAA,MAAM,IAAI/F,SAAS,CAAE,cAAa,OAAO+F,MAAO,qBAAoB,CAAC,CAAA;AACvE,KAAA;AACF,GAAA;AACF,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAME,YAAY,CAAC;AACjB/G,EAAAA,WAAWA,CAACjK,MAAM,EAAEiR,OAAO,GAAG,EAAE,EAAE;IAChC,IAAI,CAACjR,MAAM,GAAGA,MAAM,CAAA;IAEpB,IAAIiR,OAAO,CAACC,SAAS,EAAE;MACrB,IAAI,CAACC,UAAU,GAAG,IAAIpC,UAAU,CAACkC,OAAO,CAACC,SAAS,CAAC,CAAA;AACrD,KAAA;IACA,IAAID,OAAO,CAAC9G,KAAK,EAAE;MACjB,IAAI,CAACiH,UAAU,GAAG,IAAIP,UAAU,CAACI,OAAO,CAAC9G,KAAK,EAAE;AAAE4G,QAAAA,KAAK,EAAE,KAAA;AAAM,OAAC,CAAC,CAAA;AACnE,KAAA;IACA,IAAIE,OAAO,CAACI,UAAU,EAAE;MACtB,IAAI,CAACC,eAAe,GAAG,IAAIT,UAAU,CAACI,OAAO,CAACI,UAAU,EAAE;AAAEN,QAAAA,KAAK,EAAE,IAAA;AAAK,OAAC,CAAC,CAAA;AAC5E,KAAA;AACF,GAAA;;AAEA;AACA;AACA;;AAEA;AACF;AACA;AACA;AACEQ,EAAAA,cAAcA,GAAG;AACf,IAAA,MAAMvR,MAAM,GAAG,IAAI,CAACA,MAAM,CAAA;AAC1B,IAAA,IAAI,CAAC8O,WAAW,CAAC3D,IAAI,CAACnL,MAAM,CAAC,EAAE;AAC7B,MAAA,MAAM,IAAI+K,SAAS,CAAE,CAAmB/K,iBAAAA,EAAAA,MAAO,kCAAiC,CAAC,CAAA;AACnF,KAAA;AACF,GAAA;;AAEA;AACF;AACA;AACE2L,EAAAA,QAAQA,GAAG;IACT,IAAI,CAAC4F,cAAc,EAAE,CAAA;IACrB,IAAI,IAAI,CAACJ,UAAU,EAAE;AACnB,MAAA,IAAI,CAACA,UAAU,CAACxF,QAAQ,EAAE,CAAA;AAC5B,KAAA;IACA,IAAI,IAAI,CAACyF,UAAU,EAAE;AACnB,MAAA,IAAI,CAACA,UAAU,CAACzF,QAAQ,EAAE,CAAA;AAC5B,KAAA;IACA,IAAI,IAAI,CAAC2F,eAAe,EAAE;AACxB,MAAA,IAAI,CAACA,eAAe,CAAC3F,QAAQ,EAAE,CAAA;AACjC,KAAA;AACF,GAAA;AACF;;;;;;;;;ACjUA,MAAM6F,IAAI,GAAG,CAAC,CAAA;AACd,MAAMC,SAAS,GAAG,CAAC,CAAA;AACnB,MAAMC,IAAI,GAAG,CAAC,CAAA;AACd,MAAMC,MAAI,GAAG,CAAC,CAAA;;AAEd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,UAAU,GAAG;AACjBC,EAAAA,OAAO,EAAE,IAAI;AACb,EAAA,iBAAiB,EAAE,IAAI;AACvB,EAAA,kBAAkB,EAAE,IAAI;AACxB,EAAA,mBAAmB,EAAE,IAAI;AACzBC,EAAAA,IAAI,EAAE,IAAI;AACV1W,EAAAA,IAAI,EAAE,IAAI;AACV2W,EAAAA,SAAS,EAAE,IAAI;AACf1W,EAAAA,OAAO,EAAE,IAAI;AACb2W,EAAAA,OAAO,EAAE,IAAI;AACbC,EAAAA,UAAU,EAAE,IAAI;AAChBC,EAAAA,OAAO,EAAE,IAAI;AACbC,EAAAA,QAAQ,EAAE,IAAI;AACd/F,EAAAA,KAAK,EAAE,IAAI;AACX,EAAA,kBAAkB,EAAE,IAAI;AACxB,EAAA,oBAAoB,EAAE,IAAI;AAC1BgG,EAAAA,KAAK,EAAE,IAAI;AACX7W,EAAAA,MAAM,EAAE,IAAI;AACZ8W,EAAAA,OAAO,EAAE,IAAI;AACbC,EAAAA,OAAO,EAAE,IAAI;AACbC,EAAAA,SAAS,EAAE,IAAI;AACfC,EAAAA,UAAU,EAAE,IAAI;AAChBC,EAAAA,WAAW,EAAE,IAAI;AACjBC,EAAAA,UAAU,EAAE,IAAI;AAChBrO,EAAAA,GAAG,EAAE,IAAI;AACTsO,EAAAA,cAAc,EAAE,IAAI;AACpBC,EAAAA,aAAa,EAAE,IAAI;AACnBC,EAAAA,QAAQ,EAAE,IAAI;AACd,EAAA,kBAAkB,EAAE,IAAI;AACxBC,EAAAA,MAAM,EAAE,IAAI;AACZC,EAAAA,WAAW,EAAE,IAAI;AACjBC,EAAAA,UAAU,EAAE,IAAI;AAChBC,EAAAA,sBAAsB,EAAE,IAAI;AAC5BC,EAAAA,IAAI,EAAE,IAAI;AACV,EAAA,aAAa,EAAE,IAAI;AACnBC,EAAAA,UAAU,EAAE,IAAI;AAChBC,EAAAA,MAAM,EAAE,IAAI;AACZC,EAAAA,MAAM,EAAE,IAAI;AACZ,EAAA,aAAa,EAAE,IAAI;AACnBC,EAAAA,QAAQ,EAAE,IAAI;AACdC,EAAAA,IAAI,EAAE,IAAI;AACVC,EAAAA,MAAM,EAAE,IAAI;AACZC,EAAAA,QAAQ,EAAE,IAAI;AACdC,EAAAA,MAAM,EAAE,IAAI;AACZC,EAAAA,MAAM,EAAE,IAAI;AACZC,EAAAA,OAAO,EAAE,IAAI;AAEb;AACA,EAAA,iBAAiB,EAAE,iBAAiB;AACpC,EAAA,cAAc,EAAE,SAAS;AACzB,EAAA,gBAAgB,EAAE,YAAY;AAC9B,EAAA,qBAAqB,EAAE,kBAAA;AACzB,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,YAAU,GAAG;AACjBhR,EAAAA,MAAM,EAAE4O,SAAS;AACjBqC,EAAAA,KAAK,EAAErC,SAAS;AAChB,EAAA,mBAAmB,EAAEA,SAAS;AAC9BsC,EAAAA,QAAQ,EAAEtC,SAAS;AACnBuC,EAAAA,QAAQ,EAAEvC,SAAS;AACnB,EAAA,kBAAkB,EAAEA,SAAS;AAC7BwC,EAAAA,WAAW,EAAExC,SAAS;AACtByC,EAAAA,OAAO,EAAEzC,SAAS;AAClB0C,EAAAA,QAAQ,EAAE1C,SAAS;AACnB2C,EAAAA,MAAM,EAAE3C,SAAS;AACjB,EAAA,oBAAoB,EAAEA,SAAS;AAC/B,EAAA,oBAAoB,EAAEA,SAAS;AAC/B4C,EAAAA,KAAK,EAAE5C,SAAS;AAChB6C,EAAAA,IAAI,EAAE7C,SAAS;AACf8C,EAAAA,WAAW,EAAE9C,SAAS;AACtB+C,EAAAA,WAAW,EAAE/C,SAAS;AACtBgD,EAAAA,QAAQ,EAAEhD,SAAS;AACnBiD,EAAAA,SAAS,EAAEjD,SAAS;AACpB,EAAA,iBAAiB,EAAEA,SAAS;AAC5BkD,EAAAA,SAAS,EAAElD,SAAS;AACpBmD,EAAAA,QAAQ,EAAEnD,SAAS;AACnB,EAAA,iBAAiB,EAAEA,SAAS;AAC5BoD,EAAAA,SAAS,EAAEpD,SAAS;AACpB,EAAA,eAAe,EAAEA,SAAS;AAC1B,EAAA,gBAAgB,EAAEA,SAAS;AAC3BqD,EAAAA,UAAU,EAAErD,SAAS;AAErBsD,EAAAA,QAAQ,EAAErD,IAAI;AACd,EAAA,gBAAgB,EAAEA,IAAI;AACtBsD,EAAAA,SAAS,EAAEtD,IAAI;AACf,EAAA,YAAY,EAAEA,IAAI;AAClB1M,EAAAA,MAAM,EAAE0M,IAAI;AACZ,EAAA,eAAe,EAAEA,IAAI;AACrBuD,EAAAA,SAAS,EAAEvD,IAAI;AAEftL,EAAAA,IAAI,EAAEuL,MAAI;AAEVuD,EAAAA,UAAU,EAAE,QAAQ;AAAE;AACtBC,EAAAA,MAAM,EAAE,QAAQ;AAEhBjY,EAAAA,EAAE,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACxBkY,EAAAA,QAAQ,EAAE,QAAQ;AAClBC,EAAAA,mBAAmB,EAAE,QAAQ;AAC7BC,EAAAA,UAAU,EAAE,QAAQ;AACpBC,EAAAA,QAAQ,EAAE,QAAQ;AAClBC,EAAAA,MAAM,EAAE,QAAQ;AAChBC,EAAAA,OAAO,EAAE,QAAQ;AACjBC,EAAAA,kBAAkB,EAAE,QAAQ;AAC5BC,EAAAA,gBAAgB,EAAE,QAAQ;AAC1B,EAAA,eAAe,EAAE,QAAQ;AACzBC,EAAAA,SAAS,EAAE,QAAQ;AACnB,EAAA,aAAa,EAAE,QAAQ;AACvB,EAAA,gBAAgB,EAAE,QAAQ;AAC1B,EAAA,iBAAiB,EAAE,QAAQ;AAC3B,EAAA,cAAc,EAAE,QAAQ;AACxB,EAAA,gBAAgB,EAAE,QAAQ;AAC1B,EAAA,mBAAmB,EAAE,QAAQ;AAC7B,EAAA,kBAAkB,EAAE,QAAQ;AAC5B,EAAA,iBAAiB,EAAE,QAAQ;AAC3B,EAAA,uBAAuB,EAAE,QAAQ;AACjCC,EAAAA,UAAU,EAAE,QAAQ;AACpBC,EAAAA,QAAQ,EAAE,QAAQ;AAClBC,EAAAA,GAAG,EAAE,QAAQ;AACbC,EAAAA,OAAO,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAC7B5D,EAAAA,KAAK,EAAE,QAAQ;AAAE;AACjB,EAAA,aAAa,EAAE,QAAQ;AACvB,EAAA,aAAa,EAAE,QAAQ;AACvB,EAAA,6BAA6B,EAAE,QAAQ;AACvC6D,EAAAA,KAAK,EAAE,QAAQ;AACfC,EAAAA,IAAI,EAAE,QAAQ;AACdC,EAAAA,IAAI,EAAE,QAAQ;AACd1a,EAAAA,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAC3B2a,EAAAA,YAAY,EAAE,QAAQ;AACtBC,EAAAA,OAAO,EAAE,QAAQ;AACjBhZ,EAAAA,OAAO,EAAE,QAAQ;AACjBiZ,EAAAA,MAAM,EAAE,QAAQ;AAChB3a,EAAAA,IAAI,EAAE,QAAQ;AACd0O,EAAAA,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAC5B,EAAA,iBAAiB,EAAE,QAAQ;AAC3B,EAAA,mBAAmB,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACzC,EAAA,oBAAoB,EAAE,QAAQ;AAC9B,EAAA,0BAA0B,EAAE,QAAQ;AACpC,EAAA,gBAAgB,EAAE,QAAQ;AAC1BxO,EAAAA,IAAI,EAAE,QAAQ;AACd,EAAA,YAAY,EAAE,QAAQ;AACtB,EAAA,aAAa,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;AACnC,EAAA,YAAY,EAAE,QAAQ;AACtB0a,EAAAA,KAAK,EAAE,QAAQ;AACfC,EAAAA,IAAI,EAAE,QAAQ;AACdC,EAAAA,QAAQ,EAAE,QAAQ;AAClBC,EAAAA,SAAS,EAAE,QAAQ;AACnB,EAAA,iBAAiB,EAAE,QAAQ;AAC3BC,EAAAA,UAAU,EAAE,QAAQ;AACpB,EAAA,gBAAgB,EAAE,QAAQ;AAC1B,EAAA,gBAAgB,EAAE,QAAQ;AAC1BC,EAAAA,KAAK,EAAE,QAAQ;AACf5a,EAAAA,OAAO,EAAE,QAAQ;AACjB6a,EAAAA,MAAM,EAAE,QAAQ;AAChBC,EAAAA,MAAM,EAAE,QAAQ;AAChBC,EAAAA,UAAU,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAChCC,EAAAA,KAAK,EAAE,QAAQ;AACf,EAAA,aAAa,EAAE,QAAQ;AACvB9X,EAAAA,GAAG,EAAE,QAAQ;AACb+X,EAAAA,OAAO,EAAE,QAAQ;AACjB/a,EAAAA,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;AAC5B,EAAA,cAAc,EAAE,QAAQ;AACxB,EAAA,oBAAoB,EAAE,QAAQ;AAC9B,EAAA,aAAa,EAAE,QAAA;AACjB,CAAC,CAAA;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASgb,WAAWA,CAACnL,IAAI,EAAEoL,oBAAoB,EAAE;EAC/C,IAAI,OAAOpL,IAAI,KAAK,QAAQ,IAAIA,IAAI,KAAK,IAAI,KAAKA,IAAI,CAACqL,OAAO,IAAIrL,IAAI,CAACsL,KAAK,IAAItL,IAAI,CAAChJ,MAAM,CAAC,EAAE;AAC5F,IAAA,OAAOgJ,IAAI,CAAA;AACb,GAAC,MAAM,IAAI,CAACoL,oBAAoB,EAAE;AAChC,IAAA,OAAOxa,SAAS,CAAA;AAClB,GAAC,MAAM,IAAI,OAAOoP,IAAI,KAAK,QAAQ,EAAE;IACnC,OAAOuL,OAAS,CAACvL,IAAI,CAAC,CAAA;AACxB,GAAA;AACF,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASwL,eAAeA,CAACC,QAAQ,EAAEL,oBAAoB,EAAE;EACvD,IAAIK,QAAQ,YAAYvL,KAAK,EAAE;AAC7B,IAAA,MAAMwL,KAAK,GAAGD,QAAQ,CAACnT,GAAG,CAAE0H,IAAI,IAAKmL,WAAW,CAACnL,IAAI,EAAEoL,oBAAoB,CAAC,CAAC,CAACzR,MAAM,CAACgS,OAAO,CAAC,CAAA;AAC7F,IAAA,OAAOD,KAAK,CAAC/Z,MAAM,GAAG+Z,KAAK,GAAG9a,SAAS,CAAA;AACzC,GAAA;AACF,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASgb,gBAAgBA,CAACC,SAAS,EAAET,oBAAoB,EAAE;EACzD,IAAIS,SAAS,CAAClK,KAAK,CAAE3R,IAAI,IAAK,OAAOA,IAAI,KAAK,QAAQ,CAAC,EAAE;AACvD,IAAA,OAAO6b,SAAS,CAAA;AAClB,GAAC,MAAM,IAAI,CAACT,oBAAoB,IAAIS,SAAS,CAACxH,IAAI,CAAErU,IAAI,IAAK8b,KAAK,CAACC,QAAQ,CAAC/b,IAAI,CAAC,CAAC,CAAC,EAAE;AACnF,IAAA,OAAOY,SAAS,CAAA;AAClB,GAAC,MAAM;IACL,OAAOib,SAAS,CAACvT,GAAG,CAAEtI,IAAI,IAAK+b,QAAQ,CAAC/b,IAAI,CAAC,CAAC,CAAA;AAChD,GAAA;AACF,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASgc,WAAWA,CAACC,IAAI,EAAEb,oBAAoB,EAAE;EAC/C,MAAMc,EAAE,GAAG,YAAY,CAAA;EAEvB,IAAI,OAAOD,IAAI,KAAK,QAAQ,IAAIA,IAAI,KAAK,IAAI,EAAE;AAC7C,IAAA,OAAOrb,SAAS,CAAA;;AAEhB;GACD,MAAM,IAAIqb,IAAI,CAACC,EAAE,CAAC,YAAYhM,KAAK,IAAI+L,IAAI,CAACC,EAAE,CAAC,CAACvK,KAAK,CAAE3R,IAAI,IAAKA,IAAI,YAAYkQ,KAAK,CAAC,EAAE;IACvF,MAAMiM,KAAK,GAAGF,IAAI,CAACC,EAAE,CAAC,CACnB5T,GAAG,CAAEuT,SAAS,IAAKD,gBAAgB,CAACC,SAAS,EAAET,oBAAoB,CAAC,CAAC,CACrEzR,MAAM,CAACgS,OAAO,CAAC,CAAA;AAClB,IAAA,OAAOQ,KAAK,CAACxa,MAAM,GAAAM,QAAA,KAAQga,IAAI,EAAA;AAAE,MAAA,YAAY,EAAEE,KAAAA;AAAK,KAAA,CAAA,GAAKvb,SAAS,CAAA;;AAElE;AACA;AACF,GAAC,MAAM,IAAIqb,IAAI,YAAY/L,KAAK,IAAI+L,IAAI,CAACtK,KAAK,CAAE3R,IAAI,IAAKA,IAAI,CAACkc,EAAE,CAAC,YAAYhM,KAAK,CAAC,EAAE;IACnF,MAAMiM,KAAK,GAAGF,IAAI,CACf3T,GAAG,CAAEuT,SAAS,IAAKD,gBAAgB,CAACC,SAAS,CAACK,EAAE,CAAC,EAAEd,oBAAoB,CAAC,CAAC,CACzEzR,MAAM,CAACgS,OAAO,CAAC,CAAA;IAClB,OAAOQ,KAAK,CAACxa,MAAM,GAAG;AAAE,MAAA,YAAY,EAAEwa,KAAAA;AAAM,KAAC,GAAGvb,SAAS,CAAA;;AAEzD;AACA;GACD,MAAM,IAAIqb,IAAI,CAACC,EAAE,CAAC,YAAYhM,KAAK,EAAE;IACpC,MAAM2L,SAAS,GAAGD,gBAAgB,CAACK,IAAI,CAACC,EAAE,CAAC,EAAEd,oBAAoB,CAAC,CAAA;AAClE,IAAA,OAAOS,SAAS,IAAI;MAAE,YAAY,EAAE,CAACA,SAAS,CAAA;KAAG,CAAA;;AAEjD;GACD,MAAM,IAAI,SAAS,IAAII,IAAI,IAAI,KAAK,IAAIA,IAAI,EAAE;AAC7C,IAAA,OAAOA,IAAI,CAAA;AACb,GAAA;AACF,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASG,WAAWA,CAAC/R,IAAI,EAAE+Q,oBAAoB,EAAE;AAC/C;AACA;AACA;EACA/Q,IAAI,GAAGgS,YAAY,CAAC,UAAU,EAAEhS,IAAI,EAAE+Q,oBAAoB,CAAC,CAAA;AAE3D,EAAA,IAAIvF,UAAU,CAACxL,IAAI,CAAC,KAAK,IAAI,EAAE;AAC7B,IAAA,OAAOA,IAAI,CAAA;AACb,GAAC,MAAM,IAAI+Q,oBAAoB,IAAI/Q,IAAI,IAAIwL,UAAU,EAAE;IACrD,OAAOA,UAAU,CAACxL,IAAI,CAAC,CAAA;AACzB,GAAC,MAAM;AACL,IAAA,OAAOzJ,SAAS,CAAA;AAClB,GAAA;AACF,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASyb,YAAYA,CAACC,SAAS,EAAE/R,KAAK,EAAE6Q,oBAAoB,EAAE;EAC5D,MAAMmB,SAAS,GAAG,EAAE,CAACpI,MAAM,CAAC2D,YAAU,CAACwE,SAAS,CAAC,CAAC,CAAA;EAElD,QAAQxE,YAAU,CAACwE,SAAS,CAAC;AAC3B;AACA,IAAA,KAAK7G,IAAI;AACP,MAAA,OAAO0F,WAAW,CAAC5Q,KAAK,EAAE6Q,oBAAoB,CAAC,CAAA;AACjD,IAAA,KAAK1F,SAAS;AACZ,MAAA,OAAO8F,eAAe,CAACjR,KAAK,EAAE6Q,oBAAoB,CAAC,CAAA;AACrD,IAAA,KAAKzF,IAAI;AACP,MAAA,OAAOqG,WAAW,CAACzR,KAAK,EAAE6Q,oBAAoB,CAAC,CAAA;AACjD,IAAA,KAAKxF,MAAI;AACP,MAAA,OAAOwG,WAAW,CAAC7R,KAAK,EAAE6Q,oBAAoB,CAAC,CAAA;AACnD,GAAA;AAEA,EAAA,IAAIA,oBAAoB,EAAE;IACxB,IACE,OAAO7Q,KAAK,KAAK,QAAQ,IACzBgS,SAAS,CAAC9X,QAAQ,CAAC,QAAQ,CAAC,IAC5B,CAAC8X,SAAS,CAAC9X,QAAQ,CAAC,QAAQ,CAAC,IAC7B,CAACqX,KAAK,CAAC,CAACvR,KAAK,CAAC,EACd;MACA,OAAOiS,UAAU,CAACjS,KAAK,CAAC,CAAA;KACzB,MAAM,IACL,OAAOA,KAAK,KAAK,QAAQ,IACzBgS,SAAS,CAAC9X,QAAQ,CAAC,QAAQ,CAAC,IAC5B,CAAC8X,SAAS,CAAC9X,QAAQ,CAAC,QAAQ,CAAC,EAC7B;AACA,MAAA,OAAO8F,KAAK,CAAC1F,QAAQ,EAAE,CAAA;AACzB,KAAC,MAAM,IAAIqL,KAAK,CAACC,OAAO,CAAC5F,KAAK,CAAC,IAAIA,KAAK,CAAC5I,MAAM,EAAE;MAC/C,OAAO0a,YAAY,CAACC,SAAS,EAAE/R,KAAK,CAAC,CAAC,CAAC,EAAE6Q,oBAAoB,CAAC,CAAA;AAChE,KAAA;AACF,GAAA;AAEA,EAAA,IAAImB,SAAS,CAAC9X,QAAQ,CAAC,OAAO8F,KAAK,CAAC,EAAE;AACpC,IAAA,OAAOA,KAAK,CAAA;AACd,GAAA;AACF,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASkS,QAAQA,CAAC3Z,IAAI,EAAEsY,oBAAoB,GAAG,IAAI,EAAE;AACnD,EAAA,OAAOtY,IAAI,CAACwF,GAAG,CAAC,UAAU+H,KAAK,EAAE;IAC/B,MAAMqM,KAAK,GAAG,EAAE,CAAA;AAEhB,IAAA,KAAK,MAAMC,KAAK,IAAItM,KAAK,EAAE;AACzB,MAAA,MAAMuM,UAAU,GAAGP,YAAY,CAACM,KAAK,EAAEtM,KAAK,CAACsM,KAAK,CAAC,EAAEvB,oBAAoB,CAAC,CAAA;MAC1E,IAAIwB,UAAU,KAAKhc,SAAS,EAAE;AAC5B8b,QAAAA,KAAK,CAACC,KAAK,CAAC,GAAGC,UAAU,CAAA;AAC3B,OAAA;AACF,KAAA;AAEA,IAAA,OAAOF,KAAK,CAAA;AACd,GAAC,CAAC,CAAA;AACJ;;;;;;;AClZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASG,UAAUA,CAACvW,IAAI,EAAE;AAC/B,EAAA,IAAI4J,KAAK,CAACC,OAAO,CAAC7J,IAAI,CAAC,EAAE;AACvB,IAAA,OAAOA,IAAI,CAACgC,GAAG,CAACuU,UAAU,CAAC,CAAA;AAC7B,GAAA;AAEAvW,EAAAA,IAAI,GAAArE,QAAA,CAAQqE,EAAAA,EAAAA,IAAI,CAAE,CAAA;EAClB,IAAI,OAAO,IAAIA,IAAI,EAAE;AACnBA,IAAAA,IAAI,CAAC,aAAa,CAAC,GAAGA,IAAI,CAAC+P,KAAK,CAAA;IAChC,OAAO/P,IAAI,CAAC+P,KAAK,CAAA;AACnB,GAAA;EACA,IAAI/P,IAAI,CAAC+D,IAAI,KAAK,MAAM,IAAI,SAAS,IAAI/D,IAAI,EAAE;IAC7CA,IAAI,CAAC+D,IAAI,GAAG,UAAU,CAAA;AACxB,GAAA;AACA,EAAA,OAAO/D,IAAI,CAAA;AACb,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASwW,YAAYA,CAACxW,IAAI,EAAE;AACjC,EAAA,IAAI4J,KAAK,CAACC,OAAO,CAAC7J,IAAI,CAAC,EAAE;AACvB,IAAA,OAAOA,IAAI,CAACgC,GAAG,CAACwU,YAAY,CAAC,CAAA;AAC/B,GAAA;AAEAxW,EAAAA,IAAI,GAAArE,QAAA,CAAQqE,EAAAA,EAAAA,IAAI,CAAE,CAAA;EAClB,IAAI,aAAa,IAAIA,IAAI,EAAE;AACzBA,IAAAA,IAAI,CAAC+P,KAAK,GAAG/P,IAAI,CAAC,aAAa,CAAC,CAAA;IAChC,OAAOA,IAAI,CAAC,aAAa,CAAC,CAAA;AAC5B,GAAA;AACA,EAAA,IAAIA,IAAI,CAAC+D,IAAI,KAAK,UAAU,EAAE;IAC5B/D,IAAI,CAAC+D,IAAI,GAAG,MAAM,CAAA;AACpB,GAAA;AACA,EAAA,OAAO/D,IAAI,CAAA;AACb;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASyW,QAAQA,CAACxS,KAAK,EAAEyS,IAAI,GAAG,IAAIC,GAAG,EAAE,EAAE;EAChD,IACE,OAAO1S,KAAK,KAAK,QAAQ,IACzBA,KAAK,KAAK,IAAI,IACbA,KAAK,CAAC2D,WAAW,KAAK5J,MAAM,IAAIiG,KAAK,CAAC2D,WAAW,KAAKgC,KAAM,EAC7D;AACA,IAAA,OAAO3F,KAAK,CAAA;AACd,GAAA;AAEA,EAAA,IAAIyS,IAAI,CAACE,GAAG,CAAC3S,KAAK,CAAC,EAAE;AACnB,IAAA,MAAM,IAAIyE,SAAS,CAAC,wCAAwC,CAAC,CAAA;AAC/D,GAAA;AAEAgO,EAAAA,IAAI,CAAChY,GAAG,CAACuF,KAAK,CAAC,CAAA;AACf,EAAA,IAAI4S,IAAI,CAAA;AAER,EAAA,IAAI5S,KAAK,CAAC2D,WAAW,KAAKgC,KAAK,EAAE;AAC/BiN,IAAAA,IAAI,GAAG5S,KAAK,CAACjC,GAAG,CAAEiC,KAAK,IAAKwS,QAAQ,CAACxS,KAAK,EAAEyS,IAAI,CAAC,CAAC,CAAA;AACpD,GAAC,MAAM;IACL,MAAM5K,MAAM,GAAG,EAAE,CAAA;AACjB,IAAA,KAAK,MAAMvK,GAAG,IAAI0C,KAAK,EAAE;AACvB6H,MAAAA,MAAM,CAACvK,GAAG,CAAC,GAAGkV,QAAQ,CAACxS,KAAK,CAAC1C,GAAG,CAAC,EAAEmV,IAAI,CAAC,CAAA;AAC1C,KAAA;AACAG,IAAAA,IAAI,GAAG/K,MAAM,CAAA;AACf,GAAA;AAEA4K,EAAAA,IAAI,CAACI,MAAM,CAAC7S,KAAK,CAAC,CAAA;AAClB,EAAA,OAAO4S,IAAI,CAAA;AACb;;;;;;;;;ACxCA,IAAIE,WAAW,GAAG,EAAE,CAAA;AACpB,IAAcC,KAAA,GAAGD,WAAW,CAAA;AAE5B,SAASE,IAAIA,CAACvX,CAAC,EAAE;AACb,EAAA,OAAOA,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;AACzB,CAAA;AAEA,SAASwX,SAASA,CAACxX,CAAC,EAAE;AACtB;AACI,EAAA,IAAKA,CAAC,GAAG,CAAC,KAAM,GAAG,IAAI,CAACA,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;AAAA;AAClC,IAAA,OAAOrB,IAAI,CAAC8Y,KAAK,CAACzX,CAAC,CAAC,CAAA;AAC5B,GAAK,MAAM;AACH,IAAA,OAAOrB,IAAI,CAAC+Y,KAAK,CAAC1X,CAAC,CAAC,CAAA;AACvB,GAAA;AACL,CAAA;AAEA,SAAS2X,sBAAsBA,CAACC,SAAS,EAAEC,QAAQ,EAAE;AACjD,EAAA,IAAI,CAACA,QAAQ,CAACC,QAAQ,EAAE;AACpB,IAAA,EAAEF,SAAS,CAAA;AACd,GAAA;AACD,EAAA,MAAMG,UAAU,GAAGF,QAAQ,CAACC,QAAQ,GAAG,CAAC,GAAG,CAACnZ,IAAI,CAACqZ,GAAG,CAAC,CAAC,EAAEJ,SAAS,CAAC,CAAA;EAClE,MAAMK,UAAU,GAAGtZ,IAAI,CAACqZ,GAAG,CAAC,CAAC,EAAEJ,SAAS,CAAC,GAAG,CAAC,CAAA;EAE7C,MAAMM,SAAS,GAAGL,QAAQ,CAACM,eAAe,GAAGxZ,IAAI,CAACqZ,GAAG,CAAC,CAAC,EAAEH,QAAQ,CAACM,eAAe,CAAC,GAAGxZ,IAAI,CAACqZ,GAAG,CAAC,CAAC,EAAEJ,SAAS,CAAC,CAAA;AAC3G,EAAA,MAAMQ,WAAW,GAAGP,QAAQ,CAACM,eAAe,GAAGxZ,IAAI,CAACqZ,GAAG,CAAC,CAAC,EAAEH,QAAQ,CAACM,eAAe,GAAG,CAAC,CAAC,GAAGxZ,IAAI,CAACqZ,GAAG,CAAC,CAAC,EAAEJ,SAAS,GAAG,CAAC,CAAC,CAAA;AAErH,EAAA,OAAO,UAASS,CAAC,EAAEC,IAAI,EAAE;AACrB,IAAA,IAAI,CAACA,IAAI,EAAEA,IAAI,GAAG,EAAE,CAAA;IAEpB,IAAItY,CAAC,GAAG,CAACqY,CAAC,CAAA;IAEV,IAAIC,IAAI,CAACC,YAAY,EAAE;AACnB,MAAA,IAAI,CAACC,MAAM,CAACC,QAAQ,CAACzY,CAAC,CAAC,EAAE;AACrB,QAAA,MAAM,IAAIgJ,SAAS,CAAC,iCAAiC,CAAC,CAAA;AACzD,OAAA;AAEDhJ,MAAAA,CAAC,GAAGuX,IAAI,CAACvX,CAAC,CAAC,GAAGrB,IAAI,CAAC8Y,KAAK,CAAC9Y,IAAI,CAAC+Z,GAAG,CAAC1Y,CAAC,CAAC,CAAC,CAAA;AACrC,MAAA,IAAIA,CAAC,GAAG+X,UAAU,IAAI/X,CAAC,GAAGiY,UAAU,EAAE;AAClC,QAAA,MAAM,IAAIjP,SAAS,CAAC,+BAA+B,CAAC,CAAA;AACvD,OAAA;AAED,MAAA,OAAOhJ,CAAC,CAAA;AACX,KAAA;IAED,IAAI,CAAC8V,KAAK,CAAC9V,CAAC,CAAC,IAAIsY,IAAI,CAACK,KAAK,EAAE;AACzB3Y,MAAAA,CAAC,GAAGwX,SAAS,CAACxX,CAAC,CAAC,CAAA;AAEhB,MAAA,IAAIA,CAAC,GAAG+X,UAAU,EAAE/X,CAAC,GAAG+X,UAAU,CAAA;AAClC,MAAA,IAAI/X,CAAC,GAAGiY,UAAU,EAAEjY,CAAC,GAAGiY,UAAU,CAAA;AAClC,MAAA,OAAOjY,CAAC,CAAA;AACX,KAAA;IAED,IAAI,CAACwY,MAAM,CAACC,QAAQ,CAACzY,CAAC,CAAC,IAAIA,CAAC,KAAK,CAAC,EAAE;AAChC,MAAA,OAAO,CAAC,CAAA;AACX,KAAA;AAEDA,IAAAA,CAAC,GAAGuX,IAAI,CAACvX,CAAC,CAAC,GAAGrB,IAAI,CAAC8Y,KAAK,CAAC9Y,IAAI,CAAC+Z,GAAG,CAAC1Y,CAAC,CAAC,CAAC,CAAA;IACrCA,CAAC,GAAGA,CAAC,GAAGkY,SAAS,CAAA;IAEjB,IAAI,CAACL,QAAQ,CAACC,QAAQ,IAAI9X,CAAC,IAAIoY,WAAW,EAAE;MACxC,OAAOpY,CAAC,GAAGkY,SAAS,CAAA;AAChC,KAAS,MAAM,IAAIL,QAAQ,CAACC,QAAQ,EAAE;MAC1B,IAAI9X,CAAC,GAAG,CAAC,EAAE;AACTA,QAAAA,CAAC,IAAIkY,SAAS,CAAA;AAC5B,OAAa,MAAM,IAAIlY,CAAC,KAAK,CAAC,CAAC,EAAE;AAAA;AACnB,QAAA,OAAO,CAAC,CAAA;AACT,OAAA;AACJ,KAAA;AAED,IAAA,OAAOA,CAAC,CAAA;GACX,CAAA;AACL,CAAA;AAEAqX,WAAW,CAAC,MAAM,CAAC,GAAG,YAAY;AAC9B,EAAA,OAAOzc,SAAS,CAAA;AACpB,CAAC,CAAA;AAEDyc,WAAW,CAAC,SAAS,CAAC,GAAG,UAAUuB,GAAG,EAAE;EACpC,OAAO,CAAC,CAACA,GAAG,CAAA;AAChB,CAAC,CAAA;AAEDvB,WAAW,CAAC,MAAM,CAAC,GAAGM,sBAAsB,CAAC,CAAC,EAAE;AAAEG,EAAAA,QAAQ,EAAE,KAAA;AAAK,CAAE,CAAC,CAAA;AACpET,WAAW,CAAC,OAAO,CAAC,GAAGM,sBAAsB,CAAC,CAAC,EAAE;AAAEG,EAAAA,QAAQ,EAAE,IAAA;AAAI,CAAE,CAAC,CAAA;AAEpET,WAAW,CAAC,OAAO,CAAC,GAAGM,sBAAsB,CAAC,EAAE,EAAE;AAAEG,EAAAA,QAAQ,EAAE,KAAA;AAAK,CAAE,CAAC,CAAA;AACtET,WAAW,CAAC,gBAAgB,CAAC,GAAGM,sBAAsB,CAAC,EAAE,EAAE;AAAEG,EAAAA,QAAQ,EAAE,IAAA;AAAI,CAAE,CAAC,CAAA;AAE9ET,WAAW,CAAC,MAAM,CAAC,GAAGM,sBAAsB,CAAC,EAAE,EAAE;AAAEG,EAAAA,QAAQ,EAAE,KAAA;AAAK,CAAE,CAAC,CAAA;AACrET,WAAW,CAAC,eAAe,CAAC,GAAGM,sBAAsB,CAAC,EAAE,EAAE;AAAEG,EAAAA,QAAQ,EAAE,IAAA;AAAI,CAAE,CAAC,CAAA;AAE7ET,WAAW,CAAC,WAAW,CAAC,GAAGM,sBAAsB,CAAC,EAAE,EAAE;AAAEG,EAAAA,QAAQ,EAAE,KAAK;AAAEK,EAAAA,eAAe,EAAE,EAAA;AAAE,CAAE,CAAC,CAAA;AAC/Fd,WAAW,CAAC,oBAAoB,CAAC,GAAGM,sBAAsB,CAAC,EAAE,EAAE;AAAEG,EAAAA,QAAQ,EAAE,IAAI;AAAEK,EAAAA,eAAe,EAAE,EAAA;AAAE,CAAE,CAAC,CAAA;AAEvGd,WAAW,CAAC,QAAQ,CAAC,GAAG,UAAUgB,CAAC,EAAE;EACjC,MAAMrY,CAAC,GAAG,CAACqY,CAAC,CAAA;AAEZ,EAAA,IAAI,CAACG,MAAM,CAACC,QAAQ,CAACzY,CAAC,CAAC,EAAE;AACrB,IAAA,MAAM,IAAIgJ,SAAS,CAAC,+CAA+C,CAAC,CAAA;AACvE,GAAA;AAED,EAAA,OAAOhJ,CAAC,CAAA;AACZ,CAAC,CAAA;AAEDqX,WAAW,CAAC,qBAAqB,CAAC,GAAG,UAAUgB,CAAC,EAAE;EAC9C,MAAMrY,CAAC,GAAG,CAACqY,CAAC,CAAA;AAEZ,EAAA,IAAIvC,KAAK,CAAC9V,CAAC,CAAC,EAAE;AACV,IAAA,MAAM,IAAIgJ,SAAS,CAAC,iBAAiB,CAAC,CAAA;AACzC,GAAA;AAED,EAAA,OAAOhJ,CAAC,CAAA;AACZ,CAAC,CAAA;;AAED;AACAqX,WAAW,CAAC,OAAO,CAAC,GAAGA,WAAW,CAAC,QAAQ,CAAC,CAAA;AAC5CA,WAAW,CAAC,oBAAoB,CAAC,GAAGA,WAAW,CAAC,qBAAqB,CAAC,CAAA;AAEtEA,WAAW,CAAC,WAAW,CAAC,GAAG,UAAUgB,CAAC,EAAEC,IAAI,EAAE;AAC1C,EAAA,IAAI,CAACA,IAAI,EAAEA,IAAI,GAAG,EAAE,CAAA;AAEpB,EAAA,IAAIA,IAAI,CAACO,sBAAsB,IAAIR,CAAC,KAAK,IAAI,EAAE;AAC3C,IAAA,OAAO,EAAE,CAAA;AACZ,GAAA;EAED,OAAOS,MAAM,CAACT,CAAC,CAAC,CAAA;AACpB,CAAC,CAAA;AAEDhB,WAAW,CAAC,YAAY,CAAC,GAAG,UAAUgB,CAAC,EAAEC,IAAI,EAAE;AAC3C,EAAA,MAAMtY,CAAC,GAAG8Y,MAAM,CAACT,CAAC,CAAC,CAAA;EACnB,IAAIvW,CAAC,GAAGlH,SAAS,CAAA;AACjB,EAAA,KAAK,IAAIgD,CAAC,GAAG,CAAC,EAAE,CAACkE,CAAC,GAAG9B,CAAC,CAAC+Y,WAAW,CAACnb,CAAC,CAAC,MAAMhD,SAAS,EAAE,EAAEgD,CAAC,EAAE;IACvD,IAAIkE,CAAC,GAAG,GAAG,EAAE;AACT,MAAA,MAAM,IAAIkH,SAAS,CAAC,oCAAoC,CAAC,CAAA;AAC5D,KAAA;AACJ,GAAA;AAED,EAAA,OAAOhJ,CAAC,CAAA;AACZ,CAAC,CAAA;AAEDqX,WAAW,CAAC,WAAW,CAAC,GAAG,UAAUgB,CAAC,EAAE;AACpC,EAAA,MAAMW,CAAC,GAAGF,MAAM,CAACT,CAAC,CAAC,CAAA;AACnB,EAAA,MAAM5T,CAAC,GAAGuU,CAAC,CAACrd,MAAM,CAAA;EAClB,MAAMsd,CAAC,GAAG,EAAE,CAAA;EACZ,KAAK,IAAIrb,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAG6G,CAAC,EAAE,EAAE7G,CAAC,EAAE;AACxB,IAAA,MAAMkE,CAAC,GAAGkX,CAAC,CAACE,UAAU,CAACtb,CAAC,CAAC,CAAA;AACzB,IAAA,IAAIkE,CAAC,GAAG,MAAM,IAAIA,CAAC,GAAG,MAAM,EAAE;MAC1BmX,CAAC,CAACjd,IAAI,CAAC8c,MAAM,CAACK,aAAa,CAACrX,CAAC,CAAC,CAAC,CAAA;KAClC,MAAM,IAAI,MAAM,IAAIA,CAAC,IAAIA,CAAC,IAAI,MAAM,EAAE;MACnCmX,CAAC,CAACjd,IAAI,CAAC8c,MAAM,CAACK,aAAa,CAAC,MAAM,CAAC,CAAC,CAAA;AAChD,KAAS,MAAM;AACH,MAAA,IAAIvb,CAAC,KAAK6G,CAAC,GAAG,CAAC,EAAE;QACbwU,CAAC,CAACjd,IAAI,CAAC8c,MAAM,CAACK,aAAa,CAAC,MAAM,CAAC,CAAC,CAAA;AACpD,OAAa,MAAM;QACH,MAAMzW,CAAC,GAAGsW,CAAC,CAACE,UAAU,CAACtb,CAAC,GAAG,CAAC,CAAC,CAAA;AAC7B,QAAA,IAAI,MAAM,IAAI8E,CAAC,IAAIA,CAAC,IAAI,MAAM,EAAE;AAC5B,UAAA,MAAM0W,CAAC,GAAGtX,CAAC,GAAG,KAAK,CAAA;AACnB,UAAA,MAAMuX,CAAC,GAAG3W,CAAC,GAAG,KAAK,CAAA;UACnBuW,CAAC,CAACjd,IAAI,CAAC8c,MAAM,CAACK,aAAa,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,IAAIC,CAAC,GAAGC,CAAC,CAAC,CAAC,CAAA;AAC1D,UAAA,EAAEzb,CAAC,CAAA;AACvB,SAAiB,MAAM;UACHqb,CAAC,CAACjd,IAAI,CAAC8c,MAAM,CAACK,aAAa,CAAC,MAAM,CAAC,CAAC,CAAA;AACvC,SAAA;AACJ,OAAA;AACJ,KAAA;AACJ,GAAA;AAED,EAAA,OAAOF,CAAC,CAACpb,IAAI,CAAC,EAAE,CAAC,CAAA;AACrB,CAAC,CAAA;AAEDwZ,WAAW,CAAC,MAAM,CAAC,GAAG,UAAUgB,CAAC,EAAEC,IAAI,EAAE;AACrC,EAAA,IAAI,EAAED,CAAC,YAAYiB,IAAI,CAAC,EAAE;AACtB,IAAA,MAAM,IAAItQ,SAAS,CAAC,+BAA+B,CAAC,CAAA;AACvD,GAAA;AACD,EAAA,IAAI8M,KAAK,CAACuC,CAAC,CAAC,EAAE;AACV,IAAA,OAAOzd,SAAS,CAAA;AACnB,GAAA;AAED,EAAA,OAAOyd,CAAC,CAAA;AACZ,CAAC,CAAA;AAEDhB,WAAW,CAAC,QAAQ,CAAC,GAAG,UAAUgB,CAAC,EAAEC,IAAI,EAAE;AACvC,EAAA,IAAI,EAAED,CAAC,YAAYhL,MAAM,CAAC,EAAE;AACxBgL,IAAAA,CAAC,GAAG,IAAIhL,MAAM,CAACgL,CAAC,CAAC,CAAA;AACpB,GAAA;AAED,EAAA,OAAOA,CAAC,CAAA;AACZ,CAAC;;;;EC1LDkB,MAAA,CAAAC,OAAA,CAAAC,KAAA,GAAuB,SAASA,KAAKA,CAAC/P,MAAM,EAAEoL,MAAM,EAAE;AACpD,IAAA,MAAMvW,IAAI,GAAGD,MAAM,CAACob,mBAAmB,CAAC5E,MAAM,CAAC,CAAA;AAC/C,IAAA,KAAK,IAAIlX,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGW,IAAI,CAAC5C,MAAM,EAAE,EAAEiC,CAAC,EAAE;MACpCU,MAAM,CAACqb,cAAc,CAACjQ,MAAM,EAAEnL,IAAI,CAACX,CAAC,CAAC,EAAEU,MAAM,CAACsb,wBAAwB,CAAC9E,MAAM,EAAEvW,IAAI,CAACX,CAAC,CAAC,CAAC,CAAC,CAAA;AACzF,KAAA;GACF,CAAA;EAED2b,MAAA,CAAAC,OAAA,CAAAK,aAAA,GAA+BC,MAAM,CAAC,SAAS,CAAC,CAAA;EAChDP,MAAA,CAAAC,OAAA,CAAAO,UAAA,GAA4BD,MAAM,CAAC,MAAM,CAAC,CAAA;AAE1CP,EAAAA,MAAgC,CAAAC,OAAA,CAAAQ,cAAA,GAAA,UAAUC,IAAI,EAAE;AAC9C,IAAA,OAAOA,IAAI,CAACV,MAAM,CAACC,OAAO,CAACK,aAAa,CAAC,CAAA;GAC1C,CAAA;AAEDN,EAAAA,MAAgC,CAAAC,OAAA,CAAAU,cAAA,GAAA,UAAUC,OAAO,EAAE;AACjD,IAAA,OAAOA,OAAO,CAACZ,MAAM,CAACC,OAAO,CAACO,UAAU,CAAC,CAAA;GAC1C,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}